虚拟角的移动同步方法、装置、设备及存储介质与流程


虚拟角的移动同步方法、装置、设备及存储介质
1.本技术要求于2021年09月07日提交的申请号为202111044497.3、发明名称为“虚拟角的移动同步方法、装置、设备及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术实施例涉及数据同步领域,特别涉及一种虚拟角的移动同步方法、装置、设备及存储介质。


背景技术:



3.在大型多人在线角扮演游戏(massive multiplayer online role-playing game,mmorpg)中,玩家可以控制虚拟角在虚拟世界中进行移动操作。
4.假设在一局对战中,客户端a控制虚拟世界中的虚拟角a,客户端b控制虚拟世界中的虚拟角。虚拟角a是客户端b的非主控虚拟角,客户端a需要将虚拟角a的位置同步至客户端b进行显示。相关技术中,客户端a每隔预定时长向客户端b发送一个移动数据包,该移动数据包携带有虚拟角a的位置。
5.但是同步过程会受到多种因素影响,上述同步方案容易导致客户端b在显示虚拟角a时出现卡顿现象。


技术实现要素:



6.本技术提供了一种虚拟角的移动同步方法、装置、设备及存储介质,可以通过不同的移动模式采用不同的同步计算参数,从而实现在客户端上显示非主控虚拟角时的更好显示效果。所述技术方案如下:
7.根据本技术的一方面,提供了一种虚拟角的移动同步方法,所述方法包括:
8.接收第一虚拟角的移动数据包,所述移动数据包包括所述第一虚拟角的移动模式和逻辑位置,所述逻辑位置用于指示所述第一虚拟角在虚拟世界中的位置;
9.确定与所述移动模式对应的同步计算参数;
10.在所述第一虚拟角的渲染位置未到达所述逻辑位置的情况下,基于所述同步计算参数对所述逻辑位置进行同步计算,得到所述第一虚拟角的渲染位置;
11.根据所述渲染位置在用户界面上显示所述第一虚拟角。
12.根据本技术的另一方面,提供了一种虚拟角的移动同步装置,所述装置包括:
13.接收模块,用于接收第一虚拟角的移动数据包,所述移动数据包包括所述第一虚拟角的移动模式和逻辑位置,所述逻辑位置用于指示所述第一虚拟角在虚拟世界中的位置;
14.确定模块,用于确定与所述移动模式对应的同步计算参数;
15.播放模块,用于基于所述同步计算参数对所述逻辑位置进行同步计算,得到所述第一虚拟角的渲染位置;
16.显示模块,用于根据所述渲染位置在用户界面上显示所述第一虚拟角。
17.根据本技术的另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的虚拟角的移动同步方法。
18.根据本技术的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的虚拟角的移动同步方法。
19.本技术提供的技术方案带来的有益效果至少包括:
20.通过为不同的移动模式提供不同的同步计算参数,根据不同的同步计算参数对不同类型的移动数据包进行同步计算,能够保证不同的移动模式下计算得到的渲染位置的平滑性,减少或避免卡顿现象的发生。
附图说明
21.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1是本技术一个示例性实施例提供的计算机系统的结构框图;
23.图2是本技术一个示例性实施例提供的虚拟角的移动同步方法的流程图;
24.图3是本技术一个示例性实施例提供的虚拟角在走跑模式下的移动同步的界面示意图;
25.图4是本技术一个示例性实施例提供的样条插值作为内插值算法的示意图;
26.图5是本技术一个示例性实施例提供的虚拟角的移动同步方法的流程图;
27.图6是本技术一个示例性实施例提供的延迟补偿对逻辑位置影响的示意图;
28.图7是本技术一个示例性实施例提供的虚拟角在空中模式下的移动同步的界面示意图;
29.图8是本技术一个示例性实施例提供的三次样条插值的示意图;
30.图9是本技术一个示例性实施例提供的用矩阵计算三次样条插值的示意图;
31.图10是本技术一个示例性实施例提供的线性插值作为外插值法的示意图;
32.图11是本技术一个示例性实施例提供的扫掠检测的示意图;
33.图12是本技术一个示例性实施例提供的虚拟角的移动同步方法的流程图;
34.图13是本技术一个示例性实施例提供的虚拟角的移动同步方法的流程图;
35.图14是本技术一个示例性实施例提供的移动模式对应参数的配置图;
36.图15是本技术一个示例性实施例提供的终端的结构框图;
37.图16是本技术一个示例性实施例提供的服务器的结构示意图。
具体实施方式
38.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
39.首先,对本技术实施例中涉及的名词进行介绍:
40.大型多人在线角扮演游戏(massive multiplayer online role-playinggame,mmorpg):在mmorpg中,玩家都可扮演一个或多个虚拟角,并控制该虚拟角的在虚拟环境中的活动与行为。在mmorpg的对战中,玩家a控制虚拟世界中的虚拟角a,玩家b控制虚拟世界中的虚拟角。玩家a的客户端每隔预定时长向玩家b的客户端发送移动数据包,该移动数据包携带虚拟角a的位置,从而玩家b的客户端上会显示出虚拟角a的移动位置。
41.虚拟环境:是应用程序在终端上运行时显示(或提供)的虚拟环境。该虚拟环境可以是对真实世界的仿真世界,也可以是半仿真半虚构的三维世界,还可以是纯虚构的三维世界。虚拟环境可以是二维虚拟环境、2.5维虚拟环境和三维虚拟环境中的任意一种。可选地,该虚拟环境还用于至少两个虚拟角之间的虚拟环境对战,在该虚拟环境中具有可供至少两个虚拟角使用的虚拟资源。
42.虚拟角:是指在虚拟世界中的可活动对象。该可活动对象可以是虚拟世界中的仿真人物角或动漫人物角。虚拟角是虚拟世界中独立发出不同声音的个体。可选的,在本技术实施例中包括主控方角和非主控方角。主控方角指当前用户所在的客户端控制的虚拟角,非主控方角:指在当前用户所在的客户端出现,由其他用户控制的虚拟角。
43.移动模式:是第一虚拟角在虚拟世界中采用某种移动方式前进的运动模式,包括站立模式、走跑模式、游泳模式、空中模式、美术位移模式、自由位移模式和路径位移模式等。在不同的移动模式下,对应的虚拟角的同步计算参数有所不同,虚拟角的物理计算、位置计算、与环境的交互关系都会不一样。
44.站立模式:是第一虚拟角在虚拟世界中站立不同的运动模式。
45.走跑模式:是第一虚拟角在虚拟世界中以走路或跑步形式进行移动的运动模式。
46.游泳模式:是第一虚拟角在虚拟世界中以游泳形式进行移动的运动模式。
47.空中模式:是第一虚拟角在虚拟世界中跳跃腾空后进行移动的运动模式。
48.美术位移模式:是第一虚拟角在虚拟世界中按照预设的动画模式进行移动的运动模式。在该种模式下,主控客户端仅需要向其它客户端发送一个起始的移动包进行位置同步即可。
49.自由位移模式:是第一虚拟角在虚拟世界中按照不规则位移进行移动的运动模式。比如,攀爬、爬梯、与虚拟物品交互等场景。
50.路径位移模式:是第一虚拟角在虚拟世界中按照预设的路径进行移动的运动模式。
51.图1给出了本技术一个示例性实施例提供的计算机系统的结构框图。该计算机系统100包括:第一终端110、服务器120、第二终端130。
52.第一终端110安装和运行有支持虚拟环境的客户端111,该客户端111可以是多人在线对战程序。当第一终端运行客户端111时,第一终端110的屏幕上显示客户端111的用户
界面。该客户端111可以是大逃杀射击游戏、虚拟现实(virtual reality,vr)应用程序、增强现实(augmented reality,ar)程序、三维地图程序、虚拟现实游戏、增强现实游戏、第一人称射击游戏(first-person shooting game,fps)、第三人称射击游戏(third-personal shooting game,tps)、多人在线战术竞技游戏(multiplayer online battle arena games,moba)、策略游戏(simulation game,slg)中的任意一种。在本实施例中,以该客户端111是moba游戏来举例说明。第一终端110是第一用户112使用的终端,第一用户112使用第一终端110控制位于虚拟环境中的第一虚拟角进行活动,第一虚拟角可以称为第一用户112的主控虚拟角。第一虚拟角的活动包括但不限于:移动、跳跃、传送、释放技能、调整身体姿态、爬行、步行、奔跑、骑行、飞行、跳跃、驾驶、拾取、射击、攻击、投掷中的至少一种。示意性的,第一虚拟角是第一虚拟角,比如仿真人物角或动漫人物角。
53.第二终端130安装和运行有支持虚拟环境的客户端131,该客户端131可以是多人在线对战程序。当第二终端130运行客户端131时,第二终端130的屏幕上显示客户端131的用户界面。该客户端可以是大逃杀射击游戏、vr应用程序、ar程序、三维地图程序、虚拟现实游戏、增强现实游戏、fps、tps、moba、slg中的任意一种,在本实施例中,以该客户端是moba游戏来举例说明。第二终端130是第二用户113使用的终端,第二用户113使用第二终端130控制位于虚拟环境中的第二虚拟角进行活动,第二虚拟角可以称为第二用户113的主控虚拟角。示意性的,第二虚拟角是第二虚拟角,比如仿真人物角或动漫人物角。
54.可选地,第一虚拟角和第二虚拟角处于同一虚拟环境中。可选地,第一虚拟角和第二虚拟角可以属于同一个阵营、同一个队伍、同一个组织、具有好友关系或具有临时性的通讯权限。可选的,第一虚拟角和第二虚拟角可以属于不同的阵营、不同的队伍、不同的组织或具有敌对关系。
55.可选地,第一终端110和第二终端130上安装的客户端是相同的,或两个终端上安装的客户端是不同操作系统平台(安卓或ios)上的同一类型客户端。第一终端110可以泛指多个终端中的一个,第二终端130可以泛指多个终端中的另一个,本实施例仅以第一终端110和第二终端130来举例说明。第一终端110和第二终端130的设备类型相同或不同,该设备类型包括:智能手机、平板电脑、电子书阅读器、mp3播放器、mp4播放器、膝上型便携计算机和台式计算机中的至少一种。
56.图1中仅示出了两个终端,但在不同实施例中存在多个其它终端140可以接入服务器120。可选地,还存在一个或多个终端140是开发者对应的终端,在终端140上安装有支持虚拟环境的客户端的开发和编辑平台,开发者可在终端140上对客户端进行编辑和更新,并将更新后的客户端安装包通过有线或无线网络传输至服务器120,第一终端110和第二终端130可从服务器120下载客户端安装包实现对客户端的更新。
57.第一终端110、第二终端130以及其它终端140通过无线网络或有线网络与服务器120相连。
58.服务器120包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。服务器120用于为支持三维虚拟环境的客户端提供后台服务。可选地,服务器120承担主要计算工作,终端承担次要计算工作;或者,服务器120承担次要计算工作,终端承担主要计算工作;或者,服务器120和终端之间采用分布式计算架构进行协同计算。
59.在一个示意性的例子中,服务器120包括处理器122、用户账号数据库123、对战服务模块124、面向用户的输入/输出接口(input/output interface,i/o接口)125。其中,处理器122用于加载服务器121中存储的指令,处理用户账号数据库123和对战服务模块124中的数据;用户账号数据库123用于存储第一终端110、第二终端130以及其它终端140所使用的用户账号的数据,比如用户账号的头像、用户账号的昵称、用户账号的战斗力指数,用户账号所在的服务区;对战服务模块124用于提供多个对战房间供用户进行对战,比如1v1对战、3v3对战、5v5对战等;面向用户的i/o接口125用于通过无线网络或有线网络和第一终端110和/或第二终端130建立通信交换数据。
60.图2示出了本技术一个示例性实施例提供的虚拟角的移动同步方法的流程图。该方法可以由图1所示的终端120或终端140执行,该方法包括以下步骤:
61.步骤202:接收第一虚拟角的移动数据包,移动数据包包括第一虚拟角的移动模式和逻辑位置,逻辑位置用于指示第一虚拟角在虚拟世界中的位置;
62.移动数据包是携带有第一虚拟角的同步数据信息的数据包。在第一虚拟角是由第一客户端控制的情况下,移动数据包是第一客户端向第二客户端发送的,第一客户端是控制第一虚拟角的客户端,第二客户端是控制第二虚拟角的客户端。对于第二客户端来讲,第一虚拟角是非主控虚拟角,也即非本端能够控制的虚拟角。第二客户端需要接收来自第一客户端的移动数据包,才能同步显示第一虚拟角在虚拟世界中的实时位置。在第一虚拟角是中立虚拟角的情况下,移动数据包是由服务器向第二客户端发送的。
63.示例性的,移动数据包包括:第一虚拟角的移动模式和逻辑位置。
64.移动模式是第一虚拟角在虚拟世界中移动时的模式。示例性的,移动模式包括站立模式、走跑模式、游泳模式、空中模式、美术位移模式、自由位移模式和路径移动模式。第一虚拟角在虚拟环境中进行不同的动作,都会有对应的移动模式,示例性的,第一虚拟角跳跃和空中掉落属于空中模式,翻滚、滑铲以及翻越属于美术位移模式,爬梯属于自由位移模式,怪物巡逻属于路径移动模式。
65.逻辑位置是用来指示第一虚拟角在虚拟世界中的位置。示例性的,在虚拟环境中,第二虚拟角对第一虚拟角进行射击操作时,需要根据第一虚拟角的逻辑位置进行射击判定。
66.以第一虚拟角是由第一客户端控制为例,第一虚拟角在虚拟环境中移动,第一客户端根据第一虚拟角在移动时的移动模式和逻辑位置生成移动数据包,将移动数据包通过服务器发送给第二客户端。
67.第一客户端按照预设的同步频率向第二客户端发送移动数据包。不同的移动模式对应的同步频率相同或不同。可选地,第一客户端还在满足触发条件的情况下向第二客户端发送移动数据包,该触发条件包括但不限于:移动模式发生切换、当前逻辑位置相比于最近一次同步时的逻辑位置的改变量达到第一阈值、当前移动速度相比于最近一次同步时的移动速度的改变量达到第二阈值、当前移动方向相比于最近一次同步时的移动方向的改变量达到第三阈值。
68.步骤204:确定与移动模式对应的同步计算参数;
69.预先对不同移动模式配置对应的同步计算参数。第二客户端存储有不同移动模式
对应的不同同步计算参数。每个移动模式下的同步计算参数包括如下至少之一:
70.·
当前移动模式是否配置有延迟补偿;
71.延迟补偿是指在第二客户端接收到移动包时,比服务器转发移动包时落后半个rtt。因此需要把这半个rtt时间补偿进去,来估算出第一虚拟角的最新逻辑位置,将补偿后的逻辑位置作为需要同步的逻辑位置去追赶。其中,rtt的值可以根据对时协议估算出来。
72.·
当前移动模式是否配置有预表现;
73.预表现是指无需服务器发送移动数据包或确认指令,也可提前显示第一虚拟角的动作。
74.·
当前移动模式的内插值算法;
75.在第一虚拟角的当前渲染位置未达到移动数据包中的逻辑位置的情况下,将当前渲染位置向逻辑位置进行插值的插值算法。
76.·
当前移动模式的外插值算法。
77.在第一虚拟角的当前渲染位置达到最近一个移动数据包中的逻辑位置,且尚未接收到后续的移动数据包的情况下,将当前渲染位置按照当前移动方向向前方进行插值预测的插值算法。
78.客户端根据接收到的移动数据包携带的移动模式,确定与移动模式对应的同步计算参数。
79.示例性的,在第二客户端接收到来自第一客户端的移动数据包中携带“走跑模式”的情况下,则确定样条插值作为走跑模式的内插值算法,线性插值作为走跑模式的外插值算法和朝向插值算法。
80.步骤206:基于同步计算参数对逻辑位置进行同步计算,得到第一虚拟角的渲染位置;
81.渲染位置是在用户界面中显示的第一虚拟角的位置。示例性的,对于确定某种移动模式下第一虚拟角的渲染位置,循环步骤206所述的方法。
82.示意性的,在第一虚拟角的当前渲染位置未到达逻辑位置的情况下,根据确定的第一虚拟角的移动模式对应的同步计算参数,使当前渲染位置不断向逻辑位置靠近,得到该移动模式对应的第一渲染位置、第二渲染位置、第三渲染位置等,形成用户界面上可视的第一虚拟角的移动轨迹路径,并在用户界面上显示处于每个渲染位置上的第一虚拟角。可选地,当前渲染位置是已经计算出的第一虚拟角的最后一个渲染位置。
83.可选的,在第一虚拟角的当前渲染位置未达到逻辑位置且逻辑位置可达的情况下,根据与移动模式对应的内插值算法计算第一虚拟角的后续渲染位置。
84.示例性的参考图3,第二客户端显示用户界面30,该用户界面30包括第一虚拟角31和第二虚拟角32,以及在第一虚拟角31走跑的某时刻对应的逻辑位置33和渲染位置(箭头标识)34。在第一虚拟角的渲染位置34未达到逻辑位置33时,根据走跑模式对应的样条插值算法作为内插值算法,不断由当前渲染位置向逻辑位置插值,不断循环这一过程,得到用户界面30显示第一虚拟角在走跑时的位置轨迹。
85.示例性的参考图4,以虚拟环境中的地面作为基准面,以第一虚拟角当前的渲染位置为中心建立世界坐标系,用矩形图标42a代表第一虚拟角的当前渲染位置,用圆形图
标41a代表移动数据包中第一虚拟角的逻辑位置。在第一虚拟角的当前渲染位置42a未到达逻辑位置41a时,根据走跑模式对应的样条插值作为内插值算法,由当前渲染位置42a向逻辑位置41a插值,得到第一渲染位置42b、第二渲染位置42c、第三渲染位置42d,形成用户界面上可视的第一虚拟角的移动轨迹。在接收到下一个移动数据包携带的逻辑位置41b时,会开始向逻辑位置41b执行新一次的内插值算法,得到第四渲染位置42e、第五渲染位置42f、第六渲染位置42g,形成用户界面上的可视移动轨迹;在接收到新的移动数据包时,会循环这一过程。
86.示例性的,存在至少两种移动模式的内插值算法是不同的,因此每种移动模式能够用自身较为适合的插值算法来计算出更为平滑的渲染位置,在用户界面上呈现更为柔顺的动作轨迹显示。
87.步骤208:根据渲染位置在用户界面上显示第一虚拟角。
88.由于逻辑位置是在不断同步更新的,所以第一虚拟角的渲染位置也是不断更新的。
89.示例性的,如图3所示,第一虚拟角31的当前渲染位置用箭头标识34表示,根据移动数据包中携带的逻辑位置33,由当前渲染位置34向逻辑位置33进行同步计算,得到的箭头标识35即为下一渲染位置。第二虚拟角的客户端根据下一渲染位置35在用户界面上显示第一虚拟角。
90.综上所述,本实施例提供的方法,通过为不同的移动模式提供不同的同步计算参数,根据不同的同步计算参数对不同类型的移动数据包进行同步计算,能够保证不同的移动模式下计算得到的渲染位置的平滑性,减少或避免卡顿现象的发生。
91.图5示出了本技术一个示例性实施例提供的虚拟角的移动同步方法的流程图。该方法可以由图1所示的终端120或终端140执行,该方法包括以下步骤:
92.步骤502:接收第一虚拟角的移动数据包,移动数据包包括第一虚拟角的移动模式和逻辑位置,逻辑位置用于指示第一虚拟角在虚拟世界中的位置;
93.参考步骤202所示,不再赘述。
94.可选地,移动数据包还携带有:同步时间戳、当前移动速度、当前移动方向、当前面朝方向中的至少一种。当前移动方向和当前面朝方向通常是相同的,但也有可能不同。
95.步骤504:确定与移动模式对应的同步计算参数,同步计算参数包括:延时补偿参数、预表现参数、内插值算法和外插值算法;
96.客户端根据接收到的移动数据包携带的移动模式,确定与移动模式对应的同步计算参数。
97.预先对不同移动模式配置对应的同步计算参数。第二客户端存储有不同移动模式对应的不同同步计算参数。每个移动模式下的同步计算参数包括如下至少之一:
98.·
同步频率;
99.同步频率是指当前移动模式下,第一客户端每秒至少发出多少个移动数据包。比如,站立模式下每秒至少发出1个移动数据包,空中模式下每秒至少发出6个移动数据包。
100.·
当前移动模式是否配置有延迟补偿;
101.延迟补偿是指在第二客户端接收到移动包时,比服务器转发移动包时落后半个rtt。因此需要把这半个rtt时间补偿进去,来估算出第一虚拟角的最新逻辑位置,将补偿
后的逻辑位置作为需要同步的逻辑位置去追赶。其中,rtt的值可以根据对时协议估算出来。
102.·
当前移动模式是否配置有预表现;
103.预表现是指无需服务器发送移动数据包或确认指令,也可提前显示第一虚拟角的动作。
104.·
当前移动模式的内插值算法;
105.在第一虚拟角的当前渲染位置未达到移动数据包中的逻辑位置的情况下,将当前渲染位置向逻辑位置进行插值的插值算法。
106.示例性的,在移动模式是站立模式的情况下,确定与站立模式对应的内插值算法是线性插值算法;在移动模式是走跑模式的情况下,确定与走跑模式对应的内插值算法是样条插值算法;在移动模式是游泳模式的情况下,确定与游泳模式对应的内插值算法是样条插值算法;在移动模式是空中模式的情况下,确定与空中模式对应的内插值算法是三次样条插值算法;在移动模式是美术位移模式的情况下,确定与美术位移模式对应的内插值算法是自定义曲线算法;在移动模式是自由位移模式的情况下,确定与自由位移模式对应的内插值算法是线性插值算法;在移动模式是路径移动模式的情况下,确定与路径移动模式对应的内插值算法是线性插值算法。
107.·
当前移动模式的外插值算法;
108.示例性的,在第一虚拟角的当前渲染位置达到最近一个移动数据包中的逻辑位置,且尚未接收到后续的移动数据包的情况下,将当前渲染位置按照当前移动方向向前方进行插值预测的插值算法。在移动模式是站立模式的情况下,确定与站立模式对应的外插值算法是线性插值算法;在移动模式是走跑模式的情况下,确定与走跑模式对应的外插值算法是样条插值算法;在移动模式是游泳模式的情况下,确定与游泳模式对应的外插值算法是样条插值算法;在移动模式是空中模式的情况下,确定与空中模式对应的外插值算法是线性插值算法;在移动模式是美术位移模式的情况下,确定与美术位移模式对应的外插值算法是自定义曲线算法;在移动模式是自由位移模式的情况下,确定与自由位移模式对应的外插值算法是线性插值算法;在移动模式是路径移动模式的情况下,确定与路径移动模式对应的外插值算法是线性插值算法。
109.·
当前移动模式的朝向插值算法;
110.朝向插值是指对第一虚拟角的面朝方向的插值算法。
111.·
物理检测。
112.第二客户端在基于外插值算法预测渲染位置的过程中,在虚拟世界中做射线检测或碰撞检测以修正错误的渲染位置。
113.客户端根据接收到的移动数据包携带的移动模式,确定与移动模式对应的同步计算参数。
114.示例性的参考图14,在第二客户端接收到来自第一客户端的移动数据包中携带走跑模式的情况下,则确定走跑模式具有预表现和延时补偿的特性,且与走跑模式对应的内插值算法是三次样条插值算法,外插值算法是线性插值算法。
115.步骤506:在移动模式配置有延迟补偿的情况下,基于rtt时间对逻辑位置进行补偿,得到补偿后的逻辑位置;
116.延时补偿是指第二客户端接收到移动数据包,是落后于服务器半个往返时间(round-trip time,rtt)的,所以第二客户端需要把落后的半个rtt时间补偿进来,将延时补偿后的逻辑位置作为第一虚拟角的逻辑位置去插值。示例性的,落后半个rtt对应的路程可以通过当前第一虚拟角的移动速度v和半个rtt时间的乘积估算得到。也即,补偿后的逻辑位置等于逻辑位置和补偿距离之和。补偿距离等于移动速度v和半个rtt时间的乘积。补偿方向为第一虚拟角的当前移动方向。
117.示意性的参考图6,以虚拟环境中的地面作为基准面,用矩形图标42a代表第一虚拟角的当前渲染位置,用圆形图标41c代表第二客户端接收到的第一虚拟角的逻辑位置,补偿路径43的距离是按照第一虚拟角的当前移动速度和半个rtt时间t的乘积估算得到的,补偿方向是按照第一虚拟角的当前移动方向进行估算的,圆形图标41d代表考虑延时补偿之后的逻辑位置。所以由当前渲染位置42a向补偿后的逻辑位置41d插值,从而得到第一渲染位置42b、第二渲染位置42c,为显示在用户界面的移动路径。
118.示意性的,在移动模式未配置有延迟补偿的情况下,无需进行延迟补偿,执行步骤508。
119.步骤508:判断第一虚拟角的当前渲染位置是否到达(补偿后的)逻辑位置;
120.渲染位置是在用户界面中显示的第一虚拟角的位置。渲染位置是基于逻辑位置确定的,渲染位置与逻辑位置可能存在差异,并不一定完全相同。示例性的,在第一虚拟角的当前渲染位置未到达逻辑位置的情况下,根据确定的第一虚拟角的移动模式对应的同步计算参数,使当前渲染位置不断向逻辑位置靠近,得到该移动模式对应的第一渲染位置、第二渲染位置、第三渲染位置等,形成用户界面上可视的第一虚拟角的移动轨迹路径。
121.客户端根据接收的移动数据包获取第一虚拟角的逻辑位置(或补偿后的逻辑位置),并判断第一虚拟角的当前渲染位置是否到达了逻辑位置(或补偿后的逻辑位置)。在第一虚拟角的当前渲染位置未到达逻辑位置的情况下,执行步骤512;在第一虚拟角的当前渲染位置已到达逻辑位置的情况下,执行步骤510。
122.步骤510:基于与移动模式对应的内插值算法计算第一虚拟角的下一渲染位置,内插值算法是将当前渲染位置向逻辑位置进行插值的算法;
123.在第一虚拟角的当前渲染位置未达到逻辑位置且逻辑位置可达的情况下,根据与移动模式对应的内插值算法计算第一虚拟角的下一渲染位置(或后续渲染位置)。示例性的,内插值算法是指根据已知的当前渲染位置和逻辑位置,由当前渲染位置向逻辑位置进行插值得到下一渲染位置,从而得到一系列逼近逻辑位置的近似值,从而得到当前渲染位置向逻辑位置不断靠逼近的移动轨迹。
124.示例性的如图7所示,该用户界面30包括第一虚拟角31,第二虚拟角32以及在第一虚拟角跳跃的某时刻对应的逻辑位置33和当前渲染位置34。此时第一虚拟角处于空中模式,在第一虚拟角的当前渲染位置34未达到逻辑位置33时,根据空中模式对应的三次样条插值作为内插值算法,不断由当前渲染位置向逻辑位置插值,不断循环这一过程,得到用户界面30显示的第一虚拟角跳跃的位置轨迹。
125.空中模式采用的内插值法是三次样条插值算法,三次样条插值曲线是一个三次多项式且二阶可导,所以基于三次样条插值曲线的位置变化和速度变化都是比较平滑的。示
例性的参考图8,以虚拟环境中的地面作为基准面,假设起始时间为0,此时逻辑位置41的位置、速度和加速度分别是p0、v0、a;渲染位置42的位置和速度分别是p1、v1。已知插值时间为t,可以估算出逻辑位置和渲染位置的汇合位置44的位置和速度分别为p2,v2。渲染位置42和汇合位置44之间的曲线即为三次样条插值曲线p(t)=at3+bt2+ct+d,该三次样条插值曲线也是用户界面上显示的第一虚拟角的移动轨迹。示意性的参考图9,根据渲染位置42,渲染位置42速度,汇合位置44、汇合位置44速度,列出方程组,利用矩阵求解出三次样条插值曲线的系数a、b、c、d,进而得到我们三次样条插值曲线方程。
126.步骤512:根据下一渲染位置在用户界面上显示第一虚拟角;
127.第二客户端根据内插值算法计算得出的第一虚拟角的下一渲染位置,基于下一渲染位置在用户界面上显示第一虚拟角。下一渲染位置是指在第一虚拟角的渲染位置未达到逻辑位置的情况下,根据与移动模式对应的内插值算法计算的第一虚拟角在用户界面中显示的下一个位置。
128.由于逻辑位置是在不断更新的,所以下一渲染位置是当前渲染位置向逻辑位置进行内插值计算得到的,下一渲染位置也是不断更新的。
129.在第一虚拟角的当前渲染位置已到达逻辑位置的情况下,执行步骤514。
130.步骤514:判断第一虚拟角的移动模式是否配置有预表现;
131.预表现参数是指第二客户端尚未接收到来自服务端的最新的移动数据包的情况下,就可以执行预测移动的特性。具有预表现特性的移动模式在第一虚拟角的当前渲染位置已到达逻辑位置还没有收到新的移动数据包时,可以由第二客户端根据当前移动模式以预测方式继续向前移动。
132.在第一虚拟角的当前渲染位置已到达逻辑位置的情况下,需要判断第一虚拟角的移动模式是否配置有预表现。在第一虚拟角的移动模式需要预表现的情况下,执行步骤516;在第一虚拟角的移动模式不需要预表现的情况下,执行步骤522。
133.步骤516:判断当前渲染位置是否到达预测极限位置;
134.预测极限位置是指在执行预表现的过程中,可以根据当前的移动模式和移动速度继续向前移动的极限值。示例性的,预测极限位置可以在时间或者距离上加以限定。在第一虚拟角的移动模式配置有预表现特征,当前渲染位置已经达到预测极限位置的情况下,需要停止执行预测。
135.在第一虚拟角的当前渲染位置已到达逻辑位置的情况且第一虚拟角的移动模式需要预表现的情况下,判断当前渲染位置是否到达预测极限位置。在当前渲染位置未到达预测极限位置的情况下,执行步骤518;在当前渲染位置已到达预测极限位置的情况下,执行步骤522。
136.步骤518:基于与移动模式对应的外插值算法计算第一虚拟角的下一渲染位置,外插值算法是将渲染位置沿当前移动方向进行插值的算法;
137.在第一虚拟角的当前渲染位置已达到逻辑位置且未接收到下一逻辑位置的情况下,根据与移动模式对应的外插值算法计算第一虚拟角的下一渲染位置。示例性的,外插值算法是指将当前渲染位置根据当前的移动模式、当前移动速度沿当前移动方向进行插值的算法。
138.示意性的参考图10,当前第一虚拟角的移动模式为走跑模式,以虚拟环境中的
地面作为基准面,以第一虚拟角的当前渲染位置为中心建立世界坐标系,用矩形图标42d代表第一虚拟角的当前渲染位置,用圆形图标41d代表第一虚拟角的逻辑位置。在第一虚拟角的当前渲染位置42d已到达逻辑位置41d但没有接收到新的逻辑位置时,根据走跑模式对应的线性插值作为外插值算法,由当前渲染位置42d根据当前的走跑模式、单签移动速度沿当前移动方向继续向前进行插值,得到第一渲染位置42e、第二渲染位置42f、第三渲染位置42g,在用户界面上显示预测出的移动轨迹。
139.在一些实施例中,在第一虚拟角的渲染位置已到达逻辑位置、未接收到下一逻辑位置、当前移动模式配置有预表现且当前渲染位置未到达预测极限位置的情况下,根据当前的移动模式对应的外插值算法计算第一虚拟角的下一渲染位置。示例性的,外插值算法是指将渲染位置根据当前的移动模式以及移动速度沿当前移动方向进行插值的算法。
140.在一些实施例中,在外插值算法预测出的下一渲染位置前存在障碍物的情况下,根据扫掠检测可以检测出下一渲染位置是不可达的,则对下一渲染位置进行修正,把修正前的下一渲染位置在障碍物处确定的位置作为修正后的渲染位置。
141.示意性的参考图11,当前第一虚拟角的移动模式为走跑模式,以虚拟环境中的地面作为基准面,在对渲染位置41开启的扫掠检测45a的情况下,检测出外插值算法预测出的下一渲染位置41h前存在障碍物墙体46,根据扫掠检测45b检测到位置41m是可达的,则把位置41m作为修正后的下一渲染位置。
142.步骤520:根据下一渲染位置在用户界面上显示第一虚拟角;
143.第二客户端根据外插值算法计算得出的第一虚拟角的下一渲染位置,从而基于下一渲染位置在用户界面上显示第一虚拟角。
144.步骤522:结束当前移动数据包的播放。
145.在一些实施例中,第二客户端根据下一渲染位置在用户界面上显示第一虚拟角后,结束当前移动数据包的播放。
146.在一些实施例中,第一虚拟角的渲染位置已到达逻辑位置、未接收到下一逻辑位置、移动模式配置有预表现且渲染位置已到达预测极限位置的情况下,结束当前移动数据包的播放。
147.在一些实施例中,第一虚拟角的渲染位置已到达逻辑位置、未接收到下一逻辑位置、移动模式未配置预表现,结束当前移动数据包的播放。
148.在收到下一个移动数据包或缓存有未播放的下一个移动数据包的情况下,从步骤502开始再次循环此过程。
149.综上所述,本实施例提供的方法,通过为不同的移动模式提供不同的同步计算参数,根据不同的同步计算参数对不同类型的移动数据包进行同步计算,能够保证不同的移动模式下计算得到的渲染位置的平滑性,减少或避免卡顿现象的发生。
150.本实施例提供的方法,还通过判断第一虚拟角的渲染位置是否到达逻辑位置,并根据移动模式对应的内插值和外插值算法来对第一虚拟角的位置进行插值,通过不同移动模式对应的不同情况选择不同的插值方法,提高了虚拟角移动同步的准确性。
151.本实施例提供的方法,还通过确定移动模式是否配置延迟补偿,根据rtt时间对逻辑位置进行补偿,将延时补偿后的位置作为第一虚拟角的逻辑位置进行插值,避免了rtt时间对逻辑位置带来的误差影响,使得第一客户端和第二客户端所显示的第一虚拟角的
画面同步性更强。
152.本实施例提供的方法,还通过确定移动模式是否配置有预表现,从而在第一虚拟角的渲染位置已到达逻辑位置、未接收到下一逻辑位置、移动模式配置有预表现且渲染位置未到达预测极限位置的情况下,根据当前的移动模式对应的外插值算法计算第一虚拟角的下一渲染位置,避免由于网络抖动导致的未接收到下一逻辑位置就停止渲染,造成虚拟角的移动不流畅、不连贯的现象。
153.以下结合图12和图13对上述方法进行阐述。第二客户端中设置有用于缓存移动数据包的播放队列,图12示出了将接收到的移动数据包的存入播放队列的过程,图13示出了将播放队列中的移动数据包移出播放的过程。
154.示意性的参照图14,对于不同的移动模式,可以对其同步计算参数进行配置,同步计算参数包括:同步频率、预表现、内插值、外插值、朝向插值、延迟补偿、物理检测和服务端校验的至少一种。
155.同步频率是指第一客户端每秒钟发出的同步数据包的数量。根据接收到的同步数据包携带的移动模式确定对应移动模式的基础同步频率。示例性的,在第一虚拟角处于走跑模式的情况下,基础同步频率为2帧率。在第一虚拟角做直线匀速运动时,使用基础同步频率来接收同步数据包,以每秒钟接收两个同步数据包的速度进行同步计算参数;在第一虚拟角做变速运动或者转弯的走跑运动时,会加快同步频率。
156.同步频率与移动模式的运动速度,位置变化剧烈程度有关。示例性的,站立模式、美术位移模式和路径移动模式对应的运动速度较小且平稳,对应的同步频率为1帧率;走跑模式、游泳模式和自由位移模式速度变化不大,对应的同步速率为2帧率;空中模式包括跳跃和掉落运动速度变化快,移动路径成弧线分布,对应的同步频率为6帧率。
157.第一客户端会按照基础同步频率向第二客户端发送同步数据包。可选的,在移动模式的某些指标变化累加到一定阈值的情况下,也会触发客户端发送同步数据包。示例性的,对于走跑模式,在第一虚拟角的速度变化、朝向变化累加到一定阈值的情况下,会触发第一客户端发送此时的移动数据包。
158.第二虚拟角客户端物理检测是指在接收到移动数据包之后,在物理世界中做的射线检测、碰撞检测来修正逻辑位置。示例性的,路径移动模式是指服务端给客户端发送的关于怪物虚拟角移动路径的同步方式。服务端和客户端按着路径移动模式移动,可以减少与怪物虚拟角的同步频率。但服务端与客户端的虚拟世界的精度不同,且渲染位置之间会有地形起伏的不同,需要第二客户端将逻辑位置进行贴地修正。
159.在一些实施例中,第一虚拟角处于空中模式,在外插值算法预测出的下一逻辑位置前存在障碍物的情况下,根据扫掠检测可以检测出下一逻辑位置是不可达的,则对逻辑位置进行修正,把修正前的下一逻辑位置在障碍物处确定的位置作为修正后的逻辑位置,继续用外插值算法计算第一虚拟角的下一渲染位置。
160.服务器校验包括服务端对虚拟角的位置是否改变以及移动可达性检测、速度检测、频率检测,按照自定义曲线检测中的至少一种。示例性的,第一虚拟角处于自有位移模式的情况下,自由移动模式包括爬梯、攀爬、物件交互动作中的至少一种,服务端校验只校验速度以及对当前虚拟环境是否允许自由移动进行校验。
161.图12示出了本技术一个示例性实施例提供的虚拟角的移动同步方法的流程图。
该方法可以由图1所示的终端120或终端140执行,该方法包括以下步骤:
162.示例性的,第二客户端包含用于接收移动数据包的接收模块和用于播放移动数据包的播放模块。接收模块执行步骤1202至步骤1224,播放模块执行步骤1224至步骤1254。
163.步骤1202:判断是否收到新的移动数据包;
164.接收模块判断是否收到第一客户端的新的移动数据包,在收到新的移动数据包的情况下,执行步骤1204;在未接收到移动数据包的情况下,执行步骤1224。
165.移动数据包携带有:移动模式和逻辑位置。可选地,移动数据包还携带有:同步时间戳、当前移动速度、当前移动方向、当前面朝方向、是否为纠正数据包、是否为关键包中的至少一种。当前移动方向和当前面朝方向通常是相同的,但也有可能不同。
166.步骤1204:判断移动包数据是否是纠正数据包;
167.纠正数据包是服务端在发现第一客户端上报的逻辑位置存在错误的情况下,发送到接收模块的数据包。纠正数据包用于将逻辑位置拉回纠正位置的数据包。接收模块判断接收到的移动数据包是否为纠正数据包。在移动数据包是纠正数据包的情况下,执行步骤1206;在移动数据包不是纠正数据包的情况下,执行步骤1210。
168.步骤1206:清空移动数据包的播放队列;
169.接收模块一旦识别接收到的新的移动数据包是纠正数据包,会对当前存储在播放队列的移动数据包进行清空操作,优先播放当前的纠正数据包。
170.步骤1208:根据纠正数据包将逻辑位置拉回纠正位置;
171.接收模块会根据纠正数据包携带的纠正位置,将当前的逻辑位置拉回到纠正位置,避免造成用户界面上渲染位置的误差。
172.步骤1210:判断移动数据包是否配置有延迟补偿;
173.延时补偿是指接收模块接收到移动数据包,是落后于服务器半个往返时间(round-trip time,rtt),所以接收模块需要把落后的半个rtt时间补偿进来,将补偿后的逻辑位置作为第一虚拟角的逻辑位置去插值。示例性的,落后半个rtt对应的补偿路径可以通过当前第一虚拟角的移动速度v和半个rtt时间t的乘积估算得到。
174.在接收模块的判断结果为接收到的移动数据包不是纠正数据包的情况下,会对移动数据包携带的移动模式是否配置有延迟补偿进行判断。在移动模式配置有延迟补偿的情况下,执行步骤1212;在移动模式未配置有延迟补偿的情况下,执行步骤1214。
175.步骤1212:使用延迟补偿对逻辑位置进行修正,得到补偿后的逻辑位置;
176.在接收模块确定移动数据包携带的移动模式配置有延迟补偿的情况下,需要把落后的半个rtt时间补偿进来,将延时补偿后的位置作为第一虚拟角的逻辑位置去插值。示例性的,落后半个rtt对应的补偿路径可以通过当前第一虚拟角的移动速度v和半个rtt时间t的乘积估算得到。
177.步骤1214:判断移动数据包是否与当前移动模式相同;
178.接收模块判断移动数据包携带的移动模式是否与接收模块的当前移动模式(也即上一移动数据包的移动模式)相同。在移动数据包携带的移动模式与当前移动模式相同的情况下,执行步骤1218;在移动数据包携带的移动模式与当前移动模式不相同的情况下,执行步骤1216。
179.步骤1216:切换到新的移动模式;
180.在移动数据包携带的移动模式与当前移动模式不相同的情况下,将接收模块的移动模式切换到移动数据包携带的移动模式。
181.步骤1218:判断移动数据包是否是关键包;
182.关键包携带的逻辑位置是虚拟角在虚拟环境移动的过程中必然会经过的逻辑位置。
183.接收模块对接收到的移动数据包是否是关键包进行判断。在接收到的移动数据包是关键包的情况下,执行步骤1222;在接收到的移动数据包不是关键包的情况下,执行步骤1220。
184.步骤1220:合并连续的非关键包;
185.在接收模块接收到的移动数据包不是关键包的情况下,会对播放队列中连续的非关键包进行合并。示例性的,合并连续的非关键包是指:用新接收到的非关键包替换掉播放队列中的上一个非关键包。
186.步骤1222:将移动数据包加入播放队列;
187.对于是关键包的移动数据包加入到播放队列进行缓存。播放模块会按照播放队列中的各个移动数据包的排列先后顺序,依次播放移动数据包。
188.步骤1224:播放移动数据包;
189.播放模块对播放队列中的移动数据包进行播放。如图13所示,具体播放过程如下:
190.步骤1226:判断是否有正在播放的移动数据包;
191.播放模块判断当前是否有正在播放的移动数据包。在当前有正在播放的移动数据包的情况下,执行步骤1236;在当前没有正在播放的移动数据包的情况下,执行步骤1228。
192.步骤1228:判断播放队列中是否有移动数据包;
193.在当前没有正在播放的移动数据包的情况下,播放模块会对播放队列中是否存在移动数据包进行判断。在当前播放队列中有移动数据包的情况下,执行步骤1230;在当前播放队列中没有移动数据包的情况下,执行步骤1252。
194.步骤1230:从播放队列中取出一个移动数据包,作为当前的移动数据包;
195.在当前没有正在播放的移动数据包且播放队列中有移动数据包的情况下,则从播放队列中取出一个移动数据包,作为当前的移动数据包。
196.步骤1232:判断移动数据包是否与当前移动模式相同;
197.播放模块判断移动数据包携带的移动模式是否与接收模块的当前移动模式(也即上一移动数据包的移动模式)相同。在移动数据包携带的移动模式与当前移动模式相同的情况下,执行步骤1236;在移动数据包携带的移动模式与当前移动模式不相同的情况下,执行步骤1234。
198.步骤1234:切换移动模式;
199.在移动数据包携带的移动模式与当前移动模式不相同的情况下,播放模块将接收到的移动模式切换到移动数据包携带的移动模式。
200.步骤1236:播放当前的移动数据包;
201.播放模块开始对当前的移动数据包进行播放。
202.步骤1238:判断当前渲染位置是否到达逻辑位置;
203.渲染位置是在用户界面中显示的第一虚拟角的位置。渲染位置是基于逻辑位置
确定的,渲染位置与逻辑位置可能存在差异,并不一定完全相同。示例性的,在第一虚拟角的当前渲染位置未到达逻辑位置的情况下,根据确定的第一虚拟角的移动模式对应的同步计算参数,使当前渲染位置不断向逻辑位置靠近,得到该移动模式对应的第一渲染位置、第二渲染位置、第三渲染位置等,形成用户界面上可视的第一虚拟角的移动轨迹路径。
204.第二客户端根据接收的移动数据包获取第一虚拟角的逻辑位置(或补偿后的逻辑位置),并判断第一虚拟角的当前渲染位置是否到达了逻辑位置(或补偿后的逻辑位置)。在第一虚拟角的当前渲染位置未到达逻辑位置的情况下,执行步骤1240;在第一虚拟角的当前渲染位置已到达逻辑位置的情况下,执行步骤1242。
205.步骤1240:使用内插值算法计算移动速度和移动方向,在计算下一渲染位置;
206.在第一虚拟角的当前渲染位置未达到逻辑位置且逻辑位置可达的情况下,根据与移动模式对应的内插值算法计算第一虚拟角的下一渲染位置(或后续渲染位置)。示例性的,内插值算法是指根据已知的当前渲染位置和逻辑位置,由当前渲染位置向逻辑位置插值得到下一渲染位置以及移动速度和移动方向,从而得到一系列逼近逻辑位置的近似值,从而得到当前渲染位置向逻辑位置不断靠逼近的移动轨迹。
207.步骤1242:判断移动模式是否配置有预表现;
208.预表现参数是指第二客户端尚未接收到来自服务端的最新的移动数据包的情况下,就可以执行预测移动的特性。具有预表现特性的移动模式在第一虚拟角的当前渲染位置已到达逻辑位置还没有收到新的移动数据包时,可以由第二客户端根据当前移动模式以预测方式继续向前移动。
209.第二客户端根据接收的移动数据包获取第一虚拟角的逻辑位置,在第一虚拟角的当前渲染位置已到达逻辑位置的情况下,需要判断第一虚拟角的移动模式是否需要预表现。在第一虚拟角的移动模式配置有预表现的情况下,执行步骤1244;在第一虚拟角的移动模式不需要预表现的情况下,执行步骤1248。
210.步骤1244:判断当前逻辑位置是否已达到预测极限;
211.预测极限是指在第一虚拟角的渲染位置已到达逻辑位置还没有收到新的移动数据包时,可以根据当前的移动模式和移动速度继续向前移动的极限值。示例性的,预测极限可以在时间或者距离上加以限定。在第一虚拟角的移动模式具有预表现特征但是当前的移动位置超过了预测极限位置的情况下,需要停止执行预测向前移动。
212.在第一虚拟角的渲染位置已到达逻辑位置的情况且第一虚拟角的移动模式需要预表现的情况下,判断渲染位置是否到达预测极限位置。在渲染位置未到达预测极限位置的情况下,执行步骤1246;在渲染位置已到达预测极限位置的情况下,执行步骤1248。
213.步骤1246:使用外插值算法计算移动速度和移动方向,在计算下一渲染位置;
214.在第一虚拟角的当前渲染位置已达到逻辑位置且未接收到下一逻辑位置的情况下,根据与移动模式对应的外插值算法计算第一虚拟角的下一渲染位置。示例性的,外插值算法是指将当前渲染位置根据当前的移动模式、当前移动速度沿当前移动方向进行插值的算法。
215.示意性的参考图10,当前第一虚拟角的移动模式为走跑模式,以虚拟环境中的地面作为基准面,以第一虚拟角的当前渲染位置为中心建立世界坐标系,用矩形图标42d
代表第一虚拟角的当前渲染位置,用圆形图标41d代表第一虚拟角的逻辑位置。在第一虚拟角的当前渲染位置42d已到达逻辑位置41d但没有接收到新的逻辑位置时,根据走跑模式对应的线性插值作为外插值算法,由当前渲染位置42d根据当前的走跑模式、单签移动速度沿当前移动方向继续向前进行插值,得到第一渲染位置42e、第二渲染位置42f、第三渲染位置42g,在用户界面上显示预测出的移动轨迹。
216.在一些实施例中,在第一虚拟角的渲染位置已到达逻辑位置、未接收到下一逻辑位置、当前移动模式配置有预表现且当前渲染位置未到达预测极限位置的情况下,根据当前的移动模式对应的外插值算法计算第一虚拟角的下一渲染位置。示例性的,外插值算法是指将渲染位置根据当前的移动模式以及移动速度沿当前移动方向进行插值的算法。
217.在一些实施例中,在外插值算法预测出的下一渲染位置前存在障碍物的情况下,根据扫掠检测可以检测出下一渲染位置是不可达的,则对下一渲染位置进行修正,把修正前的下一渲染位置在障碍物处确定的位置作为修正后的渲染位置。
218.步骤1248:标记当前移动数据包播放完毕;
219.在一些实施例中,第一虚拟角的渲染位置已到达逻辑位置、未接收到下一逻辑位置、移动模式配置有预表现且渲染位置已到达预测极限位置的情况下,标记当前移动数据包播放完毕。
220.在一些实施例中,第一虚拟角的渲染位置已到达逻辑位置、未接收到下一逻辑位置、移动模式未配置预表现,标记当前移动数据包播放完毕。
221.步骤1250:根据移动速度和移动方向,算出当前帧的位置;
222.根据内插值算法或者外插值算法得出的移动速度和移动方向得出第一虚拟角在用户界面中的渲染位置。
223.步骤1252:停止第一虚拟角逻辑位置的移动;
224.第二客户端在当前没有正在播放的移动数据包且在当前播放队列中也没有移动数据包的情况下,会停止第一虚拟角逻辑位置的移动。
225.步骤1254:当前帧结束。
226.当前帧的移动数据包播放结束,开始新的一帧的移动数据包的接收和播放,循环步骤1202至1254。
227.综上所述,本实施例提供的方法,通过为不同的移动模式提供不同的同步计算参数,根据不同的同步计算参数对不同类型的移动数据包进行同步计算,能够保证不同的移动模式下计算得到的渲染位置的平滑性,减少或避免卡顿现象的发生。
228.本实施例提供的方法,还通过对接收到的移动数据包与当前移动模式是否相同进行判断,并在不相同的情况下将接收到的移动数据包切换到新的移动模式,避免了给移动数据包匹配了与当前移动模式不相同的参数造成的误差,提高了对虚拟角移动同步的准确性。
229.图15示出了本技术一个示例性实施例提供的虚拟角的移动同步装置的结构示意图。该装置可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分,该装置1500包括:
230.接收模块1510,用于接收第一虚拟角的移动数据包,所述移动数据包包括所述第一虚拟角的移动模式和逻辑位置,所述逻辑位置用于指示所述第一虚拟角在虚拟世
界中的位置;
231.确定模块1520,用于确定与所述移动模式对应的同步计算参数;
232.播放模块1530,用于基于所述同步计算参数对所述逻辑位置进行同步计算,得到所述第一虚拟角的渲染位置;
233.显示模块1540,用于根据所述渲染位置在用户界面上显示所述第一虚拟角。
234.在本实施例的可选设计中,所述播放模块1530,还用于在所述第一虚拟角的当前渲染位置未到达所述逻辑位置的情况下,基于与所述移动模式对应的内插值算法计算所述第一虚拟角的下一渲染位置;其中,所述内插值算法是将所述当前渲染位置向所述逻辑位置进行插值的算法。
235.在本实施例的可选设计中,所述确定模块1520,还用于在所述移动模式是站立模式的情况下,确定与所述站立模式对应的内插值算法是所述线性插值算法;
236.所述确定模块1520,还用于在所述移动模式是走跑模式的情况下,确定与所述走跑模式对应的内插值算法是样条插值算法;
237.所述确定模块1520,还用于在所述移动模式是游泳模式的情况下,确定与所述游泳模式对应的内插值算法是所述样条插值算法;
238.所述确定模块1520,还用于在所述移动模式是空中模式的情况下,确定与所述空中模式对应的内插值算法是三次样条插值算法;
239.所述确定模块1520,还用于在所述移动模式是美术位移模式的情况下,确定与所述美术位移模式对应的内插值算法是自定义曲线算法;
240.所述确定模块1520,还用于在所述移动模式是自由位移模式的情况下,确定与所述自由位移模式对应的内插值算法是所述线性插值算法;
241.所述确定模块1520,还用于在所述移动模式是路径移动模式的情况下,确定与所述路径移动模式对应的内插值算法是所述线性插值算法。
242.在本实施例的可选设计中,所述播放模块1530,还用于在所述第一虚拟角的当前渲染位置到达所述逻辑位置且未接收到下一逻辑位置的情况下,基于与所述移动模式对应的外插值算法预测所述第一虚拟角的下一渲染位置;其中,所述外插值算法是将所述当前渲染位置沿当前移动方向进行插值的算法。
243.在本实施例的可选设计中,所述确定模块1520,还用于在所述移动模式是站立模式的情况下,确定与所述站立模式对应的外插值算法是所述线性插值算法;
244.所述确定模块1520,还用于在所述移动模式是走跑模式的情况下,确定与所述走跑模式对应的外插值算法是样条插值算法;
245.所述确定模块1520,还用于在所述移动模式是游泳模式的情况下,确定与所述游泳模式对应的外插值算法是所述样条插值算法;
246.所述确定模块1520,还用于在所述移动模式是空中模式的情况下,确定与所述空中模式对应的外插值算法是线性插值算法;
247.所述确定模块1520,还用于在所述移动模式是美术位移模式的情况下,确定与所述美术位移模式对应的外插值算法是自定义曲线算法;
248.所述确定模块1520,还用于在所述移动模式是自由位移模式的情况下,确定与所述自由位移模式对应的外插值算法是所述线性插值算法;
249.所述确定模块1520,还用于在所述移动模式是路径移动模式的情况下,确定与所述路径移动模式对应的外插值算法是所述线性插值算法。
250.在本实施例的可选设计中,所述播放模块1530,还用于在所述第一虚拟角的当前渲染位置到达所述逻辑位置、未接收到下一逻辑位置、所述移动模式配置有预表现且所述渲染位置未到达预测极限位置的情况下,基于与所述移动模式对应的外插值算法计算所述第一虚拟角的下一渲染位置。
251.在本实施例的可选设计中,所述确定模块1520,还用于在所述外插值算法预测出的下一渲染位置前存在障碍物的情况下,确定修正后的下一渲染位置;所述修改后的下一渲染位置是基于修正前的所述下一渲染位置在所述障碍物处确定的位置。
252.在本实施例的可选设计中,所述确定模块1520,还用于在所述移动模式配置有延迟补偿的情况下,基于往返时间rtt对所述逻辑位置进行补偿,得到补偿后的逻辑位置。
253.图16示出了本技术一个示例性实施例提供的终端1600的结构框图。该终端1600可以是:智能手机、平板电脑、mp3播放器(moving picture experts group audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving picture experts group audio layer iv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
254.通常,终端1600包括有:处理器1601和存储器1602。
255.处理器1601可以包括一个或多个处理核心,例如4核心处理器、8核心处理器等。处理器1601可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1601可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1601还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
256.存储器1602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1602还可包括高速随机存取存储器,以及非易失性存储器,例如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1601所执行以实现本技术中方法实施例提供的虚拟世界的画面显示方法。
257.在一些实施例中,终端1600还可选包括有:外围设备接口1603和至少一个外围设备。处理器1601、存储器1602和外围设备接口1603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1603相连。具体地,外围设备包括:射频电路1604、触摸显示屏1605、摄像头1606、音频电路1607和电源1608中的至少一种。
258.外围设备接口1603可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1601和存储器1602。在一些实施例中,处理器1601、存储器1602和外围设备接口1603被集成在同一芯片或电路板上;在一些其他实施例中,处理器1601、存储器
1602和外围设备接口1603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
259.射频电路1604用于接收和发射rf(radio frequency,射频)信号,也称电磁信号。射频电路1604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1604包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wireless fidelity,无线保真)网络。在一些实施例中,射频电路1604还可以包括nfc(near field communication,近距离无线通信)有关的电路,本技术对此不加以限定。
260.显示屏1605用于显示ui(user interface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1605是触摸显示屏时,显示屏1605还具有采集在显示屏1605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1601进行处理。此时,显示屏1605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1605可以为一个,设置终端1600的前面板;在另一些实施例中,显示屏1605可以为至少两个,分别设置在终端1600的不同表面或呈折叠设计;在再一些实施例中,显示屏1605可以是柔性显示屏,设置在终端1600的弯曲表面上或折叠面上。甚至,显示屏1605还可以设置成非矩形的不规则图形,也即异形屏。显示屏1605可以采用lcd(liquid crystal display,液晶显示屏)、oled(organic light-emitting diode,有机发光二极管)等材质制备。
261.摄像头组件1606用于采集图像或视频。可选地,摄像头组件1606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtual reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1606还可以包括闪光灯。闪光灯可以是单温闪光灯,也可以是双温闪光灯。双温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同温下的光线补偿。
262.音频电路1607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1601进行处理,或者输入至射频电路1604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1601或射频电路1604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1607还可以包括耳机插孔。
263.电源1608用于为终端1600中的各个组件进行供电。电源1608可以是交流电、直流电、一次性电池或可充电电池。当电源1608包括可充电电池时,该可充电电池可以是有线充
电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
264.在一些实施例中,终端1600还包括有一个或多个传感器1609。该一个或多个传感器1609包括但不限于:加速度传感器1610、陀螺仪传感器1611、压力传感器1612、光学传感器1613以及接近传感器1614。
265.加速度传感器1610可以检测以终端1600建立的坐标系的三个坐标轴上的加速度大小。例如,加速度传感器1610可以用于检测重力加速度在三个坐标轴上的分量。处理器1601可以根据加速度传感器1610采集的重力加速度信号,控制触摸显示屏1605以横向视图或纵向视图进行用户界面的显示。加速度传感器1610还可以用于游戏或者用户的运动数据的采集。
266.陀螺仪传感器1611可以检测终端1600的机体方向及转动角度,陀螺仪传感器1611可以与加速度传感器1610协同采集用户对终端1600的3d动作。处理器1601根据陀螺仪传感器1611采集的数据,可以实现如下功能:动作感应(例如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。
267.压力传感器1612可以设置在终端1600的侧边框和/或触摸显示屏1605的下层。当压力传感器1612设置在终端1600的侧边框时,可以检测用户对终端1600的握持信号,由处理器1601根据压力传感器1612采集的握持信号进行左右手识别或快捷操作。当压力传感器1612设置在触摸显示屏1605的下层时,由处理器1601根据用户对触摸显示屏1605的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
268.光学传感器1613用于采集环境光强度。在一个实施例中,处理器1601可以根据光学传感器1613采集的环境光强度,控制触摸显示屏1605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1605的显示亮度;当环境光强度较低时,调低触摸显示屏1605的显示亮度。在另一个实施例中,处理器1601还可以根据光学传感器1613采集的环境光强度,动态调整摄像头组件1606的拍摄参数。
269.接近传感器1614,也称距离传感器,通常设置在终端1600的前面板。接近传感器1614用于采集用户与终端1600的正面之间的距离。在一个实施例中,当接近传感器1614检测到用户与终端1600的正面之间的距离逐渐变小时,由处理器1601控制触摸显示屏1605从亮屏状态切换为息屏状态;当接近传感器1614检测到用户与终端1600的正面之间的距离逐渐变大时,由处理器1601控制触摸显示屏1605从息屏状态切换为亮屏状态。
270.本领域技术人员可以理解,图16中示出的结构并不构成对终端1600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
271.根据本技术的另一方面,还提供了一种计算机存储介质,计算机可读存储介质中存储有至少一条程序代码,程序代码由处理器加载并执行以实现如上述的虚拟世界中的声音提示方法。
272.根据本技术的另一方面,还提供了一种计算机程序产品或计算机程序,上述计算机程序产品或计算机程序包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上述的虚拟世界中的声音提示方法。
273.应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
274.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
275.以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。

技术特征:


1.一种虚拟角的移动同步方法,其特征在于,所述方法包括:接收第一虚拟角的移动数据包,所述移动数据包包括所述第一虚拟角的移动模式和逻辑位置,所述逻辑位置用于指示所述第一虚拟角在虚拟世界中的位置;确定与所述移动模式对应的同步计算参数;基于所述同步计算参数对所述逻辑位置进行同步计算,得到所述第一虚拟角的渲染位置;根据所述渲染位置在用户界面上显示所述第一虚拟角。2.根据权利要求1所述的方法,其特征在于,所述基于所述同步计算参数对所述逻辑位置进行同步计算,得到所述第一虚拟角的下一渲染位置,包括:在所述第一虚拟角的当前渲染位置未到达所述逻辑位置的情况下,基于与所述移动模式对应的内插值算法计算所述第一虚拟角的下一渲染位置;其中,所述内插值算法是将所述当前渲染位置向所述逻辑位置进行插值的算法。3.根据权利要求2所述的方法,其特征在于,所述确定与所述移动模式对应的同步计算参数,包括如下步骤中的至少一种:在所述移动模式是站立模式的情况下,确定与所述站立模式对应的内插值算法是所述线性插值算法;在所述移动模式是走跑模式的情况下,确定与所述走跑模式对应的内插值算法是样条插值算法;在所述移动模式是游泳模式的情况下,确定与所述游泳模式对应的内插值算法是所述样条插值算法;在所述移动模式是空中模式的情况下,确定与所述空中模式对应的内插值算法是三次样条插值算法;在所述移动模式是美术位移模式的情况下,确定与所述美术位移模式对应的内插值算法是自定义曲线算法;在所述移动模式是自由位移模式的情况下,确定与所述自由位移模式对应的内插值算法是所述线性插值算法;在所述移动模式是路径移动模式的情况下,确定与所述路径移动模式对应的内插值算法是所述线性插值算法。4.根据权利要求1至3任一所述的方法,其特征在于,所述基于所述同步计算参数对所述逻辑位置进行同步计算,得到所述第一虚拟角的下一渲染位置,包括:在所述第一虚拟角的当前渲染位置到达所述逻辑位置且未接收到下一逻辑位置的情况下,基于与所述移动模式对应的外插值算法预测所述第一虚拟角的下一渲染位置;其中,所述外插值算法是将所述当前渲染位置沿当前移动方向进行插值的算法。5.根据权利要求4所述的方法,其特征在于,所述确定与所述移动模式对应的同步计算参数,包括如下步骤中的至少一种:在所述移动模式是站立模式的情况下,确定与所述站立模式对应的外插值算法是所述线性插值算法;在所述移动模式是走跑模式的情况下,确定与所述走跑模式对应的外插值算法是样条插值算法;
在所述移动模式是游泳模式的情况下,确定与所述游泳模式对应的外插值算法是所述样条插值算法;在所述移动模式是空中模式的情况下,确定与所述空中模式对应的外插值算法是线性插值算法;在所述移动模式是美术位移模式的情况下,确定与所述美术位移模式对应的外插值算法是自定义曲线算法;在所述移动模式是自由位移模式的情况下,确定与所述自由位移模式对应的外插值算法是所述线性插值算法;在所述移动模式是路径移动模式的情况下,确定与所述路径移动模式对应的外插值算法是所述线性插值算法。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述第一虚拟角的当前渲染位置到达所述逻辑位置、未接收到下一逻辑位置、所述移动模式配置有预表现且所述渲染位置未到达预测极限位置的情况下,基于与所述移动模式对应的外插值算法计算所述第一虚拟角的下一渲染位置。7.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述外插值算法预测出的下一渲染位置前存在障碍物的情况下,确定修正后的下一渲染位置;所述修改后的下一渲染位置是基于修正前的所述下一渲染位置在所述障碍物处确定的位置。8.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:在所述移动模式配置有延迟补偿的情况下,基于往返时间rtt对所述逻辑位置进行补偿,得到补偿后的逻辑位置。9.一种虚拟角的移动同步装置,其特征在于,所述装置包括:接收模块,用于接收第一虚拟角的移动数据包,所述移动数据包包括所述第一虚拟角的移动模式和逻辑位置,所述逻辑位置用于指示所述第一虚拟角在虚拟世界中的位置;确定模块,用于确定与所述移动模式对应的同步计算参数;计算模块,用于基于所述同步计算参数对所述逻辑位置进行同步计算,得到所述第一虚拟角的渲染位置;显示模块,用于根据所述渲染位置在用户界面上显示所述第一虚拟角。10.根据权利要求9所述的装置,其特征在于,所述计算模块,用于在所述第一虚拟角的当前渲染位置未到达所述逻辑位置的情况下,基于与所述移动模式对应的内插值算法计算所述第一虚拟角的下一渲染位置;其中,所述内插值算法是将所述渲染位置向所述逻辑位置进行插值的算法。11.根据权利要求10所述的装置,其特征在于,所述确定模块,用于执行如下步骤中的至少一种:在所述移动模式是站立模式的情况下,确定与所述站立模式对应的内插值算法是所述线性插值算法;在所述移动模式是走跑模式的情况下,确定与所述走跑模式对应的内插值算法是样条插值算法;
在所述移动模式是游泳模式的情况下,确定与所述游泳模式对应的内插值算法是所述样条插值算法;在所述移动模式是空中模式的情况下,确定与所述空中模式对应的内插值算法是三次样条插值算法;在所述移动模式是美术位移模式的情况下,确定与所述美术位移模式对应的内插值算法是自定义曲线算法;在所述移动模式是自由位移模式的情况下,确定与所述自由位移模式对应的内插值算法是所述线性插值算法;在所述移动模式是路径移动模式的情况下,确定与所述路径移动模式对应的内插值算法是所述线性插值算法。12.根据权利要求9所述的装置,其特征在于,所述计算模块,用于在所述第一虚拟角的当前渲染位置到达所述逻辑位置且未接收到下一逻辑位置的情况下,基于与所述移动模式对应的外插值算法预测所述第一虚拟角的下一渲染位置;其中,所述外插值算法是将所述渲染位置沿当前移动方向进行插值的算法。13.根据权利要求12所述的装置,其特征在于,所述确定模块,用于执行如下步骤中的至少一种:在所述移动模式是站立模式的情况下,确定与所述站立模式对应的外插值算法是所述线性插值算法;在所述移动模式是走跑模式的情况下,确定与所述走跑模式对应的外插值算法是样条插值算法;在所述移动模式是游泳模式的情况下,确定与所述游泳模式对应的外插值算法是所述样条插值算法;在所述移动模式是空中模式的情况下,确定与所述空中模式对应的外插值算法是线性插值算法;在所述移动模式是美术位移模式的情况下,确定与所述美术位移模式对应的外插值算法是自定义曲线算法;在所述移动模式是自由位移模式的情况下,确定与所述自由位移模式对应的外插值算法是所述线性插值算法;在所述移动模式是路径移动模式的情况下,确定与所述路径移动模式对应的外插值算法是所述线性插值算法。14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一段程序;所述至少一段程序由所述处理器加载并执行以实现如权利要求1至8任一所述的虚拟角的移动同步方法。15.一种计算机可读存储介质,其特征在于,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一所述的虚拟角的移动同步方法。

技术总结


本申请公开了一种虚拟角的移动同步方法、装置、设备及存储介质,属于数据同步领域。所述方法包括:接收第一虚拟角的移动数据包,所述移动数据包包括所述第一虚拟角的移动模式和逻辑位置,所述逻辑位置用于指示所述第一虚拟角在虚拟世界中的位置;确定与所述移动模式对应的同步计算参数;基于所述同步计算参数对所述逻辑位置进行同步计算,得到所述第一虚拟角的渲染位置;根据所述渲染位置在用户界面上显示所述第一虚拟角。本申请能够基于不同的移动模式采用不同的同步计算策略,有效避免卡顿现象。有效避免卡顿现象。有效避免卡顿现象。


技术研发人员:

陈栋 董根 陈猛

受保护的技术使用者:

腾讯科技(深圳)有限公司

技术研发日:

2021.12.27

技术公布日:

2023/3/10

本文发布于:2024-09-24 16:31:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/67491.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:位置   所述   模式   角色
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议