CN107690799B - 一种数据同步的方法、装置、服务器及计算机可读存储介质 - Google Patents
一种数据同步的方法、装置、服务器及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107690799B CN107690799B CN201780000975.6A CN201780000975A CN107690799B CN 107690799 B CN107690799 B CN 107690799B CN 201780000975 A CN201780000975 A CN 201780000975A CN 107690799 B CN107690799 B CN 107690799B
- Authority
- CN
- China
- Prior art keywords
- motion capture
- terminal
- interpolation
- data
- location
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种数据同步的方法、装置及服务器,包括:与至少两个处于不同动作捕捉***下的终端建立通信连接,并接收连接成功的至少一个终端发送的动作捕捉数据;在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理;将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端,本方案通过将多个终端连接在同一服务器上,服务器每接收到一个终端发送的动作捕捉数据,就对所述动作捕捉数据预处理后发送给该终端之外的其它终端,即使多个终端的动作捕捉数据是通过不同的光学动作捕捉***获取的也不会影响数据通信和数据同步的问题。
Description
技术领域
本发明属于动作捕捉技术领域,尤其涉及一种数据同步的方法、装置及服务器。
背景技术
动作捕捉是实时地准确测量、记录物体在真实三维空间中的运动轨迹或姿态,并在虚拟三维空间中重建运动物体运动状态的技术,可以应用于动画制作、步态分析、人机工程等领域。例如,可应用于虚幻引擎技术,虚幻引擎的开发可以配套使用动作捕捉***,将连接在同一个动作捕捉***的多个客户端实现联机对接,即当使用客户端的用户在动作捕捉***下做出一系列动作时,其它客户端的用户通过共同连接的动作捕捉***也可以同步获取该客户端的动作捕捉数据。
但是,目前虚幻引擎技术提供的全平台对接服务都是基于同一个动作捕捉***,也就是只有连接在同一个动作捕捉***下的客户端才能实现数据通信以及数据同步,如果异地的用户、或者处于不同动作捕捉***下的用户是无法同步获取对方的动作捕捉数据的。
发明内容
鉴于此,本发明实施例提供了一种数据同步的方法、装置及服务器,以解决目前基于不同动作捕捉***的多个客户端的数据无法同步的问题。
本发明实施例的第一方面提供了一种数据同步的方法,包括:
与至少两个处于不同动作捕捉***下的终端建立通信连接,并接收连接成功的至少一个终端发送的动作捕捉数据;
在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理;
将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端。
本发明实施例的第二方面提供了一种数据同步的装置,包括:
数据获取模块,用于与至少两个处于不同动作捕捉***下的终端建立通信连接,并接收连接成功的至少一个终端发送的动作捕捉数据;
预处理模块,用于在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理;
数据发送模块,用于将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端。
本发明实施例的第三方面提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例第一方面提供的所述方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被一个或多个处理器执行时实现本发明实施例第一方面提供的所述方法的步骤。
本发明实施例与现有技术相比存在的有益效果是:
本发明实施例通过将至少两个处于不同动作捕捉***下的终端与服务器建立通信连接,当所述服务器与至少两个处于不同动作捕捉***下的终端成功建立通信连接后,就可以通过建立的通信连接接收终端发送的用户的动作捕捉数据,服务器每接收到一个终端发送的用户的动作捕捉数据,就会对所述动作捕捉数据进行预处理,然后将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端。这样即使多个终端是通过不同的光学动作捕捉***获取的用户的动作捕捉数据,那么任意一个终端也可以通过共同连接的服务器同步获取其它终端所在用户的动作捕捉数据,即连接在同一个服务器下的所有终端中有一个或者多个终端连接的动作捕捉***与其它终端连接的动作捕捉***处于不同区域(异地),那么多个终端也可以通过共同连接的服务器实现动作捕捉数据的通信和同步。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种数据同步的方法的实现流程示意图;
图2是本发明一实施例提供的数据同步***的架构图;
图3是本发明一实施例提供的一种数据同步的方法的实现流程示意图;
图4是本发明一实施例提供的数据同步方法的时序图;
图5是本发明一实施例提供的数据同步的装置的示意框图;
图6是本发明一实施例提供的服务器的示意框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
在介绍具体的实施例之前,我们先将本发明实施例的应用场景进行介绍,以虚幻引擎为例,虚幻引擎技术作为一个技术平台,可以通过动作捕捉***(例如光学动作捕捉***、惯性动作捕捉***、激光动作捕捉***等,后文以光学动作捕捉***为例进行说明)获取用户的动作捕捉数据,用户身上设置多个标记点,光学动作捕捉***中的多个相机采集标记点的位置,获取用户的动作捕捉数据。每个用户对应的终端(在表述用户时,也称终端所在的用户)都会连接一个光学动作捕捉***(即本地的光学动作捕捉***);由于多个用户可能处于不同的区域,或者说多个终端可能处于异地,那么用户所在的终端就会连接在不同的光学动作捕捉***下。假设应用于两个终端,那么这两个终端则处于不同的光学动作捕捉***下;假设应用于三个终端,那么这三个终端中至少有一个终端与其它的终端处于不同的动作捕捉***下;也可以理解为连接在服务器上的所有终端所连接的光学动作捕捉***至少有两个光学动作捕捉***。由于多个终端可能连接在不同的光学动作捕捉***下,所以多个终端所在用户的动作捕捉数据虽然由光学动作捕捉***生成,但是每个终端都无法获取连接在另一个光学动作捕捉***下的终端所在用户的动作捕捉数据。这时,我们可以将多个终端都连接在同一个服务器上,通过多个终端连接的服务器实现多个终端的数据通信以及数据同步。实际应用中,终端所在用户的动作捕捉数据都是通过光学动作捕捉***生成的,虽然处于不同动作捕捉***的终端无法通过动作捕捉***实现相互通信,但是可以通过共同连接的服务器实现终端之间的相互通信。即服务器在接收到某个终端所在用户的动作捕捉数据后,无需将接收到的该用户的数据再次返回该用户所在的终端,只需要将接收到的该用户的数据发送给该终端之外的其它终端即可。
图1是本发明一个实施例提供的数据同步的方法的实现流程示意图,如图所示该方法可以包括以下步骤:
步骤S101,与至少两个处于不同动作捕捉***下的终端建立通信连接,并接收连接成功的至少一个终端发送的动作捕捉数据。
在本发明实施例中,服务器可以与至少两个处于不同动作捕捉***下的终端建立通信连接,所述通信连接可以通过有线或者无线方式建立。当建立通信连接成功后,服务器就可以通过建立的通信连接获取这些终端发送的用户的动作捕捉数据,终端发送的用户的动作捕捉数据可以是通过该终端连接的动作捕捉***(例如光学动作捕捉***、惯性动作捕捉***、激光动作捕捉***等,后文以光学动作捕捉***为例进行说明)生成的。终端从光学动作捕捉***获取到用户的动作捕捉数据后可以直接发送给服务器,也可以在获取到用户的动作捕捉数据之后,选取预设时间间隔的动作捕捉数据发送给服务器,例如,将从动作捕捉***获取的数据按照1/5的频次间隔发送,即每接收到用户的5次动作捕捉数据之后,将第5次的动作捕捉数据发送至服务器。当然在实际应用中,终端还可以设置其它的方式发送用户的动作捕捉数据。所述动作捕捉数据包括刚体名称、刚体标识号和刚体数据。其中,所述刚体数据标识所述终端所在用户的位置信息、旋转信息。所述位置信息是用户身上的标记点的位置信息,所述旋转信息是用户身上的几个标记点的旋转信息,具体可以是三个标记点组成的整体的旋转信息,还可以是四个标记点组成的整体的旋转信息。
需要说明的是,所述刚体名称和刚体标识号可以选择其中一个发送,也可以全部发送,当然,在实际应用中,发送的动作捕捉数据还可以包括其它的数据信息,在此不做限制。
作为一个实施例,所述接收连接成功的至少一个终端发送的动作捕捉数据具体为:接收连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据。
在本发明实施例中,终端可以发送用户的预定时间间隔的动作捕捉数据,那么服务器就接收连接成功的所述终端发送的预定时间间隔的动作捕捉数据。终端从光学动作捕捉***获取的用户的动作捕捉数据实际上也可以是按照一定的频率获取的,那么终端可以每间隔预定时间就将最新获取的用户的动作捕捉数据发送给服务器。当然,在实际应用中,多个终端发送的用户的动作捕捉数据的频率可以相同也可以不同,即不同终端发送的用户的动作捕捉数据都可以有自己对应的时间间隔,并且同一终端发送的用户的动作捕捉数据也可以具有相同或不同的预设时间间隔,终端发送预定时间间隔的动作捕捉数据是为了减小终端与服务器之间通信连接的网络负载。
步骤S102,在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理。
在本发明实施例中,所述预处理可以是指对接收的动作捕捉数据进行消除噪声的处理,当然,还可以是其它对数据处理的方式。服务器与多个终端存在通信连接,多个终端也都在将对应用户的动作捕捉数据发送给服务器。服务器可能一次只接受到一个终端发送的用户的动作捕捉数据,也可能会同时接受到多个终端发送的用户的动作捕捉数据。但是服务器只要接受到任意一个或者多个终端发送的动作捕捉数据,就会对所述动作捕捉数据进行预处理,若服务器一次接收到多个终端发送的动作捕捉数据,服务器会根据动捕捕捉数据中的刚体名称或刚体标识号对终端进行识别,以将不同用户的动作捕捉数据分开进行预处理。服务器一直在接收终端发送的用户的动作捕捉数据,同时服务器也一直在对动作捕捉数据进行预处理。若某一个终端发送的是预定时间间隔的动作捕捉数据,那么如果服务器将该预定时间间隔的动作捕捉数据直接发送给该终端之外的其它终端,则其它终端接收到的动作捕捉数据可能会是不连贯的动作信息,在交互过程中则有可能出现卡顿现象。所以,在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,服务器对所述动作捕捉数据进行预处理的方式具体可以为:对连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据做滞后插值处理。所述滞后插值处理是将一个终端发送的预定时间间隔的用户的两次动作捕捉数据之间创建一些虚拟的动作捕捉数据信息,通过滞后插值处理使得所述用户的动作捕捉数据或者动作信息平滑连贯。
步骤S103,将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端。
在本发明实施例中,假如服务器成功连接了终端A、终端B、终端C、终端D,我们以图2为例说明连接在不同的光学动作捕捉***下的多个终端如何实现数据通信以及数据同步的,图2是本发明一个实施例的***架构图,通过图中可以看出,终端A和终端B连接在光学动作捕捉***1下,终端C和终端 D连接在光学工作捕捉***2下,每个终端从自己连接的光学动作捕捉***获取用户的动作捕捉数据,同时每个终端都会将从各自连接的光学动作捕捉***获取的用户的动作捕捉数据发送至服务器,而服务器发送给每个终端的动作捕捉数据是每个终端之外的终端对应的用户的动作捕捉数据。
具体的,当服务器接受到终端A发送的用户a的动作捕捉数据后,对所述动作捕捉数据进行预处理,并将预处理后的终端A的每一个动作捕捉数据发送给终端A之外的其它终端(终端B、终端C和终端D),如果服务器同时接收到了终端A和终端B发送的动作捕捉数据,则将终端A对应的用户a的动作捕捉数据单独进行预处理,同时将终端B对应的用户b的动作捕捉数据单独进行预处理。将预处理后的用户a的动作捕捉数据发送给用户a所在终端A之外的其它终端(终端B、终端C和终端D),将预处理后的用户b的动作捕捉数据发送给用户b对应的终端B之外的其它终端(终端A、终端C和终端D),用户a 的动作捕捉数据对应的终端是终端A,预处理后的用户a的动作捕捉数据对应的终端依然是终端A,用户b的动作捕捉数据对应的终端是终端B,预处理后的用户b的动作捕捉数据对应的终端依然是终端B,依次类推。需要说明,仅以以上内容作为示例,并不用于限制本发明。
本发明实施例通过将至少两个处于不同动作捕捉***下的终端与服务器建立通信连接,当所述服务器与至少两个处于不同动作捕捉***下的终端成功建立通信连接后,就可以通过建立的通信连接接收这些终端发送的用户的动作捕捉数据,服务器每接收到至少一个终端发送的用户的动作捕捉数据,就会对所述动作捕捉数据进行预处理,然后将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端。如果用户位于不同的地方,那么位于不同的地方的用户所在的终端连接的动作捕捉***也位于不同的地方,通过将异地的用户所在的终端分别连接同一个服务器,这样即使多个终端是通过异地的光学动作捕捉***获取的用户的动作捕捉数据,那么每个终端所在的用户也可以通过共同连接的服务器同步获取其它终端所在用户的动作捕捉数据,实现了异地动作捕捉数据的通信和同步。
图3是本发明又一个实施例提供的数据同步的方法的流程示意图,如图所示该方法可以包括以下步骤:
步骤S301,与至少两个处于不同动作捕捉***下的终端建立通信连接,接收连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据。
该步骤可参照图1中步骤S101中的描述,在此不再赘述。
如图1中步骤S102中的描述,在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理可以为:对连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据做滞后插值处理。那么对连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据做滞后差值处理可通过步骤S302和步骤S303实现。
步骤S302,在接收到连接成功的至少一个终端发送的用户最新的位置信息后,将所述用户最新的位置作为滞后插值处理的终点位置,将接收的所述用户上一次的位置作为滞后插值处理的起点位置。
步骤S303,根据所述起点位置、所述终点位置、获取的插值时间间隔和所述预定时间间隔模拟出插值位置。
在本发明实施例中,我们以连接在服务器上的终端A为例,假设,服务器接受到连接成功的至少一个终端发送的动作捕捉数据就是终端A发送的终端A 所在用户a的动作捕捉数据,那么在接收到用户a的动作捕捉数据后,如果接收到的动作捕捉数据是用户a第一个位置信息,则第一个位置信息上一次的位置信息为空,这时计算该用户a第一个位置信息发送到终端A之外的其它终端的时间,就是接收到的终端A的时间加上预设的时间间隔。服务器会继续接收连接在服务器上的终端发送的所述动作捕捉数据,第二次接收到的数据可能是终端A发送的,也可能是终端B发送,如果是终端B发送的,继续判断终端B 发送的动作捕捉数据是否是终端B所在用户b第一个位置信息,如果是用户b 第一个位置信息,第一个位置信息上一次位置信息为空,则计算该用户b第一个位置信息发送到终端B之外的其它终端的时间。服务器仍然继续接收连接在服务器上的终端发送的所述动作捕捉数据;假设第三次接收到的动作捕捉数据是终端A发送的用户a的第二个位置信息,则第二个位置信息就是终端A所在用户a最新的位置信息,也可以理解为用户a当前的位置,这时,需要对接收到的用户a的第一个位置和第二个位置之间作插值处理,下面,我们通过图4 举例说明如何在接收到的用户的两个位置之间做插值处理。为了描述方便,在图4中以服务器一侧接收到的用户a的位置顺序记录。
通过图4可以看出,终端A所在的用户一直在运动,当运动到第M个位置后,若第M个位置刚好是需要发送给服务器的用户的动作捕捉数据,则将第 M个位置信息发送给服务器,服务器接收到用户a的第M个位置就是用户a的最新位置,服务器会记录最新的位置信息,也就是第M个位置,那么服务器需要在上一次接收到的位置(第M-1个位置)和最新的位置(第M个位置)之间做插值处理,将用户a最新的位置信息(第M个位置)作为滞后插值处理的终点位置,将接收的用户a上一次的位置信息(第M-1个位置)作为滞后插值处理的起点位置。服务器在第M-1个位置和第M个位置之间做模拟插值处理的过程中,实际上用户a也一直在运动,位置也一直在变化,但是不断变化的位置信息并不会全部发送给服务器,而是等到了预定时间间隔,才会将最新的位置发送给服务器,这样做的目的是为了减小网络负载。
服务器为了使得其它终端接收到的用户a的运动信息或者位置信息比较流畅,所以需要在接收到的用户a的两个位置之间模拟出用户的运动信息,也就是模拟出插值位置。在模式插值过程中,需要和预定时间间隔关联起来,以保证运动信息的平滑性。即是说:要求用户运动到第M+1个位置时,刚好也是要发送给服务器的位置信息,则终端A将第M+1个位置发送给服务器,服务器在接收到第M+1个位置的同时,模拟的用户的运动信息也刚好到达第M个位置,所以服务器将用户第M个位置发送给终端A之外的其它终端的时间是接收到的第M个位置的时间加上预设时间间隔,而接收到的第M个位置的时间刚好是第M-1个位置发送给其它终端的时间,所以服务器将用户第M个位置发送给终端A之外的其它终端的时间是第M-1个位置发送给其它终端的时间加上预定时间间隔。服务器在接收到最新的位置信息之后,记录当前接收到的用户a的最新的位置,也就是第M+1个位置,并将上一次接收到的位置即第M 个位置作为起点,第M+1个位置作为终点,继续在第M个位置和第M+1个位置之间模拟插值位置,一直循环处理。
当然,在实际应用中,还可能会同时接收到多个终端的动作捕捉数据信息,只需要根据动作捕捉数据信息对应的终端、用户、动作捕捉数据中的刚体名称或者动作捕捉数据中的刚体标识号分开做滞后插值处理即可。
例如,服务器可以根据起点位置、终点位置、获取的插值时间间隔和预定时间间隔,按照如下公式模拟出插值位置:
xn=xn-1+(XM,M-1×Tn-1,n)/T0
yn=yn-1+(YM,M-1×Tn-1,n)/T0
zn=zn-1+(ZM,M-1×Tn-1,n)/T0
其中,(xn,yn,zn)表示第n个插值位置在三维坐标系下的坐标, n=1,2,3,……;当n=1时,(x0,y0,z0)表示起点位置坐标;(XM,M-1,YM,M-1, ZM,M-1)表示接收的用户的第M-1个位置到第M个位置的向量,所述第M个位置为终点位置,则所述第M-1个位置为起点位置,M=2,3,4,……;Tn-1,n表示从第n-1个插值位置到第n个插值位置的插值时间间隔,T0表示预定时间间隔,即起点位置与终点位置之间的时间差。
在本发明实施例中,Tn-1,n表示从第n-1个插值位置到第n个插值位置的插值时间间隔,即从第n-1个插值位置到第n个插值位置所需的时间。T0,1表示从起点位置到第一个插值位置的插值时间间隔,即从起点位置到第一个插值位置所需的时间,T1,2表示从第一个位置到第二个插值位置的插值时间间隔,即从第一个位置到第二个插值位置所需的时间,T2,3表示从第二个插值位置到第三个插值位置的插值时间间隔,即从第二个插值位置到第三个插值位置所需的时间。 T0,1、T1,2、T2,3可以经过计算获得,也可以提前进行设置,可以设置相同也可以设置不同。需要说明的一点是,所述第M个位置表示的是接收到的终端发送的用户的第M个位置。所述第n个插值位置表示的是在接收到的终端发送的用户的两次位置之间***的第n个插值位置。即M是服务器从终端接收到的位置的表征,n是服务器做插值处理时***的位置的表征。
如果将插值时间间隔设置为相同,即将起点位置到第一个插值位置、插值位置之间、最后一个插值位置到终点位置的时间间隔和位置间隔都设置成均分,即所述Tn-1,n=T0/(N+1),N表示预设的插值位置总个数。
例如,可以在确定的起点位置和终点位置之间模拟插值位置,例如,假设预定时间间隔是100ms,起点位置坐标为(0,0,0),终点位置坐标为(0,0,6),我们在起点位置和终点位置之间准备***3个插值位置,我们可以预先设置好插值的规则,例如,平均插值,也就是三个插值位置均分,三个插值位置均分相当于将起点和终点之间均分为4段,每个插值位置就是(0,0,1.5),(0,0,3), (0,0,4.5),起点位置、插值位置、终点位置组成的用户的位置信息就是(0,0,0), (0,0,1.5),(0,0,3),(0,0,4.5),(0,0,6),时间间隔也是均分,那么从起点位置到终点位置之间任意两个位置间隔的时间就是25ms。当然,在实际应用中,还可以设置其它的插值规则,以上仅用于举例,并不用于限制本发明。
步骤S304,将模拟出的插值位置作为所述用户的位置信息发送至所述用户所在终端之外的其它连接成功的终端。
在本发明实施例中,所述插值位置实际就是模拟的用户的位置信息,是为了使得其它终端获得的所述用户的动作更平滑。每模拟出一个插值位置,就相应的将一个插值位置发送出去,如果插值位置是模拟的用户a的位置信息,则将所述插值位置作为用户a的位置信息发送给用户a所在终端之外的其它连接成功的终端。
步骤S305,在将所述起点位置和所述终点位置之间的所有插值位置发送之后,根据所述终点位置的发送时间将所述终点位置发送至与所述终点位置对应的终端之外的其它连接成功的终端。
在本发明实施例中,将在起点位置和终点位置之间模拟的最后一个插值位置发送之后,用户的下一个位置信息就应该是模拟所述插值位置时的终点位置,所以,在将所述起点位置和所述终点位置之间所有的插值位置发送以后,就可以根据终点位置的发送时间将所述终点位置发送至与所述终点位置对应的终端之外的其它连接成功的终端。由于模拟的插值位置是按照一定的顺序发送的,所以也可以在将所述起点位置和所述终点位置之间的最后一个插值位置发送之后,根据所述终点位置的发送时间将所述终点位置发送出去。根据图4已经得出服务器将用户第M个位置发送给终端A之外的其它终端的时间是接收到的第M个位置的时间加上预设时间间隔,而接收到的第M个位置的时间刚好是第M-1个位置发送给其它终端的时间,所以服务器将用户第M个位置发送给终端A之外的其它终端的时间是第M-1个位置发送给其它终端的时间加上预定时间间隔。所以,如果以起点位置和终点位置作为表述,就是所述终点位置的发送时间是所述起点位置的发送时间加上预定时间间隔,或者所述终点位置的发送时间是所述终点位置的接收时间加上预定时间间隔。
需要说明的是,以上仅仅是对动作捕捉数据中的位置信息进行滞后插值处理的过程,在实际应用中,还可以将旋转信息也做滞后插值处理,可参照位置信息的滞后插值处理,在此不再详述。
在本发明实施例中,实际上,连接在服务器上的多个终端都在不停的将各自所在用户的动作捕捉数据发送至服务器,服务器每接收到一个终端发送的用户的最新动作捕捉数据之后,就根据该用户的最新位置信息重复执行步骤S302 至S305,当连接的终端数据个数比较多时,可以将每个用户的动作捕捉数据的插值过程分配多个处理器处理,这样即使服务器同一时间接收到多个终端发送的用户的动作捕捉数据,也可以马上分配到不同的处理器进行插值处理,使得服务器能够更及时的预处理出每个用户的插值位置,当然,也可以根据接收的动作捕捉数据的时间顺序对所述刚体数据进行预处理,若是同一时间接收到至少一个终端发送的动作捕捉数据,则可以预先设置优先级别,按照优先级别顺序预处理同一时间接收到的动作捕捉数据。
本发明实施例是具体细化了服务器如何将预定时间间隔的动作捕捉数据中的位置信息做滞后插值处理,通过滞后插值处理使得每一个终端获得的其它终端所在用户的动作信息更平滑,这样不仅能够减小终端与服务器之间通信的带宽负载还能够使得每个终端获得的其它终端用户的动作信息更平滑。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图5是本发明一实施例提供的数据同步的装置的示意框图,为了便于说明,仅示出与本发明实施例相关的部分。
该数据同步的装置5可以是内置于服务器(例如伺服机、可用于作为服务器的终端设备)内的软件单元、硬件单元或者软硬结合的单元,也可以作为独立的挂件集成到所述服务器中。该服务器还可以是虚幻引擎的服务器。
所述数据同步的装置5包括:
数据获取模块51,用于与至少两个处于不同动作捕捉***下的终端建立通信连接,并接收连接成功的至少一个终端发送的动作捕捉数据;
预处理模块52,用于在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理;
数据发送模块53,用于将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端。
可选的,所述数据获取模块51具体用于:
接收连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据;
所述预处理模块52具体用于:
对连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据做滞后插值处理。
可选的,所述刚体数据包括所述终端所在用户的位置信息。
可选的,所述预处理模块52包括:
端点位置确定单元521,用于在接收到连接成功的至少一个终端发送的用户最新的位置信息后,将所述用户最新的位置作为滞后插值处理的终点位置,将接收的所述用户上一次的位置作为滞后插值处理的起点位置;
插值位置模拟单元522,用于根据所述起点位置、所述终点位置、获取的插值时间间隔和预设的时间间隔模拟出插值位置;
所述数据发送模块53用于:
将模拟出的插值位置作为所述用户的位置信息发送至与所述用户所在终端之外的其它连接成功的终端;
可选的,所述插值位置模拟单元522具体用于,根据公式:
xn=xn-1+(XM,M-1×Tn-1,n)/T0
yn=yn-1+(YM,M-1×Tn-1,n)/T0
zn=zn-1+(ZM,M-1×Tn-1,n)/T0模拟出插值位置;
其中,(xn,yn,zn)表示第n个插值位置在三维坐标系下的坐标, n=1,2,3,……;当n=1时,(x0,y0,z0)表示起点位置坐标;(XM,M-1,YM,M-1, ZM,M-1)表示接收的用户的第M-1个位置到第M个位置的向量,且所述第M个位置为终点位置,所述第M-1个位置为起点位置,M=2,3,4,……;Tn-1,n表示从第n-1个插值位置到第n个插值位置的插值时间间隔,T0表示预定时间间隔。
可选的,任意两个相邻的插值位置之间的插值时间间隔相等。
可选的,所述终点位置的发送时间是所述起点位置的发送时间加上预定时间间隔。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述数据同步的装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图6是本发明一实施例提供的服务器的示意框图。如图6所示,该实施例的服务器6包括:一个或多个处理器60、存储器61以及存储在所述存储器61 中并可在所述处理器60上运行的计算机程序62。所述处理器60执行所述计算机程序62时实现上述各个数据同步的方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,所述处理器60执行所述计算机程序62时实现上述终端设备实施例中各模块/单元的功能,例如图5所示模块51至53的功能。
示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述终端设备6中的执行过程。例如,所述计算机程序62可以被分割成刚体数据获取模块、预处理模块、数据发送模块。
所述数据获取模块,用于与至少两个处于不同动作捕捉***下的终端建立通信连接,并接收连接成功的至少一个终端发送的动作捕捉数据;
所述预处理模块,用于在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理;
所述数据发送模块,用于将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端。
其它模块或者单元具体参照图5中各个模块或单元的描述,在此不再详述。
所述服务器包括但不仅限于处理器60、存储器61。本领域技术人员可以理解,图6仅仅是服务器6的一个示例,并不构成对服务器6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器还可以包括输入设备、输出设备、网络接入设备、总线等。
所述处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61可以是所述服务器6的内部存储单元,例如服务器6的硬盘或内存。所述存储器61也可以是所述服务器6的外部存储设备,例如所述服务器6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字 (Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61 还可以既包括所述服务器4的内部存储单元也包括外部存储设备。所述存储器 61用于存储所述计算机程序以及所述服务器所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的服务器、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置/服务器实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (13)
1.一种数据同步的方法,其特征在于,包括:
与至少两个处于不同动作捕捉***下的终端建立通信连接,并接收连接成功的至少一个终端发送的动作捕捉数据;
在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理;
将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端;
所述接收连接成功的至少一个终端发送的动作捕捉数据具体为:
接收连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据;
所述对所述动作捕捉数据进行预处理具体为:
对连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据做滞后插值处理。
2.如权利要求1所述的数据同步的方法,其特征在于,所述动作捕捉数据包括所述终端所在用户的位置信息。
3.如权利要求2所述的数据同步的方法,其特征在于,所述对连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据做滞后插值处理包括:
在接收到连接成功的至少一个终端发送的用户最新的位置信息后,将所述用户最新的位置作为滞后插值处理的终点位置,将接收的所述用户上一次的位置作为滞后插值处理的起点位置;
根据所述起点位置、所述终点位置、获取的插值时间间隔和所述预定时间间隔模拟出插值位置;
所述将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端包括:
将模拟出的插值位置作为所述用户的位置信息发送至所述用户所在终端之外的其它连接成功的终端。
4.如权利要求3所述的数据同步的方法,其特征在于,所述根据所述起点位置、所述终点位置、获取的插值时间间隔和所述预定时间间隔模拟出插值位置,具体包括:根据公式:
xn=xn-1+(XM,M-1×Tn-1,n)/T0
yn=yn-1+(YM,M-1×Tn-1,n)/T0
zn=zn-1+(ZM,M-1×Tn-1,n)/T0模拟出插值位置;
其中,(xn,yn,zn)表示第n个插值位置在三维坐标系下的坐标,n=1,2,3,……;当n=1时,(x0,y0,z0)表示起点位置坐标;(XM,M-1,YM,M-1,ZM,M-1)表示接收的用户的第M-1个位置到第M个位置的向量,且所述第M个位置为终点位置,所述第M-1个位置为起点位置,M=2,3,4,……;Tn-1,n表示从第n-1个插值位置到第n个插值位置的插值时间间隔,T0表示预定时间间隔。
5.如权利要求4所述的数据同步的方法,其特征在于,任意两个相邻的插值位置之间的插值时间间隔相等。
6.如权利要求3所述的数据同步的方法,其特征在于,所述终点位置的发送时间是所述起点位置的发送时间加上所述预定时间间隔。
7.一种数据同步的装置,其特征在于,包括:
数据获取模块,用于与至少两个处于不同动作捕捉***下的终端建立通信连接,并接收连接成功的至少一个终端发送的动作捕捉数据;
预处理模块,用于在接收到连接成功的至少一个终端发送的所述动作捕捉数据后,对所述动作捕捉数据进行预处理;
数据发送模块,用于将预处理后的每一个动作捕捉数据发送至所述每一个动作捕捉数据对应的终端之外的其它连接成功的终端;
所述数据获取模块具体用于:
接收连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据;
所述预处理模块具体用于:
对连接成功的至少一个终端发送的预定时间间隔的动作捕捉数据做滞后插值处理。
8.如权利要求7所述的数据同步的装置,其特征在于,所述动作捕捉数据包括所述终端所在用户的位置信息。
9.如权利要求8所述的数据同步的装置,其特征在于,所述预处理模块包括:
端点位置确定单元,用于在接收到连接成功的至少一个终端发送的用户最新的位置信息后,将所述用户最新的位置作为滞后插值处理的终点位置,将接收的所述用户上一次的位置作为滞后插值处理的起点位置;
插值位置模拟单元,用于根据所述起点位置、所述终点位置、获取的插值时间间隔和所述预定时间间隔模拟出插值位置;
所述数据发送模块,用于将模拟出的插值位置作为所述用户的位置信息发送至所述用户所在终端之外的其它连接成功的终端。
10.如权利要求9所述的数据同步的装置,其特征在于,所述插值位置模拟单元具体用于:根据公式:
xn=xn-1+(XM,M-1×Tn-1,n)/T0
yn=yn-1+(YM,M-1×Tn-1,n)/T0
zn=zn-1+(ZM,M-1×Tn-1,n)/T0模拟出插值位置;
其中,(xn,yn,zn)表示第n个插值位置在三维坐标系下的坐标,n=1,2,3,……;当n=1时,(x0,y0,z0)表示起点位置坐标;(XM,M-1,YM,M-1,ZM,M-1)表示接收的用户的第M-1个位置到第M个位置的向量,且所述第M个位置为终点位置,所述第M-1个位置为起点位置,M=2,3,4,……;Tn-1,n表示从第n-1个插值位置到第n个插值位置的插值时间间隔,T0表示预定时间间隔。
11.如权利要求10所述的数据同步的装置,其特征在于,任意两个相邻的插值位置之间的插值时间间隔相等。
12.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述方法的步骤。
13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述方法的步骤。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/099010 WO2019037073A1 (zh) | 2017-08-25 | 2017-08-25 | 一种数据同步的方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107690799A CN107690799A (zh) | 2018-02-13 |
CN107690799B true CN107690799B (zh) | 2019-03-22 |
Family
ID=61154042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780000975.6A Active CN107690799B (zh) | 2017-08-25 | 2017-08-25 | 一种数据同步的方法、装置、服务器及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107690799B (zh) |
WO (1) | WO2019037073A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112702611A (zh) * | 2019-10-22 | 2021-04-23 | 上海华为技术有限公司 | 一种播放方法以及播放*** |
CN110851130B (zh) * | 2019-11-14 | 2023-09-01 | 珠海金山数字网络科技有限公司 | 一种数据处理的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404321A (zh) * | 2011-11-16 | 2012-04-04 | 广东汇卡商务服务有限公司 | 一种多终端信息同步***以及方法 |
CN104579914A (zh) * | 2013-10-17 | 2015-04-29 | 中兴通讯股份有限公司 | 一种***之间订阅状态的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9039527B2 (en) * | 2010-08-26 | 2015-05-26 | Blast Motion Inc. | Broadcasting method for broadcasting images with augmented motion data |
-
2017
- 2017-08-25 WO PCT/CN2017/099010 patent/WO2019037073A1/zh active Application Filing
- 2017-08-25 CN CN201780000975.6A patent/CN107690799B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404321A (zh) * | 2011-11-16 | 2012-04-04 | 广东汇卡商务服务有限公司 | 一种多终端信息同步***以及方法 |
CN104579914A (zh) * | 2013-10-17 | 2015-04-29 | 中兴通讯股份有限公司 | 一种***之间订阅状态的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107690799A (zh) | 2018-02-13 |
WO2019037073A1 (zh) | 2019-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109191514A (zh) | 用于生成深度检测模型的方法和装置 | |
CN109313484A (zh) | 虚拟现实交互***、方法及计算机存储介质 | |
CN109146490A (zh) | 区块生成方法、装置和*** | |
CN108776917A (zh) | 一种虚拟三维空间的同步处理方法及装置 | |
CN108880983B (zh) | 一种虚拟三维空间的语音实时处理方法及装置 | |
CN107690799B (zh) | 一种数据同步的方法、装置、服务器及计算机可读存储介质 | |
CN108510454A (zh) | 用于生成深度图像的方法和装置 | |
CN108668050A (zh) | 基于虚拟现实的视频拍摄方法和装置 | |
CN108648226B (zh) | 用于生成信息的方法和装置 | |
CN109041012A (zh) | 基于综合通信与计算能力的基站选择方法和*** | |
CN108765084A (zh) | 一种虚拟三维空间的同步处理方法及装置 | |
CN110339571A (zh) | 事件生成方法和装置、存储介质以及电子装置 | |
CN110348109A (zh) | 三维仿真培训数据处理的方法及终端设备 | |
CN110472558A (zh) | 图像处理方法和装置 | |
CN114360018B (zh) | 三维人脸表情的渲染方法及装置、存储介质及电子装置 | |
CN109948632A (zh) | 数据训练方法、装置及***、计算机设备 | |
CN115775310A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN109598344A (zh) | 模型生成方法和装置 | |
CN109829520A (zh) | 图像处理方法和装置 | |
CN109224451A (zh) | 基于区块链子链的游戏开发方法、设备以及存储介质 | |
CN105357243B (zh) | 一种与物联网设备远程交互的方法和装置 | |
CN110276403B (zh) | 模型建立方法和装置 | |
CN110381374B (zh) | 图像处理方法和装置 | |
CN105824608B (zh) | 处理对象的处理、插件生成方法及装置 | |
CN114529649A (zh) | 图像处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |