CN110022363A - 虚拟对象的运动状态修正方法、装置、设备及存储介质 - Google Patents

虚拟对象的运动状态修正方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110022363A
CN110022363A CN201910267938.2A CN201910267938A CN110022363A CN 110022363 A CN110022363 A CN 110022363A CN 201910267938 A CN201910267938 A CN 201910267938A CN 110022363 A CN110022363 A CN 110022363A
Authority
CN
China
Prior art keywords
virtual objects
image frame
terminal
motion state
virtual
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.)
Granted
Application number
CN201910267938.2A
Other languages
English (en)
Other versions
CN110022363B (zh
Inventor
管雅君
方煜宽
蔡洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910267938.2A priority Critical patent/CN110022363B/zh
Publication of CN110022363A publication Critical patent/CN110022363A/zh
Application granted granted Critical
Publication of CN110022363B publication Critical patent/CN110022363B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请是关于一种虚拟对象的运动状态修正方法、装置、计算机设备及存储介质,涉及虚拟场景技术领域。该方法包括:接收第二终端发送的同步数据包,根据第一时延以及同步数据包获取虚拟对象在之后的连续N个画面帧中的目标运动状态;获取虚拟对象在N个画面帧中的初始运动状态;根据虚拟对象在N个画面帧中的距离信息,对虚拟对象在N个画面帧中的初始运动状态进行修正,获得虚拟对象在N个画面帧中的实际运动状态。在接收到同步数据包之后,终端根据虚拟对象在之后的多个画面帧中的目标位置和初始位置之间的距离,对其它终端控制的虚拟对象的运动轨迹逐帧进行修正,使得虚拟对象的修正后的移动轨迹更加平滑,从而提高虚拟对象的网络同步效果。

Description

虚拟对象的运动状态修正方法、装置、设备及存储介质
技术领域
本申请涉及虚拟场景技术领域,特别涉及一种虚拟对象的运动状态修正方法、装置、设备及存储介质。
背景技术
网络同步是指将一个终端控制的虚拟对象的运动状态通过网络同步给另一个终端,使得另一终端能够对该虚拟对象展示相同的动作效果。
在相关技术中,两个或者两个以上终端之间可以通过插值方法进行网络同步,以达到虚拟对象运动连贯的效果。比如,控制一个虚拟对象的终端A向终端B发送同步数据包,该同步数据包中包含终端A侧的虚拟对象的位置等状态信息,终端B根据终端A发送的同步数据包更新虚拟对象在终端B中的“影子”,并在下一次接收到终端A发送的同步数据包之前,控制虚拟对象逐帧向其“影子”接近。
然而,在上述相关技术中,“影子”的状态两次更新之间,虚拟对象追赶“影子”的过程更趋近于直线运动,从而导致网络同步过程中终端B一侧展示的虚拟对象的运动平滑性较差,影响网络同步的效果。
发明内容
本申请实施例提供了一种虚拟对象的运动状态修正方法、装置、设备及存储介质,可以用于解决网络同步过程中虚拟对象的运动平滑性较差的问题,提高网络同步的效果,技术方案如下:
一方面,提供了一种虚拟对象的运动状态修正方法,所述方法由第一终端执行,所述方法包括:
接收第二终端发送的同步数据包,所述第二终端是控制虚拟场景中的虚拟对象的终端,所述同步数据包中包含所述虚拟对象在所述第二终端侧的运动状态和操作信息,所述操作信息用于指示接收到的控制操作;
根据第一时延以及所述同步数据包获取所述虚拟对象在接收到所述同步数据包之后的连续N个画面帧中的目标运动状态,所述目标运动状态包括目标位置,所述第一时延是所述同步数据包从所述第一终端到达所述第二终端的时延;N为大于或者等于2的整数;
获取所述虚拟对象在所述N个画面帧中的初始运动状态,所述初始运动状态包括初始位置;
根据所述虚拟对象在所述N个画面帧中的距离信息,对所述虚拟对象在所述N个画面帧中的初始运动状态进行修正,获得所述虚拟对象在所述N个画面帧中的实际运动状态,所述距离信息包括所述虚拟对象在对应的画面帧中的初始位置和目标位置之间的距离。
一方面,提供了一种虚拟对象的运动状态修正装置,所述装置用于第一终端中,所述装置包括:
数据包接收模块,用于接收第二终端发送的同步数据包,所述第二终端是控制虚拟场景中的虚拟对象的终端,所述同步数据包中包含所述虚拟对象在所述第二终端侧的运动状态和操作信息,所述操作信息用于指示接收到的控制操作;
目标状态获取模块,用于根据第一时延以及所述同步数据包获取所述虚拟对象在接收到所述同步数据包之后的连续N个画面帧中的目标运动状态,所述目标运动状态包括目标位置,所述第一时延是所述同步数据包从所述第一终端到达所述第二终端的时延;N为大于或者等于2的整数;
初始状态获取模块,用于获取所述虚拟对象在所述N个画面帧中的初始运动状态,所述初始运动状态包括初始位置;
修正模块,用于根据所述虚拟对象在所述N个画面帧中的距离信息,对所述虚拟对象在所述N个画面帧中的初始运动状态进行修正,获得所述虚拟对象在所述N个画面帧中的实际运动状态,所述距离信息包括所述虚拟对象在对应的画面帧中的初始位置和目标位置之间的距离。
可选的,所述目标运动状态还包括目标矢量速度,所述初始运动状态包括初始矢量速度;
所述修正模块,用于根据所述虚拟对象在第二画面帧中的初始矢量速度、所述操作信息以及所述虚拟对象在所述第二画面帧中的目标矢量速度进行插值计算,获得所述虚拟对象在所述第二画面帧中的插值矢量速度;所述第二画面帧是所述N个画面帧中的任一画面帧;
根据所述虚拟对象在所述第二画面帧中的距离信息对所述插值矢量速度进行修正,获得所述虚拟对象在所述第二画面帧中的实际矢量速度;
根据所述虚拟对象在所述第二画面帧中的初始位置以及所述虚拟对象在所述第二画面帧中的实际矢量速度,获取所述虚拟对象在所述第二画面帧中的实际位置。
可选的,所述初始状态获取模块,用于将所述虚拟对象在所述第二画面帧的前一画面帧中的实际运动状态,获取为所述虚拟对象在所述第二画面帧中的初始运动状态。
可选的,在根据所述虚拟对象在所述第二画面帧中的距离信息对所述插值矢量速度进行修正,获得所述虚拟对象在所述第二画面帧中的实际矢量速度时,所述修正模块,用于,
根据所述虚拟对象在第二画面帧中的距离信息获取速度增益,所述速度增益的数值与所述距离信息包含的距离数值成正相关;
根据所述插值矢量速度与所述速度增益,获取所述虚拟对象在所述第二画面帧中的实际矢量速度。
可选的,在根据所述虚拟对象在所述第二画面帧中的初始位置以及所述虚拟对象在所述第二画面帧中的实际矢量速度,获取所述虚拟对象在所述第二画面帧中的实际位置时,所述修正模块,用于,
将从所述虚拟对象在所述第二画面帧中的初始位置开始,按照所述虚拟对象在所述第二画面帧中的实际矢量速度移动帧间隔时长之后的位置获取为所述虚拟对象在所述第二画面帧中的实际位置;所述帧间隔时长是相邻两个画面帧之间的时长。
可选的,所述目标状态获取模块,用于,
根据所述第一时延获取迭代时间间隔和计算次数M,M为大于或者等于1的整数;
根据所述虚拟对象在所述第二终端侧的运动状态和所述操作信息,按照所述迭代时间间隔进行M次计算迭代计算,获得所述虚拟对象在第三画面帧中的目标运动状态;所述第三画面帧是所述N个画面帧中的第一个画面帧;
根据所述操作信息以及所述虚拟对象在第三画面帧中的目标运动状态,获取所述虚拟对象在所述第三画面帧之后的N-1个画面帧中的目标运动状态。
可选的,在根据所述第一时延获取迭代时间间隔和计算次数M时,所述目标状态获取模块,用于,
根据所述第一时延获取所述迭代时间间隔,所述迭代时间间隔与所述第一时延指示的时长成正相关;
根据所述第一时延与所述迭代时间间隔,获取所述计算次数M。
可选的,在根据所述第一时延获取所述迭代时间间隔时,所述目标状态获取模块,用于,
当所述第一时延指示的时长不大于时长阈值时,将第一时间间隔获取为所述迭代时间间隔;
当所述第一时延指示的时长大于所述时长阈值时,将第二时间间隔获取为所述迭代时间间隔;所述第一时间间隔小于所述第二时间间隔。
可选的,所述实际运动状态包括实际位置,所述装置还包括:
展示模块,用于若在第四画面帧中所述虚拟对象在所述虚拟场景中未发生碰撞,则在第五画面帧的展示时刻,根据所述虚拟对象在所述第五画面帧中的实际位置展示所述第五画面帧;
其中,所述第四画面帧是所述N个画面帧中除了最后一个画面帧之外的其它任一画面帧,所述第五画面帧是所述第四画面帧的下一画面帧。
可选的,所述装置还包括:
碰撞状态获取模块,用于若在第四画面帧中所述虚拟对象在所述虚拟场景中发生碰撞,则获取所述虚拟对象在所述第四画面帧中发生碰撞后的运动状态;
第一实际状态获取模块,用于根据所述虚拟对象在所述第四画面帧中发生碰撞后的运动状态,获取所述虚拟对象在预设时间段内的各个画面帧中的实际运动状态,所述预设时间段是所述第四画面帧展示之后的预设时间长度时间段。
可选的,所述装置还包括:
第一实际状态获取模块,用于若在所述预设时间段内接收到所述第二终端发送的新的同步数据包,且所述新的同步数据包是所述虚拟对象在所述第二终端侧发生碰撞触发的同步数据包,则根据第二时延以及所述新的同步数据包获取所述虚拟对象在连续N’个画面帧中的实际运动状态;
其中,所述连续N’个画面帧是在接收到所述新的同步数据包之后,且在所述预设时间段之外的N’画面帧,N’为大于或者等于1的整数。
可选的,所述装置还包括:
丢弃模块,用于若在所述预设时间段内接收到所述第二终端发送的新的同步数据包,且所述新的同步数据包不是所述虚拟对象在所述第二终端侧发生碰撞触发的同步数据包,则丢弃所述新的同步数据包。
另一方面,提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述虚拟对象的运动状态修正方法。
又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述虚拟对象的运动状态修正方法。
本申请通过在接收到另一终端控制的虚拟对象的同步数据包之后,为该虚拟终端在后续的N个画面帧中分别预测出一个目标运动状态,并根据虚拟对象在各个画面帧中的目标位置和初始位置之间的距离,对N个画面帧中分别计算实际运动状态,也就说,在接收到同步数据包之后,终端根据虚拟对象在之后的多个画面帧中的目标位置和初始位置之间的距离,对其它终端控制的虚拟对象的运动轨迹逐帧进行修正,且每帧修正的目标状态都不相同,使得虚拟对象的修正后的移动轨迹更加平滑,从而提高虚拟对象的网络同步效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请一个示例性的实施例提供的终端的结构示意图;
图2是本申请一个示例性实施例提供的虚拟场景的显示界面示意图;
图3是本申请一个示例性实施例提供的虚拟对象的运动状态修正流程的示意图;
图4是图3所示实施例涉及的实施例涉及的虚拟车同步示意图;
图5是图3所示实施例涉及的实施例涉及的网络同步过程示意图;
图6是本申请一个示例性的实施例提供的虚拟对象的运动状态修正方法的方法流程图;
图7是图6所示实施例涉及的修正原理示意图;
图8是图6所示实施例涉及的虚拟对象的网络同步流程示意图;
图9是图6所示实施例涉及的碰撞处理过程的流程图;
图10至12示出了本申请涉及的应用场景界面图;
图13是本申请一示例性实施例提供的虚拟对象的运动状态修正装置的结构方框图;
图14是本申请一示例性实施例提供的计算机设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
虚拟场景:是应用程序在终端上运行时显示(或提供)的虚拟的场景。该虚拟场景可以是对真实世界的仿真环境场景,也可以是半仿真半虚构的三维环境场景,还可以是纯虚构的三维环境场景。虚拟场景可以是二维虚拟场景、2.5维虚拟场景和三维虚拟场景中的任意一种,下述实施例以虚拟场景是三维虚拟场景来举例说明,但对此不加以限定。可选地,该虚拟场景还可用于至少两个虚拟对象之间的虚拟场景竞技(比如竞速或对战等)。
虚拟对象:是指在虚拟场景中的可活动对象。该可活动对象可以是虚拟载具、虚拟人物、虚拟动物中的至少一种。可选地,每个虚拟对象在三维虚拟场景中具有自身的形状、体积以及朝向,并占据三维虚拟场景中的一部分空间。
虚拟场景通常由终端等计算机设备中的应用程序生成基于终端中的硬件(比如屏幕)进行展示。该终端可以是智能手机、平板电脑或者电子书阅读器等移动终端;或者,该终端也可以是笔记本电脑或者固定式计算机的个人计算机设备。
画面帧:在本申请实施例中,画面帧是指虚拟场景的场景画面帧。
请参考图1,其示出了本申请一个示例性的实施例提供的终端的结构示意图。如图1所示,该终端包括主板110、外部输出/输入设备120、存储器130、外部接口140、触控系统150以及电源160。
其中,主板110中集成有处理器和控制器等处理元件。
外部输出/输入设备120可以包括显示组件(比如显示屏)、声音播放组件(比如扬声器)、声音采集组件(比如麦克风)以及各类按键等。
存储器130中存储有程序代码和数据。
外部接口140可以包括耳机接口、充电接口以及数据接口等。
触控系统150可以集成在外部输出/输入设备120的显示组件或者按键中,触控系统150用于检测用户在显示组件或者按键上执行的触控操作。
电源160用于对终端中的其它各个部件进行供电。
在本申请实施例中,主板110中的处理器可以通过执行或者调用存储器中存储的程序代码和数据生成虚拟场景,并将生成的虚拟场景通过外部输出/输入设备120进行展示。在展示虚拟场景的过程中,可以通过电容触控系统150检测用户与虚拟场景进行交互时执行的触控操作。
其中,虚拟场景可以是三维虚拟场景,或者,虚拟场景也可以是二维虚拟场景。以虚拟场景是三维虚拟场景为例,请参考图2,其示出了本申请一个示例性的实施例提供的虚拟场景的显示界面示意图。如图2所示,虚拟场景的显示界面包含场景画面200,该场景画面200中包括主虚拟对象210、三维虚拟场景的环境画面220、以及网络虚拟对象240。其中,该主虚拟对象210可以是终端对应用户的当前虚拟对象;或者,该主虚拟对象210也可以是终端对应用户的当前虚拟对象所在的虚拟载具,比如,当终端对应用户的当前虚拟对象是虚拟人物时,该主虚拟对象210是该虚拟人物乘坐的虚拟载具。上述网络虚拟对象240可以是其它终端对应用户控制的虚拟对象。
在图2中,主虚拟对象210与网络虚拟对象240是在三维虚拟场景中的三维模型,在场景画面200中显示的三维虚拟场景的环境画面为主虚拟对象210的视角所观察到的物体,示例性的,如图2所示,在主虚拟对象210的视角观察下,显示的三维虚拟场景的环境画面220为大地224、天空225、地平线223、小山221以及厂房222。
主虚拟对象210可以在用户的控制下即时移动。比如,终端的屏幕支持触控操作,且虚拟场景的场景画面200中包含虚拟控件,则用户触控该虚拟控件时,主虚拟对象210可以在虚拟场景移动。同时,终端还定期或者不定期的将主虚拟对象210的运动状态以及操作信息打包为同步数据包并发送给服务器,由服务器发送给虚拟场景中的其它虚拟对象对应的终端。相应的,终端还接收其它终端发送的,其它虚拟对象(即网络虚拟对象)的同步数据包,并根据其它虚拟对象的同步数据包进行网络同步,以在本端展示其它终端的运动效果,该过程即为网络同步过程。
在一个示例性的方案中,第一终端接收到由第二终端发送的同步数据包时,根据该同步数据包预测后续某一个时间点上,由第二终端控制的虚拟对象在第二终端侧的运动状态(即“影子”的运动状态),并通过插值方式确定虚拟对象从当前时刻到“影子”的运动状态对应的时间点之间的多个画面帧中的实际运动状态。由于“影子”的相邻两个运动状态之间涉及到多个画面帧,也就是说,需要通过“影子”的单个运动状态计算虚拟对象在多个画面帧中的实际运动状态,导致虚拟对象在多个画面帧中的实际运动状态之间的平滑度不够,从视觉表现上来说,就是虚拟对象在追逐“影子”的过程中,运动状态的变化较为生涩,不符合物体移动的物理规律,网络同步的效果较差。
而本申请所示的方案,提供一种在网络同步过程中,对其它终端控制的虚拟对象的移动过程进行平滑插值的方案,能够使得虚拟对象的移动轨迹更为平滑,网络同步效果更好。
请参考图3,其示出了本申请一个示例性的实施例提供的虚拟对象的运动状态修正流程的示意图。如图3所示,运行上述虚拟场景对应的应用程序的终端(比如上述图1所示的终端),可以通过执行以下步骤来对虚拟场景中由其它终端控制的虚拟对象进行运动状态的修正。
步骤31,接收第二终端发送的同步数据包。
其中,该第二终端是控制虚拟场景中的虚拟对象的终端,该同步数据包中包含该虚拟对象在该第二终端侧的运动状态和操作信息,该操作信息用于指示接收到的控制操作。
步骤32,根据第一时延以及该同步数据包获取该虚拟对象在接收到该同步数据包之后的连续N个画面帧中的目标运动状态。
在本申请实施例中,虚拟对象在一个画面帧中的运动状态,是指虚拟对象在该画面帧的展示时刻时,在虚拟场景中的运动状态。相应的,虚拟对象在N个画面帧中的目标运动状态,是指虚拟对象在N个画面帧各自的展示时刻的目标运动状态。
其中,该目标运动状态包括目标位置,该第一时延是该同步数据包从该第一终端到达该第二终端的时延;N为大于或者等于2的整数。
其中,目标运动状态是指第一终端预测出的,该虚拟终端在第二终端侧的运动状态。也就是,在理想情况下,在某一画面帧中,当虚拟终端在终端A侧的运动状态为虚拟终端在该画面帧中的目标运动状态时,虚拟终端的运动状态在终端A侧与终端B侧才完全同步。
步骤33,获取该虚拟对象在该N个画面帧中的初始运动状态。
其中,该初始运动状态包括初始位置。
在本申请实施例中,初始运动状态是指虚拟对象在对应的画面帧中未经过修正的运动状态。
步骤34,根据该虚拟对象在该N个画面帧中的距离信息,对该虚拟对象在该N个画面帧中的初始运动状态进行修正,获得该虚拟对象在该N个画面帧中的实际运动状态。
在本申请实施例中,虚拟对象在一个画面帧中的实际运动状态,是指该第一终端展示该画面帧时实际使用的,该虚拟对象的运动状态。
其中,上述距离信息包括虚拟对象在对应的画面帧中的初始位置和目标位置之间的距离。比如,以N个画面帧中的画面帧A为例,虚拟对象在画面帧A中的距离信息,是指该虚拟对象在画面帧A中的目标位置,与该虚拟对象在画面帧A中的初始位置之间的距离。
本申请所示的方案,在接收到另一终端控制的虚拟对象的同步数据包之后,为该虚拟终端在后续的N个画面帧中分别预测出一个目标运动状态,并根据虚拟对象在各个画面帧中的目标位置和初始位置之间的距离,对N个画面帧中分别计算实际运动状态,也就说,在接收到同步数据包之后,终端根据虚拟对象在之后的多个画面帧中的目标位置和初始位置之间的距离,对其它终端控制的虚拟对象的运动轨迹逐帧进行修正,且每帧修正的目标状态都不相同,使得虚拟对象的修正后的移动轨迹更加平滑,从而提高虚拟对象的网络同步效果。
其中,以虚拟对象是虚拟车为例,各个终端中的虚拟场景客户端和服务器对时,保证各个客户端都使用同一个服务器时间。当操作改变或者一定周期内,客户端向服务器发送同步数据包,同步数据包含当前车(即客户端当前控制的虚拟车)的运动状态以及操作信息。服务器转发客户端的数据包到所有其他客户端。请参考图4,其示出了本申请实施例涉及的虚拟车同步示意图。如图4所示,客户端A操作的车发生状态改变时(拐弯),同步到客户端B的过程如下:
在图4中,客户端A的虚拟车发生右转的时候,状态发生改变,会发送同步数据包,通过服务器中转到客户端B。客户端B收到同步数据包之前,还是按照直行的状态继续运行,客户端B收到同步数据包后,根据包内数据进行预测,预测到当前时刻,然后从当前位置到预测点位置进行逼近插值。下一帧根据现有预测更新一帧数据,得到新的预测,继续由当前位置到预测位置进行平滑的逼近插值,如此循环几个周期,虚拟车的位置会与预测位置越来越近,最终在逼近插值结束时达到同步。下次客户端A的虚拟车改变状态时,再进行一次上述过程。
其中,请参考图5,其示出了本申请实施例涉及的网络同步过程示意图。以虚拟场景是某赛车游戏场景为例,终端A根据上一次接收到的同步数据包,对终端B控制的虚拟车辆进行动力模拟(S51),以控制该虚拟车辆在本端的运动,在一次动力模拟之后,终端A判断本局比赛倒计时是否结束(S52),若比赛倒计时结束,则停止网络同步,若比赛倒计时尚未结束,则终端A判断是否接收到新的同步数据包(S53),若未接收到新的同步数据包,则继续按照上一次接收到的同步数据包对该虚拟车辆进行动力模拟,若接收到新的同步数据包,则按照新的同步数据包进行数据预处理(S54),比如,从新的同步数据包中提取虚拟车辆的速度、旋转、位置等状态信息,根据新的同步数据包中的操作信息确定虚拟车辆的加速度(包括速度加速度和旋转角加速度等),以及,获取新的同步数据包的延时信息等。之后,终端A根据数据预处理结果,预测虚拟车辆在当前时刻之后的N个画面帧中的目标运动状态,该目标运动状态包含虚拟车辆在N个画面帧中的目标位置(S55),然后根据虚拟车辆在N个画面帧中的目标运动状态,对虚拟车辆的运动状态进行插值处理,获得虚拟车辆在N个画面帧中的实际运动状态(S56),在N次修正(即在N个画面帧中进行插值处理)之后,按照该新的同步数据包对该虚拟车辆进行动力模拟。
请参考图6,其示出了本申请一个示例性的实施例提供的虚拟对象的运动状态修正方法的方法流程图。如图6所示,运行上述虚拟场景对应的应用程序的终端(比如上述图1所示的终端),可以通过执行以下步骤来对虚拟场景中由其它终端控制的虚拟对象进行运动状态的修正。
步骤601,接收第二终端发送的同步数据包。
其中,该第二终端是控制虚拟场景中的虚拟对象的终端,该同步数据包中包含该虚拟对象在该第二终端侧的运动状态和操作信息,该操作信息用于指示接收到的控制操作。
在本申请实施例中,第二终端在控制虚拟对象的过程中,会定期或者被触发(比如接收到操作等)通过服务器向其它终端发送该虚拟对象的同步数据包,相应的,第一终端可以接收该同步数据包。
步骤602,根据第一时延获取迭代时间间隔和计算次数M,M为大于或者等于1的整数。
其中,该第一时延是同步数据包从第一终端到达第二终端的时延。
可选的,在根据该第一时延获取迭代时间间隔和计算次数M时,第一终端首先根据该第一时延获取该迭代时间间隔,该迭代时间间隔与该第一时延指示的时长成正相关;然后根据该第一时延与该迭代时间间隔,获取该计算次数M。
在一个示例性的方案中,第一终端中可以预先设置迭代时间间隔的计算公式,该计算公式的输入为时延,输出为迭代时间间隔,第一终端获取到该同步数据包对应的第一时延之后,将该第一时延输入迭代时间间隔的计算公式,获得输出的迭代时间间隔。
或者,在另一个示例性的方案中,第一终端中可以预先设置有时延区间与迭代时间间隔之间的对应关系,该对应关系可以如下表1所示。
表1
时延区间/单位ms 迭代时间间隔/单位ms
(0,200] 20
(200,300] 30
(300,400] 40
…… ……
如上述表1所示,第一终端获取到该同步数据包对应的第一时延之后,确定第一时延所在的时延区间,比如,假设第一时延为250ms,所属的时延区间为(200,300],然后第一终端通过查找表1确定该时延区间对应的迭代时间间隔为30ms。
可选的,在根据该第一时延获取该迭代时间间隔时,当该第一时延指示的时长不大于时长阈值时,将第一时间间隔获取为该迭代时间间隔;当该第一时延指示的时长大于该时长阈值时,将第二时间间隔获取为该迭代时间间隔;该第一时间间隔小于该第二时间间隔。
在另一个示例性的方案中,上述对应关系可以只包含两个时延区间,这两个时延区间以时长阈值为分界(假设时长阈值为200ms),对应的迭代时间间隔也只有两种(假设分别为20ms和40ms),当第一时延小于或者等于200ms时,第一终端确定迭代时间间隔为20ms,当第一时延大于200ms时,第一终端确定迭代时间间隔为40ms。
步骤603,根据该虚拟对象在该第二终端侧的运动状态和该操作信息,按照该迭代时间间隔进行M次计算迭代计算,获得该虚拟对象在第三画面帧中的目标运动状态。
其中,该第三画面帧是第一终端在接收到该同步数据包之后展示的第一个画面帧。
其中,在进行M次迭代计算中的第1次迭代计算时,第一终端根据同步数据包中携带的运动状态,预测在第二终端发送该同步数据包的时刻1之后的时刻2时,虚拟对象在第二终端中的运动状态,时刻1和时刻2之间的间隔为上述迭代时间间隔;在进行第2次迭代计算时,第一终端根据时刻2时虚拟对象在第二终端中的运动状态,预测时刻3(时刻2和时刻3之间的间隔为上述迭代时间间隔)时虚拟对象在第二终端中的运动状态;以此类推,第一终端经过M次迭代计算后,获得虚拟对象在第三画面帧中的目标运动状态。
步骤604,根据该操作信息以及该虚拟对象在第三画面帧中的目标运动状态,获取该虚拟对象在该第三画面帧中之后的N-1个画面帧中的目标运动状态。
其中,N为大于或者等于2的整数。
在本申请实施例中,虚拟对象的运动状态可以包括虚拟对象的矢量速度、位置、旋转数据(也可以称为虚拟对象的朝向)等与运动相关的状态。相应的,上述目标运动状态可以包括目标矢量速度、目标位置以及目标旋转数据。
以虚拟场景是虚拟赛车游戏场景,虚拟对象是虚拟车为例,虚拟车的车辆运行是有专门的动力计算组件,该动力计算组件可以计算虚拟车的动力、摩擦力、漂移向心力等。同步数据包不仅仅包含车辆的位置、速度、旋转数据等等运动状态,还包含动力计算需要的操作数据(比如操作方向、是否碰撞、是否使用氮气加速等),这样另一端收到同步数据包后,就可以用动力计算组件模拟发包时间点之后的各个时刻的状态,这样计算出来的预测状态更加准确,尤其是车辆发生漂移的时候。
本申请实施例所示的方案,第一终端可以通过动力计算组件的多次动力计算,模拟获得虚拟对象在第一终端接收到同步数据包之后的第一个画面帧中时的目标运动状态,这一过程可以称为追帧过程,之后,第一终端从接收到同步数据包之后的第一个画面帧中时的目标运动状态,依次预测虚拟对象在后续N-1个画面帧中的目标运动状态。
在本申请实施例中,上述N的取值可以是预先设置的数值。比如,上述N可以是开发人员预先设置的数值。
在另一示例中,上述N的取值也可以是第一终端自行设置或者确定的数值。
比如,终端可以获取第一差异信息,该第一差异信息是虚拟对象在第三画面帧中的目标运动状态,与虚拟对象在第三画面帧的前一画面帧中的实际运动状态之间的差异信息,该差异信息包含矢量速度差值、位置差值以及旋转数据差值中的至少一种。然后,终端根据该第一差异信息获取N的数值,其中,N的数值可以与第一差异信息中包含的差值成正相关;比如,第一差异信息中的矢量速度差值、位置差值或者旋转数据差值越大,N的数值也越大。
或者,终端在获取到虚拟对象在该第三画面帧中之后的第i个画面帧中的目标运动状态之后,可以获取第二差异信息,该第二差异信息是虚拟对象在该第三画面帧中之后的第i个画面帧中的目标运动状态与第i-1个画面帧中的目标运动状态之间的差异信息,若该第二差异信息满足收敛条件,则确定N的数值为i+1。其中,i为大于或者等于1的整数。
其中,上述收敛条件可以是以下条件中的任一项:第二差异信息中的矢量速度差值小于矢量速度差值阈值、第二差异信息中的位置差值小于位置差值阈值、以及第二差异信息中的旋转数据差值小于旋转数据差值阈值。
也就是说,当第一终端每次获取到虚拟对象在第三画面帧之后的一个画面帧中的目标运动状态之后,可以判断该目标运动状态与前一个获取到的目标运动状态之间的差异,若该差异较小,则判断满足收敛,停止获取虚拟对象在后续画面帧中的目标运动状态,否则继续获取虚拟对象在下一画面帧中的目标运动状态。
由于预测要求从发送包的时刻开始追帧到当前时刻,当延迟较大时,会导致追非常多的帧,尤其是当需要同步的虚拟对象数量较多时,第一终端需要对每个待同步的虚拟对象分别进行追帧,从而导致动力计算消耗过多的处理器计算资源。为了支持多人(比如8人及以上)的虚拟对象的网络同步,在本申请实施例中,第一终端可以在指定延迟以上的数据包使用降频处理。比如从同步数据包发送到进行预测的当前游戏时刻经历的时间为400ms,原逻辑帧时间为20ms,按照正常预测,会执行20次动力计算,每次更新时间为20ms。通过本申请所示的方案,可以对追帧过程做出优化调整,当同步数据包的延时在200ms以下时,按照20ms的迭代时间间隔进行追帧,而当同步数据包的延时超过200ms时,按照40ms的迭代时间间隔进行追帧,以延时为400ms为例,通过上述方案,第一终端在追帧过程中只需要进行10次动力计算,每次动力更新40ms,这样以微小的精度丢失来换取更好的性能,从而优化8人或更多人的对抗体验。
步骤605,获取该虚拟对象在第一终端接收到同步数据包之后的连续N个画面帧中的初始运动状态。
其中,上述连续N个画面帧中的第一个画面帧即为上述第三画面帧。
其中,该初始运动状态包括初始矢量速度、初始位置以及初始旋转数据等。
可选的,在获取该虚拟对象在该N个画面帧中的初始运动状态时,第一终端可以将该虚拟对象在该第二画面帧中的前一画面帧中的实际运动状态,获取为该虚拟对象在该第二画面帧中的初始运动状态。
也就是说,在本申请实施例中,在第一终端中,虚拟对象在前一个画面帧中的实际运动状态,就是该虚拟对象在后一画面帧中的初始运动状态。相应的,上述步骤605和步骤606之间并不是完全意义上的先后关系,在步骤605中,第一终端获取到一个画面帧中的初始运动状态之后,通过步骤606获得虚拟对象在该画面帧中的实际运动状态,然后再返回步骤605,将虚拟对象在该画面帧中的实际运动参数获取为虚拟对象在下一画面帧中的初始运动状态,再通过步骤606获得虚拟对象在下一画面帧中的实际运动状态,反复执行N次,获得虚拟对象在该N个画面帧中的实际运动状态。
步骤606,根据该虚拟对象在N个画面帧中的距离信息,对该虚拟对象在该N个画面帧中的初始运动状态进行修正,获得该虚拟对象在该N个画面帧中的实际运动状态。
其中,上述距离信息包括虚拟对象在对应的画面帧中的初始位置和目标位置之间的距离。该步骤可以包括以下子步骤:
S1,根据该虚拟对象在第二画面帧中的初始矢量速度、该操作信息以及该虚拟对象在该第二画面帧中的目标矢量速度进行插值计算,获得该虚拟对象在该第二画面帧中的插值矢量速度。
其中,该第二画面帧是该N个画面帧中的任一时刻。
S2,根据虚拟对象在第二画面帧中的距离信息对该插值矢量速度进行修正,获得该虚拟对象在该第二画面帧中的实际矢量速度。
其中,该虚拟对象在第二画面帧中的距离信息包括该虚拟对象在该第二画面帧中的初始位置与该虚拟对象在该第二画面帧中的目标位置之间的距离。
可选的,在根据距离信息对该插值矢量速度进行修正,获得该虚拟对象在该第二画面帧中的实际矢量速度时,第一终端根据该虚拟对象在第二画面帧中的距离信息获取速度增益,该速度增益的数值与该距离信息包含的距离数值成正相关;第一终端根据该插值矢量速度与该速度增益,获取该虚拟对象在该第二画面帧中的实际矢量速度。
S3,根据该虚拟对象在该第二画面帧中的初始位置以及该虚拟对象在该第二画面帧中的实际矢量速度,获取该虚拟对象在该第二画面帧中的实际位置。
可选的,在根据该虚拟对象在该第二画面帧中的初始位置以及该虚拟对象在该第二画面帧中的实际矢量速度,获取该虚拟对象在该第二画面帧中的实际位置时,第一终端将从该虚拟对象在该第二画面帧中的初始位置开始,按照该虚拟对象在该第二画面帧中的实际矢量速度移动帧间隔时长之后的位置获取为该虚拟对象在该第二画面帧中的实际位置;该帧间隔时长是相邻两个画面帧之间的时长。
以上述虚拟场景是某赛车游戏的虚拟场景,虚拟对象是网络虚拟车为例,由于网络延迟的存在,网络车响应操作会比主端车要滞后,又由于赛车的高速特性,短时间的延迟也能造成较大的位置差异,因此,在本申请实施例中,预测完网络车在后续各个画面帧中的目标运动状态后,需要用一种方式去纠正这种不同步状态,这里介绍的方法是一种平滑逼近算法。
请参考图7,其示出了本申请实施例涉及的修正原理示意图。如图7所示,以虚拟场景是某赛车游戏场景为例,假设在游戏运行的某一帧,赛车位置如实线矩形所示,目标位置如虚线矩形所示,本方案的目的是要让赛车尽量平滑和快速的逼近目标位置和目标矢量速度。图示的圈是一个虚拟橡皮筋,其会对赛车施加拉力,让其向预测目标靠拢,而且距离目标位置越远,拉力越大(可以设置不超过最大拉力限制,防止车速异常)。同时矢量速度和旋转数据使用插值算法向目标矢量速度和目标旋转数据逼近。该插值算法的计算方式如下:
假设初始矢量速度为v1,初始旋转数据为rot1,初始位置为p1;目标矢量速度为v2,目标旋转数据为rot2,目标位置为p2;网络车最大旋转角速度为w,每帧时间为deltaTime,速度改变加速度为a;得到,
插值旋转数据rot=Quaternion.RotateTowards(rot1,rot2,w*deltaTime);
插值速度大小vMag=Mathf.MoveTowards(|v1|,|v2|,a*deltaTime);
插值速度方向vDir=Vector3.MoveTowards(v1.normalized,v2.normalized,w*deltaTime,0);
其中,上述插值速度大小和插值速度方向即为上述插值矢量速度。
虚拟的橡皮筋产生的速度增益为:
rVel=(p2–p1).normalized*F((p2–p1).magtitude);其中,函数F用于计算橡皮筋产生的加速度;其中,(p2–p1).normalized是指对(p2–p1)做归一化处理,而(p2–p1).magtitude是指对(p2–p1)取模。
则实际矢量速度为:
v=vDir*vMag+rVel;
实际位置为:
p=p1+v*deltaTime;
其中,Quaternion.RotateTowards、Mathf.MoveTowards、Vector3.MoveTowards可以是虚拟引擎(比如Unity3D)中的应用程序编程接口(ApplicationProgrammingInterface,API),用于表示计算插值。
请参考图8,其示出了本申请实施例涉及的一种虚拟对象的网络同步流程示意图。如图8所示,该网络同步的流程如下:
S81,第一终端通过动力计算组件按照上一次接收到的同步数据包1对第二终端控制的虚拟对象的运动状态进行动力计算。
S82,第一终端每次进行一次动力计算之后,判断是否接收到下一同步数据包2。
若判断未接收到同步数据包2,则返回S81,继续按照同步数据包1对第二终端控制的虚拟对象的运动状态进行计算,若接收到同步数据包2,则进入S83以及S86。
S83,第一终端判断同步数据包2的时延是否不大于时延阈值(比如200ms),若是,则进入S84,否则,进入S85。
S84,第一终端按照第一迭代时间间隔(比如20ms)进行追帧,获得虚拟对象在当前时刻之后的N个画面帧中的目标运动状态。
S85,第一终端按照第二迭代时间间隔(比如40ms)进行追帧,获得虚拟对象在当前时刻之后的N个画面帧中的目标运动状态。
S86,对于上述N个画面帧中的任一画面帧j,第一终端将虚拟对象在前一画面帧的实际运动状态获取为虚拟对象在画面帧j的初始运动状态。
S87,第一终端根据虚拟对象在画面帧j的目标位置和初始位置之间的距离,对虚拟对象在画面帧j中的初始运动状态进行修正,获得虚拟对象在画面帧j中的实际运动状态。
其中,该S87包括以下四个子步骤:
a,对虚拟对象在画面帧j中的初始运动状态中的初始矢量速度进行插值处理,获得插值矢量速度;
b,根据虚拟对象在画面帧j的目标位置和初始位置之间的距离获取速度增益;
c,根据插值矢量速度和速度增益获取实际矢量速度;
d,根据实际矢量速度和初始位置获取实际位置。
其中,上述实际矢量速度和实际位置即为虚拟对象在画面帧j中的实际运动状态。
本申请实施例通过上述的平滑插值的方案,能优先保证效果平滑,通过在接收到同步数据包之后的N个画面帧中的每一帧向预测的状态逼近,能够减少虚拟对象的拉扯和重置。
在另一种实现方式中,第一终端也可以通过其它插值算法替换上述平滑插值的方案,比如,通过插值算法在较短时间内将虚拟对象从不同步过渡到同步,从而达到较高的同步率。
S88,第一终端判断画面帧j是否是上述N个画面帧中的最后一个画面帧;若是,返回步骤S81,按照同步数据包2对虚拟对象的运动状态进行计算;若否,返回S86和S87,继续获取虚拟对象在画面帧j+1中的实际运动状态。
步骤607,若在第四画面帧中该虚拟对象在该虚拟场景中发生碰撞,则获取该虚拟对象在该第四画面帧中发生碰撞后的运动状态。
其中,上述实际运动状态包括实际位置,若在第四画面帧中该虚拟对象在该虚拟场景中未发生碰撞,则在第五画面帧中,第一终端根据该虚拟对象在该第五画面帧中的实际位置展示该虚拟场景的场景画面。
其中,该第四画面帧是该N个画面帧中除了最后一个画面帧之外的其它任一画面帧,该第五画面帧是该第四画面帧的下一画面帧。
步骤608,根据该虚拟对象在该第四画面帧中发生碰撞后的运动状态,获取该虚拟对象在预设时间段内的各个画面帧中的实际运动状态。
其中,该预设时间段是该第四画面帧之后的预设时间长度时间段。
其中,在上述步骤606之后,第一终端可以按照虚拟对象在上述N个画面帧中的实际运动状态展示虚拟场景的场景画面帧,在此过程中,若在展示N个画面帧中的某一个画面帧时,该虚拟对象与虚拟场景中的物体或者其它虚拟对象发生碰撞,则第一终端可以丢弃虚拟对象在后续未展示的画面帧这种的实际运动状态(即退出网络同步逻辑),而是根据该虚拟对象发生碰撞后的运动状态,按照碰撞逻辑重新确定虚拟对象在后续预设时间段内(比如后续100ms内)的实际运动状态(即在后续预设时间段内通过碰撞逻辑控制虚拟对象)。
可选的,若在该预设时间段内接收到该第二终端发送的新的同步数据包,且该新的同步数据包是该虚拟对象在该第二终端侧发生碰撞触发的同步数据包,则根据第二时延以及该新的同步数据包获取该虚拟对象在连续N’个画面帧中的实际运动状态;
其中,该连续N’个画面帧是在接收到该新的同步数据包之后,且在该预设时间段之外的N’个画面帧,N’为大于或者等于1的整数。
其中,上述第一终端根据第二时延以及该新的同步数据包获取该虚拟对象在连续N’个画面帧中的实际运动状态的过程,与上述步骤根据第一时延和同步数据包获取虚拟对象在N个画面帧中的实际运动状态的过程(即上述步骤601至步骤606)的过程类似,不同之处在于,本步骤中的N’个画面帧,是第一终端接收到新的同步数据包之后展示的多个画面帧中,展示时间不处于上述预设时间段内的画面帧。
可选的,若在该预设时间段内接收到该第二终端发送的新的同步数据包,且该新的同步数据包不是该虚拟对象在该第二终端侧发生碰撞触发的同步数据包,则丢弃该新的同步数据包。
在上述通过碰撞逻辑控制虚拟对象的过程中,若第一终端接收到新的同步数据包,并且,该新的同步数据包是碰撞包(由碰撞触发的同步数据包,第一终端可以通过同步数据包中的标识来识别对应的同步数据包是否为碰撞包),则此时终端继续执行上述碰撞逻辑,同时按照新的同步数据包确定虚拟对象在预设时间段之后的实际运动状态,并在上述预设时间段之后,继续执行网络同步逻辑。反之,若新的同步数据包不是碰撞包,则第一终端可以直接丢弃该新的同步数据包。
高速运动的物体进行网络同步中,另一个比较重要的问题是碰撞的处理问题。由于移动终端的网络环境多样,且存在弱网络和网络抖动的情况,导致在同一时刻虚拟对象在第一终端中的运动状态与在第二终端中的运动状态存在较大的差异。这时如果虚拟对象在第一终端中发生了碰撞,在第二终端中很可能并没有碰撞,会造成更大的不同步。在赛车竞速游戏等虚拟场景中,强制让虚拟对象保持同步会导致严重的拉扯感,因此,本申请实施例在处理碰撞问题时遵循一个统一的原则:即优先视觉表现原则。按照这个原则,虚拟对象在第一终端中发生碰撞的时候,第一终端立即退出同步逻辑的执行,并交给动力计算组件按照当前状态(即碰撞后的运动状态)继续行驶一段时间,等新的同步数据包到达的时候再继续运行同步逻辑,这样同步逻辑会将碰撞导致的状态差异平滑过渡。
请参考图9,其示出了本申请实施例涉及的碰撞处理过程的流程图。在执行网络同步逻辑(即上述方案中根据同步数据包进行平滑插值以及动力计算,并根据平滑插值结果或者动力计算结果控制虚拟车辆运动)的过程中(S91),判断虚拟车辆是否发生碰撞(S92),若检测到虚拟车辆发生碰撞,则在后续一段时间内(比如100ms内)停止按照平滑插值结果或者动力计算结果控制虚拟车辆运动,在该后续一段时间内,根据虚拟车辆碰撞后的运动状态控制虚拟车辆运动(S93),即碰撞处理逻辑,在该后续一段时间结束之后,再继续执行网络同步逻辑。
综上所述,本申请所示的方案,在接收到另一终端控制的虚拟对象的同步数据包之后,为该虚拟终端在后续的N个画面帧中分别预测出一个目标运动状态,并根据虚拟对象在各个画面帧中的目标位置和初始位置之间的距离,对N个画面帧中分别计算实际运动状态;在接收到同步数据包之后,终端根据虚拟对象在之后的多个画面帧中的目标位置和初始位置之间的距离,对其它终端控制的虚拟对象的运动轨迹逐帧进行修正,且每帧修正的目标状态都不相同,使得虚拟对象的修正后的移动轨迹更加平滑,从而提高虚拟对象的网络同步效果。
此外,本申请所示的方案,在接收到同步数据包之后,根据同步数据包的延时大小,选择相应的迭代时间间隔,并根据迭代时间间隔进行追帧,在延时较大时,能够减少追帧时的动力计算次数,节约处理资源。
另外,本申请所示的方案,在执行网络同步逻辑的过程中,若检测到虚拟对象在虚拟场景内发生碰撞,则退出网络同步逻辑,并在后续的预设时间段内按照碰撞逻辑进行处理,避免虚拟对象在第一终端和第二终端侧因碰撞不同步而导致后续在第一终端侧的运动状态平滑性较差的问题,提高碰撞情况下的网络同步效果。
本申请上述实施例所示的方案,可以应用在基于移动终端的,有多个(比如8个或者8个以上)虚拟对象参与的虚拟场景,例如,可以应用在移动终端中有8个或者8个用户参与的赛车竟速游戏场景中,且能够提供较好的网络同步体验。图10至12示出了本申请涉及的应用场景界面图。如图10至12所示,以基于手机等移动终端的赛车竞速场景为例,本申请所示的网络同步方案可以应用于8人同时竞速(8人同时进房、同时开始、实时同屏竞速)的游戏模式场景中。
由于手机等移动终端接入网络方式的多样性,导致基于移动终端的虚拟场景的网络有更多不确定性,虚拟场景中参与的虚拟对象的数量越多,对虚拟对象的网络同步的平滑性要求越高,越难以保证网络同步的体验。相关技术中的网络同步方案的插值平滑性较差,无法满足多虚拟对象的网络同步要求,而本申请上述实施例所示的网络同步方案,提出一种在8人以上同屏游戏时能够高精度预测,平滑插值的同步算法,相对于相关技术中的网络同步方案具有更好平滑性和同步效果,能够在具有8个或8个以上的虚拟对象的虚拟场景中,做好高速带物理碰撞物体的网络同步。
图13是根据一示例性实施例示出的一种虚拟对象的运动状态修正装置的结构方框图。该虚拟对象的运动状态修正装置可以用于终端中,以执行图3或图6对应实施例所示的方法中,由第一终端执行的全部或者部分步骤。该虚拟对象的运动状态修正装置可以包括:
数据包接收模块1301,用于接收第二终端发送的同步数据包,所述第二终端是控制虚拟场景中的虚拟对象的终端,所述同步数据包中包含所述虚拟对象在所述第二终端侧的运动状态和操作信息,所述操作信息用于指示接收到的控制操作;
目标状态获取模块1302,用于根据第一时延以及所述同步数据包获取所述虚拟对象在接收到所述同步数据包之后的连续N个画面帧中的目标运动状态,所述目标运动状态包括目标位置,所述第一时延是所述同步数据包从所述第一终端到达所述第二终端的时延;N为大于或者等于2的整数;
初始状态获取模块1303,用于获取所述虚拟对象在所述N个画面帧中的初始运动状态,所述初始运动状态包括初始位置;
修正模块1304,用于根据所述虚拟对象在所述N个画面帧中的距离信息,对所述虚拟对象在所述N个画面帧中的初始运动状态进行修正,获得所述虚拟对象在所述N个画面帧中的实际运动状态,所述距离信息包括所述虚拟对象在对应的画面帧中的初始位置和目标位置之间的距离。
可选的,所述目标运动状态还包括目标矢量速度,所述初始运动状态包括初始矢量速度;
所述修正模块1304,用于根据所述虚拟对象在第二画面帧中的初始矢量速度、所述操作信息以及所述虚拟对象在所述第二画面帧中的目标矢量速度进行插值计算,获得所述虚拟对象在所述第二画面帧中的插值矢量速度;所述第二画面帧是所述N个画面帧中的任一画面帧;
根据所述虚拟对象在所述第二画面帧中的距离信息对所述插值矢量速度进行修正,获得所述虚拟对象在所述第二画面帧中的实际矢量速度;
根据所述虚拟对象在所述第二画面帧中的初始位置以及所述虚拟对象在所述第二画面帧中的实际矢量速度,获取所述虚拟对象在所述第二画面帧中的实际位置。
可选的,所述初始状态获取模块1303,用于将所述虚拟对象在所述第二画面帧的前一画面帧中的实际运动状态,获取为所述虚拟对象在所述第二画面帧中的初始运动状态。
可选的,在根据所述虚拟对象在所述第二画面帧中的距离信息对所述插值矢量速度进行修正,获得所述虚拟对象在所述第二画面帧中的实际矢量速度时,所述修正模块1304,用于,
根据所述虚拟对象在第二画面帧中的距离信息获取速度增益,所述速度增益的数值与所述距离信息包含的距离数值成正相关;
根据所述插值矢量速度与所述速度增益,获取所述虚拟对象在所述第二画面帧中的实际矢量速度。
可选的,在根据所述虚拟对象在所述第二画面帧中的初始位置以及所述虚拟对象在所述第二画面帧中的实际矢量速度,获取所述虚拟对象在所述第二画面帧中的实际位置时,所述修正模块1304,用于,
将从所述虚拟对象在所述第二画面帧中的初始位置开始,按照所述虚拟对象在所述第二画面帧中的实际矢量速度移动帧间隔时长之后的位置获取为所述虚拟对象在所述第二画面帧中的实际位置;所述帧间隔时长是相邻两个画面帧之间的时长。
可选的,所述目标状态获取模块1302,用于,
根据所述第一时延获取迭代时间间隔和计算次数M,M为大于或者等于1的整数;
根据所述虚拟对象在所述第二终端侧的运动状态和所述操作信息,按照所述迭代时间间隔进行M次计算迭代计算,获得所述虚拟对象在第三画面帧中的目标运动状态;所述第三画面帧是所述N个画面帧中的第一个画面帧;
根据所述操作信息以及所述虚拟对象在第三画面帧中的目标运动状态,获取所述虚拟对象在所述第三画面帧之后的N-1个画面帧中的目标运动状态。
可选的,在根据所述第一时延获取迭代时间间隔和计算次数M时,所述目标状态获取模块1302,用于,
根据所述第一时延获取所述迭代时间间隔,所述迭代时间间隔与所述第一时延指示的时长成正相关;
根据所述第一时延与所述迭代时间间隔,获取所述计算次数M。
可选的,在根据所述第一时延获取所述迭代时间间隔时,所述目标状态获取模块1302,用于,
当所述第一时延指示的时长不大于时长阈值时,将第一时间间隔获取为所述迭代时间间隔;
当所述第一时延指示的时长大于所述时长阈值时,将第二时间间隔获取为所述迭代时间间隔;所述第一时间间隔小于所述第二时间间隔。
可选的,所述实际运动状态包括实际位置,所述装置还包括:
展示模块,用于若在第四画面帧中所述虚拟对象在所述虚拟场景中未发生碰撞,则在第五画面帧的展示时刻,根据所述虚拟对象在所述第五画面帧中的实际位置展示所述第五画面帧;
其中,所述第四画面帧是所述N个画面帧中除了最后一个画面帧之外的其它任一画面帧,所述第五画面帧是所述第四画面帧的下一画面帧。
可选的,所述装置还包括:
碰撞状态获取模块,用于若在第四画面帧中所述虚拟对象在所述虚拟场景中发生碰撞,则获取所述虚拟对象在所述第四画面帧中发生碰撞后的运动状态;
第一实际状态获取模块,用于根据所述虚拟对象在所述第四画面帧中发生碰撞后的运动状态,获取所述虚拟对象在预设时间段内的各个画面帧中的实际运动状态,所述预设时间段是所述第四画面帧展示之后的预设时间长度时间段。
可选的,所述装置还包括:
第一实际状态获取模块,用于若在所述预设时间段内接收到所述第二终端发送的新的同步数据包,且所述新的同步数据包是所述虚拟对象在所述第二终端侧发生碰撞触发的同步数据包,则根据第二时延以及所述新的同步数据包获取所述虚拟对象在连续N’个画面帧中的实际运动状态;
其中,所述连续N’个画面帧是在接收到所述新的同步数据包之后,且在所述预设时间段之外的N’画面帧,N’为大于或者等于1的整数。
可选的,所述装置还包括:
丢弃模块,用于若在所述预设时间段内接收到所述第二终端发送的新的同步数据包,且所述新的同步数据包不是所述虚拟对象在所述第二终端侧发生碰撞触发的同步数据包,则丢弃所述新的同步数据包。
综上所述,本申请所示的方案,在接收到另一终端控制的虚拟对象的同步数据包之后,为该虚拟终端在后续的N个画面帧中分别预测出一个目标运动状态,并根据虚拟对象在各个画面帧中的目标位置和初始位置之间的距离,对N个画面帧中分别计算实际运动状态;在接收到同步数据包之后,终端根据虚拟对象在之后的多个画面帧中的目标位置和初始位置之间的距离,对其它终端控制的虚拟对象的运动轨迹逐帧进行修正,且每帧修正的目标状态都不相同,使得虚拟对象的修正后的移动轨迹更加平滑,从而提高虚拟对象的网络同步效果。
此外,本申请所示的方案,在接收到同步数据包之后,根据同步数据包的延时大小,选择相应的迭代时间间隔,并根据迭代时间间隔进行追帧,在延时较大时,能够减少追帧时的动力计算次数,节约处理资源。
另外,本申请所示的方案,在执行网络同步逻辑的过程中,若检测到虚拟对象在虚拟场景内发生碰撞,则退出网络同步逻辑,并在后续的预设时间段内按照碰撞逻辑进行处理,避免虚拟对象在第一终端和第二终端侧因碰撞不同步而导致后续在第一终端侧的运动状态平滑性较差的问题,提高碰撞情况下的网络同步效果。
图14是根据一示例性实施例示出的计算机设备1400的结构框图。该计算机设备1400可以是用户终端,比如智能手机、平板电脑、MP3播放器(MovingPicture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备1400还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,计算机设备1400包括有:处理器1401和存储器1402。
处理器1401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1401可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1401可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1401还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1401所执行以实现本申请中方法实施例提供的虚拟场景中的虚拟载具控制方法。
在一些实施例中,计算机设备1400还可选包括有:外围设备接口1403和至少一个外围设备。处理器1401、存储器1402和外围设备接口1403之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1403相连。具体地,外围设备包括:射频电路1404、触摸显示屏1405、摄像头1406、音频电路1407、定位组件1408和电源1409中的至少一种。
外围设备接口1403可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1401和存储器1402。在一些实施例中,处理器1401、存储器1402和外围设备接口1403被集成在同一芯片或电路板上;在一些其他实施例中,处理器1401、存储器1402和外围设备接口1403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1404用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1404包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1404可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1404还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1405用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1405是触摸显示屏时,显示屏1405还具有采集在显示屏1405的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1401进行处理。此时,显示屏1405还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1405可以为一个,设置计算机设备1400的前面板;在另一些实施例中,显示屏1405可以为至少两个,分别设置在计算机设备1400的不同表面或呈折叠设计;在再一些实施例中,显示屏1405可以是柔性显示屏,设置在计算机设备1400的弯曲表面上或折叠面上。甚至,显示屏1405还可以设置成非矩形的不规则图形,也即异形屏。显示屏1405可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(OrganicLight-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1406用于采集图像或视频。可选地,摄像头组件1406包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1406还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1407可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1401进行处理,或者输入至射频电路1404以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备1400的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1401或射频电路1404的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1407还可以包括耳机插孔。
定位组件1408用于定位计算机设备1400的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件1408可以是基于美国的GPS(Global Positioning System,全球定位系统)、中国的北斗系统、俄罗斯的GLONASS(Global Navigation Satellite System,全球卫星导航系统)或者欧洲的伽利略系统的定位组件。
电源1409用于为计算机设备1400中的各个组件进行供电。电源1409可以是交流电、直流电、一次性电池或可充电电池。当电源1409包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,计算机设备1400还包括有一个或多个传感器1410。该一个或多个传感器1410包括但不限于:加速度传感器1411、陀螺仪传感器1412、压力传感器1413、指纹传感器1414、光学传感器1415以及接近传感器1416。
加速度传感器1411可以检测以计算机设备1400建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1411可以用于检测重力加速度在三个坐标轴上的分量。处理器1401可以根据加速度传感器1411采集的重力加速度信号,控制触摸显示屏1405以横向视图或纵向视图进行用户界面的显示。加速度传感器1411还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1412可以检测计算机设备1400的机体方向及转动角度,陀螺仪传感器1412可以与加速度传感器1411协同采集用户对计算机设备1400的3D动作。处理器1401根据陀螺仪传感器1412采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1413可以设置在计算机设备1400的侧边框和/或触摸显示屏1405的下层。当压力传感器1413设置在计算机设备1400的侧边框时,可以检测用户对计算机设备1400的握持信号,由处理器1401根据压力传感器1413采集的握持信号进行左右手识别或快捷操作。当压力传感器1413设置在触摸显示屏1405的下层时,由处理器1401根据用户对触摸显示屏1405的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1414用于采集用户的指纹,由处理器1401根据指纹传感器1414采集到的指纹识别用户的身份,或者,由指纹传感器1414根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1401授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1414可以被设置计算机设备1400的正面、背面或侧面。当计算机设备1400上设置有物理按键或厂商Logo时,指纹传感器1414可以与物理按键或厂商Logo集成在一起。
光学传感器1415用于采集环境光强度。在一个实施例中,处理器1401可以根据光学传感器1415采集的环境光强度,控制触摸显示屏1405的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1405的显示亮度;当环境光强度较低时,调低触摸显示屏1405的显示亮度。在另一个实施例中,处理器1401还可以根据光学传感器1415采集的环境光强度,动态调整摄像头组件1406的拍摄参数。
接近传感器1416,也称距离传感器,通常设置在计算机设备1400的前面板。接近传感器1416用于采集用户与计算机设备1400的正面之间的距离。在一个实施例中,当接近传感器1416检测到用户与计算机设备1400的正面之间的距离逐渐变小时,由处理器1401控制触摸显示屏1405从亮屏状态切换为息屏状态;当接近传感器1416检测到用户与计算机设备1400的正面之间的距离逐渐变大时,由处理器1401控制触摸显示屏1405从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图14中示出的结构并不构成对计算机设备1400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括至少一条指令、至少一段程序、代码集或指令集的存储器,上述至少一条指令、至少一段程序、代码集或指令集可由处理器执行以完成上述图3、或图6对应实施例所示的方法的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (15)

1.一种虚拟对象的运动状态修正方法,其特征在于,所述方法由第一终端执行,所述方法包括:
接收第二终端发送的同步数据包,所述第二终端是控制虚拟场景中的虚拟对象的终端,所述同步数据包中包含所述虚拟对象在所述第二终端侧的运动状态和操作信息,所述操作信息用于指示接收到的控制操作;
根据第一时延以及所述同步数据包获取所述虚拟对象在接收到所述同步数据包之后的连续N个画面帧中的目标运动状态,所述目标运动状态包括目标位置,所述第一时延是所述同步数据包从所述第一终端到达所述第二终端的时延;N为大于或者等于2的整数;
获取所述虚拟对象在所述N个画面帧中的初始运动状态,所述初始运动状态包括初始位置;
根据所述虚拟对象在所述N个画面帧中的距离信息,对所述虚拟对象在所述N个画面帧中的初始运动状态进行修正,获得所述虚拟对象在所述N个画面帧中的实际运动状态,所述距离信息包括所述虚拟对象在对应的画面帧中的初始位置和目标位置之间的距离。
2.根据权利要求1所述的方法,其特征在于,所述目标运动状态还包括目标矢量速度,所述初始运动状态还包括初始矢量速度;
所述根据所述虚拟对象在所述N个画面帧中的距离信息,对所述虚拟对象在所述N个画面帧中的初始运动状态进行修正,获得所述虚拟对象在所述N个画面帧中的实际运动状态,包括:
根据所述虚拟对象在第二画面帧中的初始矢量速度、所述操作信息以及所述虚拟对象在所述第二画面帧中的目标矢量速度进行插值计算,获得所述虚拟对象在所述第二画面帧中的插值矢量速度;所述第二画面帧是所述N个画面帧中的任一画面帧;
根据所述虚拟对象在所述第二画面帧中的距离信息对所述插值矢量速度进行修正,获得所述虚拟对象在所述第二画面帧中的实际矢量速度;
根据所述虚拟对象在所述第二画面帧中的初始位置以及所述虚拟对象在所述第二画面帧中的实际矢量速度,获取所述虚拟对象在所述第二画面帧中的实际位置。
3.根据权利要求2所述的方法,其特征在于,所述获取所述虚拟对象在所述N个画面帧中的初始运动状态,包括:
将所述虚拟对象在所述第二画面帧的前一画面帧中的实际运动状态,获取为所述虚拟对象在所述第二画面帧中的初始运动状态。
4.根据权利要求2所述的方法,其特征在于,所述根据所述虚拟对象在所述第二画面帧中的距离信息对所述插值矢量速度进行修正,获得所述虚拟对象在所述第二画面帧中的实际矢量速度,包括:
根据所述虚拟对象在第二画面帧中的距离信息获取速度增益,所述速度增益的数值与所述距离信息包含的距离数值成正相关;
根据所述插值矢量速度与所述速度增益,获取所述虚拟对象在所述第二画面帧中的实际矢量速度。
5.根据权利要求2所述的方法,其特征在于,所述根据所述虚拟对象在所述第二画面帧中的初始位置以及所述虚拟对象在所述第二画面帧中的实际矢量速度,获取所述虚拟对象在所述第二画面帧中的实际位置,包括:
将从所述虚拟对象在所述第二画面帧中的初始位置开始,按照所述虚拟对象在所述第二画面帧中的实际矢量速度移动帧间隔时长之后的位置获取为所述虚拟对象在所述第二画面帧中的实际位置;所述帧间隔时长是相邻两个画面帧之间的时长。
6.根据权利要求1至5任一所述的方法,其特征在于,所述根据第一时延以及所述同步数据包获取所述虚拟对象在接收到所述同步数据包之后的连续N个画面帧中的目标运动状态,包括:
根据所述第一时延获取迭代时间间隔和计算次数M,M为大于或者等于1的整数;
根据所述虚拟对象在所述第二终端侧的运动状态和所述操作信息,按照所述迭代时间间隔进行M次计算迭代计算,获得所述虚拟对象在第三画面帧中的目标运动状态;所述第三画面帧是所述N个画面帧中的第一个画面帧;
根据所述操作信息以及所述虚拟对象在第三画面帧中的目标运动状态,获取所述虚拟对象在所述第三画面帧之后的N-1个画面帧中的目标运动状态。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一时延获取迭代时间间隔和计算次数M,包括:
根据所述第一时延获取所述迭代时间间隔,所述迭代时间间隔与所述第一时延指示的时长成正相关;
根据所述第一时延与所述迭代时间间隔,获取所述计算次数M。
8.根据权利要求7所述的方法,其特征在于,所述根据所述第一时延获取所述迭代时间间隔,包括:
当所述第一时延指示的时长不大于时长阈值时,将第一时间间隔获取为所述迭代时间间隔;
当所述第一时延指示的时长大于所述时长阈值时,将第二时间间隔获取为所述迭代时间间隔;所述第一时间间隔小于所述第二时间间隔。
9.根据权利要求1至5任一所述的方法,其特征在于,所述实际运动状态包括实际位置,所述方法还包括:
若在第四画面帧中所述虚拟对象在所述虚拟场景中未发生碰撞,则在第五画面帧的展示时刻,根据所述虚拟对象在所述第五画面帧中的实际位置展示所述第五画面帧;
其中,所述第四画面帧是所述N个画面帧中除了最后一个画面帧之外的其它任一画面帧,所述第五画面帧是所述第四画面帧的下一画面帧。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若在第四画面帧中所述虚拟对象在所述虚拟场景中发生碰撞,则获取所述虚拟对象在所述第四画面帧中发生碰撞后的运动状态;
根据所述虚拟对象在所述第四画面帧中发生碰撞后的运动状态,获取所述虚拟对象在预设时间段内的各个画面帧中的实际运动状态,所述预设时间段是所述第四画面帧展示之后的预设时间长度时间段。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
若在所述预设时间段内接收到所述第二终端发送的新的同步数据包,且所述新的同步数据包是所述虚拟对象在所述第二终端侧发生碰撞触发的同步数据包,则根据第二时延以及所述新的同步数据包获取所述虚拟对象在连续N’个画面帧中的实际运动状态;
其中,所述连续N’个画面帧是在接收到所述新的同步数据包之后,且在所述预设时间段之外的N’画面帧,N’为大于或者等于1的整数。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
若在所述预设时间段内接收到所述第二终端发送的新的同步数据包,且所述新的同步数据包不是所述虚拟对象在所述第二终端侧发生碰撞触发的同步数据包,则丢弃所述新的同步数据包。
13.一种虚拟对象的运动状态修正装置,其特征在于,所述装置用于第一终端中,所述装置包括:
数据包接收模块,用于接收第二终端发送的同步数据包,所述第二终端是控制虚拟场景中的虚拟对象的终端,所述同步数据包中包含所述虚拟对象在所述第二终端侧的运动状态和操作信息,所述操作信息用于指示接收到的控制操作;
目标状态获取模块,用于根据第一时延以及所述同步数据包获取所述虚拟对象在接收到所述同步数据包之后的连续N个画面帧中的目标运动状态,所述目标运动状态包括目标位置,所述第一时延是所述同步数据包从所述第一终端到达所述第二终端的时延;N为大于或者等于2的整数;
初始状态获取模块,用于获取所述虚拟对象在所述N个画面帧中的初始运动状态,所述初始运动状态包括初始位置;
修正模块,用于根据所述虚拟对象在所述N个画面帧中的距离信息,对所述虚拟对象在所述N个画面帧中的初始运动状态进行修正,获得所述虚拟对象在所述N个画面帧中的实际运动状态,所述距离信息包括所述虚拟对象在对应的画面帧中的初始位置和目标位置之间的距离。
14.一种计算机设备,其特征在于,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至12任一所述的虚拟对象的运动状态修正方法。
15.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至12任一所述的虚拟对象的运动状态修正方法。
CN201910267938.2A 2019-04-03 2019-04-03 虚拟对象的运动状态修正方法、装置、设备及存储介质 Active CN110022363B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910267938.2A CN110022363B (zh) 2019-04-03 2019-04-03 虚拟对象的运动状态修正方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910267938.2A CN110022363B (zh) 2019-04-03 2019-04-03 虚拟对象的运动状态修正方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110022363A true CN110022363A (zh) 2019-07-16
CN110022363B CN110022363B (zh) 2021-10-29

Family

ID=67190585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910267938.2A Active CN110022363B (zh) 2019-04-03 2019-04-03 虚拟对象的运动状态修正方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110022363B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111263178A (zh) * 2020-02-20 2020-06-09 广州虎牙科技有限公司 直播方法、装置、用户端及存储介质
CN111589107A (zh) * 2020-05-14 2020-08-28 北京代码乾坤科技有限公司 虚拟模型的行为预测方法和装置
CN111951409A (zh) * 2020-08-21 2020-11-17 广东智源机器人科技有限公司 显示方法、显示装置、存储介质、处理器和显示设备
CN112381954A (zh) * 2020-11-11 2021-02-19 郑州捷安高科股份有限公司 一种动态模型显示方法、装置及设备
WO2021143324A1 (zh) * 2020-01-17 2021-07-22 腾讯科技(深圳)有限公司 一种目标对象的位置纠正方法、装置、设备及介质
CN113365126A (zh) * 2021-05-24 2021-09-07 武汉乐谷在线科技有限公司 一种游戏数据同步方法及系统、设备、存储介质
CN114367981A (zh) * 2021-12-28 2022-04-19 达闼机器人有限公司 对象控制方法、装置、设备和存储介质
CN115025495A (zh) * 2022-06-02 2022-09-09 北京新唐思创教育科技有限公司 角色模型的同步方法、装置、电子设备及存储介质
CN115089961A (zh) * 2022-06-24 2022-09-23 北京字跳网络技术有限公司 一种视频处理方法、装置、电子设备及存储介质
CN115702993A (zh) * 2021-08-12 2023-02-17 荣耀终端有限公司 跳绳状态的检测方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106476728A (zh) * 2015-09-01 2017-03-08 福特全球技术公司 用于车载的车辆传感器的运动补偿
CN106597496A (zh) * 2016-12-09 2017-04-26 东软集团股份有限公司 位置修正方法及相关设备
WO2018028566A1 (zh) * 2016-08-08 2018-02-15 腾讯科技(深圳)有限公司 虚拟对象的移动同步方法、客户端、服务器及存储介质
CN108379832A (zh) * 2018-01-29 2018-08-10 珠海金山网络游戏科技有限公司 一种游戏同步方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106476728A (zh) * 2015-09-01 2017-03-08 福特全球技术公司 用于车载的车辆传感器的运动补偿
WO2018028566A1 (zh) * 2016-08-08 2018-02-15 腾讯科技(深圳)有限公司 虚拟对象的移动同步方法、客户端、服务器及存储介质
CN106597496A (zh) * 2016-12-09 2017-04-26 东软集团股份有限公司 位置修正方法及相关设备
CN108379832A (zh) * 2018-01-29 2018-08-10 珠海金山网络游戏科技有限公司 一种游戏同步方法和装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021143324A1 (zh) * 2020-01-17 2021-07-22 腾讯科技(深圳)有限公司 一种目标对象的位置纠正方法、装置、设备及介质
CN111263178A (zh) * 2020-02-20 2020-06-09 广州虎牙科技有限公司 直播方法、装置、用户端及存储介质
CN111589107A (zh) * 2020-05-14 2020-08-28 北京代码乾坤科技有限公司 虚拟模型的行为预测方法和装置
CN111951409A (zh) * 2020-08-21 2020-11-17 广东智源机器人科技有限公司 显示方法、显示装置、存储介质、处理器和显示设备
CN112381954A (zh) * 2020-11-11 2021-02-19 郑州捷安高科股份有限公司 一种动态模型显示方法、装置及设备
CN113365126A (zh) * 2021-05-24 2021-09-07 武汉乐谷在线科技有限公司 一种游戏数据同步方法及系统、设备、存储介质
CN113365126B (zh) * 2021-05-24 2023-02-21 武汉乐谷在线科技有限公司 一种游戏数据同步方法及系统、设备、存储介质
CN115702993A (zh) * 2021-08-12 2023-02-17 荣耀终端有限公司 跳绳状态的检测方法及电子设备
CN115702993B (zh) * 2021-08-12 2023-10-31 荣耀终端有限公司 跳绳状态的检测方法及电子设备
CN114367981A (zh) * 2021-12-28 2022-04-19 达闼机器人有限公司 对象控制方法、装置、设备和存储介质
CN115025495A (zh) * 2022-06-02 2022-09-09 北京新唐思创教育科技有限公司 角色模型的同步方法、装置、电子设备及存储介质
CN115089961A (zh) * 2022-06-24 2022-09-23 北京字跳网络技术有限公司 一种视频处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN110022363B (zh) 2021-10-29

Similar Documents

Publication Publication Date Title
CN110022363A (zh) 虚拟对象的运动状态修正方法、装置、设备及存储介质
CN109091869B (zh) 虚拟对象的动作控制方法、装置、计算机设备及存储介质
US11393154B2 (en) Hair rendering method, device, electronic apparatus, and storage medium
JP7206398B2 (ja) ユーザインターフェース表示方法、ユーザインターフェース表示装置、端末、コンピュータ装置、およびプログラム
US11341946B2 (en) Method for determining a karaoke singing score, terminal and computer-readable storage medium
US11574009B2 (en) Method, apparatus and computer device for searching audio, and storage medium
US9280882B2 (en) Terminal device for providing haptic effect using haptic engine and controlling method therefor
CN108619721A (zh) 虚拟场景中的距离信息显示方法、装置及计算机设备
CN108694073B (zh) 虚拟场景的控制方法、装置、设备及存储介质
CN111182320A (zh) 信息处理方法、装置、终端、服务器及存储介质
CN108888959A (zh) 虚拟场景中的组队方法、装置、计算机设备及存储介质
CN108541300A (zh) 自适应深度感测系统
CN110134521A (zh) 资源分配的方法、装置、资源管理器及存储介质
CN108762881A (zh) 界面绘制方法、装置、终端及存储介质
CN110052027A (zh) 虚拟场景中的虚拟对象控制方法、装置、设备及存储介质
CN108536295A (zh) 虚拟场景中的对象控制方法、装置及计算机设备
CN110378525A (zh) 出行计划确定方法、装置、设备及存储介质
CN109783183A (zh) 请求处理方法、装置、电子设备及存储介质
CN110288689A (zh) 对电子地图进行渲染的方法和装置
CN110377784A (zh) 歌单更新方法、装置、终端及存储介质
CN111437600A (zh) 剧情展示方法、装置、设备及存储介质
JP2023526990A (ja) 選択ターゲットの決定方法、装置、機器、及びコンピュータプログラム
CN112086102B (zh) 扩展音频频带的方法、装置、设备以及存储介质
CN113556481A (zh) 视频特效的生成方法、装置、电子设备及存储介质
CN110457082A (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