1.本技术涉及计算机技术领域,特别涉及位置更新方法及装置。
背景技术:
2.随着互联网技术的发展,用户对游戏的真实度要求越来越高,各大游戏厂商为了能够向用户提供的更加优质的游玩体验,在游戏开发、测试、发布阶段都会对游戏不断的进行更新。现有技术中,ik技术作为一种应用较为广泛的手段,其目的是为了能够让游戏角色更真实的贴合实际游戏环境,其原理是从角色的脚部插槽往下做射线完成检测。但是当游戏角色需要接触的接触面是动态的情况下,通过现有的ik技术可能就无法达到合理效果,并且会因为接触面的动态变化,致使游戏角色相对于动态接触面没有一个真实的展示效果,因此亟需一种有效的方案以解决上述问题。
技术实现要素:
3.有鉴于此,本技术实施例提供了一种位置更新方法,以解决现有技术中存在的技术缺陷。本技术实施例同时提供了一种位置更新装置,一种计算设备,以及一种计算机可读存储介质。
4.根据本技术实施例的第一方面,提供了一种位置更新方法,包括:
5.获取虚拟角色的目标骨骼对应的骨骼位置;
6.根据所述骨骼位置确定所述目标骨骼映射在动态接触面的映射位置;
7.基于所述映射位置建立所述虚拟角色与所述动态接触面的位置关系;
8.在所述动态接触面相对于所述虚拟角色运动的情况下,按照所述位置关系对所述虚拟角色的位置进行更新。
9.可选地,所述获取虚拟角色的目标骨骼对应的骨骼位置,包括:
10.在所述虚拟角色对应的角色骨骼中选择与所述动态接触面距离最近的目标角色骨骼作为所述目标骨骼;
11.确定所述虚拟角色所属的世界坐标系,并基于所述世界坐标系确定所述目标骨骼对应的骨骼位置。
12.可选地,所述获取虚拟角色的目标骨骼对应的骨骼位置步骤执行之前,还包括:
13.在所述虚拟角色与所述动态接触面之间存在倾斜角度的情况下,根据所述倾斜角度对所述虚拟角色进行旋转;
14.其中,旋转后的虚拟角色与所述动态接触面垂直。
15.可选地,所述根据所述骨骼位置确定所述目标骨骼映射在动态接触面的映射位置,包括:
16.在所述骨骼位置和所述动态接触面之间创建辅助线;
17.基于所述动态接触面与所述辅助线的交点确定接触点,并将所述接触点的位置作为所述映射位置。
18.可选地,所述基于所述映射位置建立所述虚拟角色与所述动态接触面的位置关系,包括:
19.在所述动态接触面上确定所述虚拟角色对应的接触位置,并确定所述接触位置对应的坐标系;
20.在所述坐标系中确定所述映射位置对应的映射坐标信息,以及所述接触位置对应的接触坐标信息;
21.根据所述映射坐标信息和所述接触坐标信息,计算所述接触位置和所述映射位置之间的偏移量;
22.基于所述偏移量确定所述虚拟角色与所述动态接触面之间的所述位置关系。
23.可选地,所述按照所述位置关系对所述虚拟角色的位置进行更新,包括:
24.确定在当前动画帧中所述目标骨骼在世界坐标系中的初始位置;
25.基于所述位置关系对所述初始位置进行调整,根据调整结果对所述当前动画帧中的所述虚拟角色的位置进行更新。
26.可选地,所述按照所述位置关系对所述虚拟角色的位置进行更新步骤执行之后,还包括:
27.确定所述动态接触面的运动周期,并将所述运动周期内的动画帧按照时间顺序进行拼接;
28.根据拼接结果生成包含所述虚拟角色和所述动态接触面的目标动画并展示。
29.可选地,所述获取虚拟角色的目标骨骼对应的骨骼位置步骤执行之后,还包括:
30.确定所述虚拟角色与所述动态接触面的偏转角度;
31.按照所述偏转角度对所述虚拟角色与所述动态接触面的角度关系进行调整。
32.可选地,所述确定所述虚拟角色与所述动态接触面的偏转角度,包括:
33.在所述动态接触面中确定所述接触位置对应的父骨骼;
34.确定所述父骨骼与所述接触位置所属的接触骨骼的目标偏转角度,作为所述虚拟角色与所述动态接触面的偏转角度。
35.根据本技术实施例的第二方面,提供了一种位置更新装置,包括:
36.获取模块,被配置为获取虚拟角色的目标骨骼对应的骨骼位置;
37.确定模块,被配置为根据所述骨骼位置确定所述目标骨骼映射在动态接触面的映射位置;
38.建立模块,被配置为基于所述映射位置建立所述虚拟角色与所述动态接触面的位置关系;
39.更新模块,被配置为在所述动态接触面相对于所述虚拟角色运动的情况下,按照所述位置关系对所述虚拟角色的位置进行更新。
40.根据本技术实施例的第三方面,提供了一种计算设备,包括:
41.存储器和处理器;
42.所述存储器用于存储计算机可执行指令,所述处理器执行所述计算机可执行指令时实现所述位置更新方法的步骤。
43.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述位置更新方法的步骤。
44.根据本技术实施例的第五方面,提供了一种芯片,其存储有计算机程序,该计算机程序被芯片执行时实现所述位置更新方法的步骤。
45.本技术提供的位置更新方法,为了能够实现虚拟角色随着动态接触面的运动一起运动,在获取到虚拟角色的目标骨骼对应的骨骼位置后,可以根据骨骼位置确定目标骨骼映射在动态接触面的映射位置,之后基于映射位置建立虚拟角色与动态接触面之间的位置关系,当动态接触面相对于虚拟角色运动的情况下,即可按照位置关系由动态接触面上的接触点的位置对虚拟角色的位置进行更新,实现在动态接触面运动的情况下,可以使得与动态接触面接触的虚拟角色一起运动,并且通过位置关系可以保证虚拟角色与动态接触面之间的贴合度,从而向用户展示更加真实的虚拟场景。
附图说明
46.图1是本技术一实施例提供的一种位置更新方法的流程图;
47.图2是本技术一实施例提供的一种位置更新方法中位置更新的示意图;
48.图3是本技术一实施例提供的一种应用于游戏场景中的位置更新方法的处理流程图;
49.图4是本技术一实施例提供的一种位置更新装置的结构示意图;
50.图5是本技术一实施例提供的一种计算设备的结构框图。
具体实施方式
51.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
52.在本技术一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术一个或多个实施例。在本技术一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本技术一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
53.应当理解,尽管在本技术一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。
54.在本技术中,提供了一种位置更新方法。本技术同时涉及一种位置更新装置、一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
55.实际应用中,在3d画师在制作动画时,基本上都是基于水平地面去制作的。但是游戏内的地形一般会较为复杂,地形会有各种高低起伏,还会有例如小石头、木箱等环境元素。也就是说,角色在游戏中运动的过程,面对的是极为复杂的地理环境。而脚部ik技术是为了能够让角色更真实的贴合复杂的游戏环境的技术。
56.在gameplay中,角色的碰撞都是基于胶囊体的物理碰撞,当胶囊体被其他物体的碰撞盒抬高时,角色脚部会出现浮空的现象,此时从角色的脚部插槽沿着世界的z轴往下做
射线检测,检测到实际地面的高度与胶囊体底部高度的差值,即为脚部需要补偿的距离,两只脚的补偿距离可能会不一样,盆骨的调整以较低的差值为目标值,从而达到通过调整角色的mesh(网格体)骨骼将角色的脚部贴合实际地面。
57.但是当脚下的地形并不是静止的状态,而是动态的时候,之前的ik技术就无法达到合理的效果。因为接触面的动态的,角色胶囊体与之接触,会因为接触面的运动导致物理碰撞计算不断更新而晃动,脚部插槽往下做射线返回的实际高度也是不确定的,一直在变化,因此会产生脚部骨骼一直在调整的现象,且这种调整和接触面的运动是没有任何关联性的。
58.有鉴于此,本技术提供的位置更新方法,为了能够实现虚拟角色随着动态接触面的运动一起运动,在获取到虚拟角色的目标骨骼对应的骨骼位置后,可以根据骨骼位置确定目标骨骼映射在动态接触面的映射位置,之后基于映射位置建立虚拟角色与动态接触面之间的位置关系,当动态接触面相对于虚拟角色运动的情况下,即可按照位置关系由动态接触面上的接触点的位置对虚拟角色的位置进行更新,实现在动态接触面运动的情况下,可以使得与动态接触面接触的虚拟角色一起运动,并且通过位置关系可以保证虚拟角色与动态接触面之间的贴合度,从而向用户展示更加真实的虚拟场景。
59.图1示出了根据本技术一实施例提供的一种位置更新方法的流程图,具体包括以下步骤:
60.步骤s102,获取虚拟角色的目标骨骼对应的骨骼位置。
61.具体的,虚拟角色具体是指需要通过终端设备展示的角色,包括但不限于游戏场景中的游戏角色,vr场景中的交互角色,人机互动场景中的模拟角色等。相应的,目标骨骼具体是指虚拟角色的角色骨骼中与接触面需要进行接触的骨骼,包括但不限于脚部骨骼,手部骨骼,盆骨骨骼等;当虚拟角色站立在接触面上时,目标骨骼可以是脚部骨骼;当虚拟角色用手部支撑地面倒立时,目标骨骼可以是手部骨骼;当虚拟角色坐在接触面上时,目标骨骼可以是盆骨骨骼。相应的,骨骼位置具体是指目标骨骼在虚拟角色所属的世界坐标系中的位置。
62.本实施例以所述虚拟角色为游戏场景中的游戏角色为例,对位置更新方法进行说明,其他应用场景中的描述内容均可参见本实施例相同或相应的描述内容,在此不作过多赘述。
63.基于此,为了能够保证虚拟角色与动态接触面进行接触时,可以展示真实的接触效果,且会随着动态接触面的运动而运动,此时可以先确定虚拟角色与动态接触面需要接触的目标骨骼,并以目标骨骼的骨骼位置为基础进行后续的位置调整,保证动态接触面与目标骨骼接触时,可以符合真实接触效果,二者能够一起运动,从而向玩家提供更加真实的游戏体验。
64.进一步的,考虑到虚拟角色在被建立时包含多个角色骨骼,当虚拟角色与动态接触面接触时,为了能够保证与动态接触面接触的骨骼与动态接触面之间具有更真实的接触效果,可以从多个角色骨骼中选择目标骨骼,并确定其对应的骨骼位置,本实施例中,具体实现方式如下:
65.在所述虚拟角色对应的角色骨骼中选择与所述动态接触面距离最近的目标角色骨骼作为所述目标骨骼;
66.确定所述虚拟角色所属的世界坐标系,并基于所述世界坐标系确定所述目标骨骼对应的骨骼位置。
67.具体的,角色骨骼具体是指虚拟角色对应的全部骨骼,包括但不限于虚拟角色的脚部骨骼,手部骨骼,盆骨骨骼,头部骨骼等。相应的,目标角色骨骼具体是指与动态接触面接触距离最近的角色骨骼,其中角色骨骼与动态接触面的距离为二者之间的直线距离。相应的,动态接触面具体是指游戏场景中承载虚拟角色的表面,且该表面会因为设定而发生变化,例如波动的水面、泥坑等,或者能够站立游戏角色的元素,如竹子、树枝等,即能够供虚拟角色站立的且能够运动的表面。相应的,世界坐标系具体是指覆盖全部游戏场景的坐标系,游戏场景中的任意一个虚拟对象在该坐标系中都具有相应的坐标信息。
68.基于此,为了能够实现后续可以支持虚拟角色随着动态基础面的运动而一起运动,需要优先建立动态基础面与虚拟角色的位置关系,因此为了能够保证后续在调整虚拟角色的位置时,不会造成虚拟角色产生形变,可以在虚拟角色的角色骨骼中选择与动态接触面距离合适的目标角色骨骼作为目标骨骼,如选择与动态接触面距离最近的目标角色骨骼作为目标骨骼;之后确定虚拟角色所属的世界坐标系,并在该坐标系中确定目标骨骼对应的骨骼位置,以方便后续结合该骨骼位置对虚拟角色进行位置调整,保证虚拟角色与动态接触面的接触真实性,且二者能够共同运动。
69.此外,考虑到虚拟角色接触的动态接触面存在倾斜角度,如果虚拟角色站立在存在倾斜角度的动态接触面时,如果不对虚拟角色的站立角度进行调整,则会导致最终展示的效果出现虚拟角色的脚部无法贴合动态接触面;因此当动态接触面存在倾斜角度时,还需要对虚拟角色的站立角度进行调整,本实施例中,具体实现方式如下:
70.在所述虚拟角色与所述动态接触面之间存在倾斜角度的情况下,根据所述倾斜角度对所述虚拟角色进行旋转;其中,旋转后的虚拟角色与所述动态接触面垂直。
71.具体的,倾斜角度具体是指当前时刻虚拟角色站立在动态接触面上所呈现的夹角。基于此,当虚拟角色与动态接触面之间存在倾斜角度的情况下,且该倾斜角度不等于90度,则此时可以计算倾斜角度与90度的角度差,之后按照该角度差对虚拟角色进行旋转,从而保证旋转后的虚拟角色与动态接触面垂直,方便后续对虚拟角色相对于动态接触面的高度进行调整。
72.举例说明,当游戏角色需要站立在游戏场景中的某个湖面上的情况下,此时可以根据当前帧游戏角色与湖面角度差,对游戏角色mesh进行旋转,使得游戏角色可以垂直于当前帧中的湖面。进一步的,确定游戏角色在当前帧中站立在湖面上,此时确定游戏角色的脚部骨骼与湖面的距离最近,则在游戏角色所属的世界坐标系中确定脚部骨骼对应的骨骼位置,以方便后续调整游戏角色与湖面之间的高度,实现在湖面波动的情况下游戏角色也可以随之摆动。
73.综上,考虑到存在倾斜角度的动态接触面对虚拟角色的站立效果产生影响,可以结合动态接触面的倾斜角度对虚拟角色进行旋转,从而保证任意帧虚拟角色都是垂直于动态接触面的,以提高两者之间的接触真实性,且后续能够以此出发完成位置调整。
74.步骤s104,根据所述骨骼位置确定所述目标骨骼映射在动态接触面的映射位置。
75.具体的,在上述获取到目标骨骼的骨骼位置后,进一步的,为了能够保证虚拟角色与动态接触面接触时更加贴合,且不会造成虚拟角色发生变形,可以结合目标骨骼的骨骼
位置确定目标骨骼映射在接触面上的映射位置,从而方便后续结合映射位置对虚拟角色相对于动态接触面的高度进行调整,并建立二者之间的位置关系,保证动态接触面运动的情况下虚拟角色也能够一起运动。其中,映射位置具体是指目标骨骼所在的位置映射到动态接触面后,映射点所对应的位置。通过映射位置可以计算出当前帧虚拟角色相对于动态接触面需要移动的距离。
76.进一步的,在基于目标骨骼的骨骼位置确定映射位置的过程中,考虑到目标骨骼的位置与动态接触面之间可能存在正/负距离,因此需要通过创建辅助线的方式完成映射位置的确定,本实施例中,具体实现方式如下:
77.在所述骨骼位置和所述动态接触面之间创建辅助线;
78.基于所述动态接触面与所述辅助线的交点确定接触点,并将所述接触点的位置作为所述映射位置。
79.具体的,辅助线具体是指以骨骼位置为起点向动态接触面做的射线;相应的,接触点具体是指辅助线与接触面接触的唯一点,表征虚拟角色与动态接触面贴合接触的情况下,与虚拟角色的目标骨骼的骨骼位置相接近。
80.基于此,为了能够保证确定映射位置的精准度,可以根据目标骨骼位置确定目标骨骼的骨骼位置,并以骨骼位置为起点向当前帧中的动态接触面方向做射线,根据射线与动态接触面之间的接触点,确定映射位置,以方便后续结合映射位置对虚拟角色相对于动态接触面的距离进行调整,且保证二者相对应平行,每帧都可以维持该平行关系,且距离保持不变,展示出虚拟角色随着动态接触面的运动而运动的展示效果。
81.需要说明的是,由于虚拟角色的目标骨骼可能因为游戏设定问题,导致目标骨骼可能位于当前帧中的动态接触面的上方或者下方;因此在建立辅助线时,需要以目标骨骼为起点向动态接触面做射线,以精准的确定映射位置。
82.沿用上例,确定当前帧游戏角色站立在湖面上后,此时以游戏角色的脚部插槽位置为起点向当前帧中的湖面做射线,根据射线与湖面的接触点确定脚部骨骼在湖面上的映射位置,将该映射位置作为脚部ik的目标位置,方便后续进行在每帧中动态调整游戏角色的位置。
83.综上,通过采用做辅助线的方式确定映射位置,可以保证映射位置的精准度,以方便后续可以结合映射位置对虚拟角色进行调整,保证每帧中都能够基于此维持动态接触面与虚拟角色之间的位置关系,从而提高展示效果。
84.此外,为了能够实现虚拟角色的目标骨骼姿态比较合理,会根据接触面选择一个合适的偏移角度,例如与接触面平行,以偏转角度为基础对虚拟角色与动态接触面之间的偏转角度进行调整。在本实施例中,具体实现方式如步骤s1042至步骤s1044:
85.步骤s1042,确定所述虚拟角色与所述动态接触面的偏转角度。
86.具体的,偏转角度具体是指调整虚拟角色相对于动态接触面的角度,调整后的偏转角度能够使得虚拟角色与动态接触面之间的位置关系更加符合真实场景。
87.进一步的,在确定虚拟角色与动态接触面之间的偏转角度时,可以结合接触位置的父骨骼确定,本实施例中,具体实现方式如下:
88.在所述动态接触面中确定所述接触位置对应的父骨骼;
89.确定所述父骨骼与所述接触位置所属的接触骨骼的目标偏转角度,作为所述虚拟
角色与所述动态接触面的偏转角度。
90.具体的,父骨骼具体是指接触位置所属的接触骨骼连接的骨骼;例如接触骨骼是竹子的第三节,父骨骼即为竹子的第二节;再或者接触骨骼是剑尖,父骨骼即为剑身。相应的,目标偏转角度具体是指接触位置的父骨骼看向接触点的方向所产生的偏差角度。
91.也就是说,在确定偏转角度后,可以将该偏转角度作为虚拟角色目标骨骼的偏转角度,即在确定目标偏转角度后,可以按照目标偏转角度旋转虚拟角色的目标骨骼。
92.综上,通过采用目标骨骼的父骨骼对虚拟角色相对于动态接触面的角度进行调整,可以将虚拟角色作为一个整体完成角度偏转,不仅可以提高后续每帧中动态接触面与虚拟角色之间的位置关系,还能够提高展示效果。
93.此外,在计算偏转角度时,为了能够保证虚拟角色的灵活性,还可以基于动态接触面的法线方向确定偏转角度,再或者将虚拟角色相对于动态接触面平行,实际应用中,可以根据实际需求选择合适的方法进行偏转角度的计算,本实施例在此不作任何限定。
94.步骤s1044,按照所述偏转角度对所述虚拟角色与所述动态接触面的角度关系进行调整。
95.基于此,由于虚拟角色作为一个整体需要后续进行位置的调整,而目标骨骼是与动态接触面距离最近的骨骼,如果按照目标骨骼对虚拟角色进行位置修正,可能会导致虚拟角色发生形变,且还会存在修正角度不充分的问题。因此为了能够保证虚拟角色垂直于动态接触面,为后续的位置调整打好基础,可以在确定偏转角度后,再按照偏转角度对虚拟角色相对于动态接触面的角度进行调整即可,即按照偏转角度对虚拟角色的目标骨骼相对于动态接触面的角度进行调整,从而支持后续在每帧中都能够保证虚拟角色垂直于动态接触面。
96.举例说明,游戏角色站立在竹子的第七节上,基于游戏角色的重量会将竹子的第七节压弯,此时为了能够保证位姿合理,可以选择第七节的父骨骼,即竹子的第六节作为父骨骼,之后按照第七节和第六节的夹角对游戏角色的脚部骨骼进行调整,使得游戏角色的脚面可以贴合接触点竹子的弯曲面,从而展示画面更加合理真实。
97.步骤s106,基于所述映射位置建立所述虚拟角色与所述动态接触面的位置关系。
98.具体的,在上述确定虚拟角色相对于动态接触面的映射位置后,进一步的,为了能够在后续的每帧中都能够保持动态接触面与虚拟角色的相对位置关系,以展示出虚拟角色随着动态接触面的运动而运动的效果,可以基于映射位置建立虚拟角色与动态接触面上合适的接触点在当前帧中的位置关系,以方便后续可以按照该位置关系对每帧中的相对位置关系进行调整,保证二者更加贴合的情况下支持随动的效果。其中,位置关系具体是指动态接触面与虚拟角色之间的相对位置关系,即二者之间的相对直线距离。
99.进一步的,在确定虚拟角色与动态接触面之间的位置关系时,考虑到映射位置是基于虚拟角色的目标骨骼确定,而目标骨骼在世界坐标系中并不存在坐标信息,仅存在虚拟角色的位置信息,因此需要在同一坐标系下确定映射位置与动态接触面上的合适的接触点的位置关系,才能够确定虚拟角色与动态接触面之间的位置关系,本实施例中,具体实现方式如下:
100.在所述动态接触面上确定所述虚拟角色对应的接触位置,并确定所述接触位置对应的坐标系;
101.在所述坐标系中确定所述映射位置对应的映射坐标信息,以及所述接触位置对应的接触坐标信息;
102.根据所述映射坐标信息和所述接触坐标信息,计算所述接触位置和所述映射位置之间的偏移量;
103.基于所述偏移量确定所述虚拟角色与所述动态接触面之间的所述位置关系。
104.具体的,接触位置具体是指在动态接触面上选择的接触点,该接触位置可以根据目标骨骼与动态接触面之间的距离确定,接触位置用于支持虚拟角色相对于动态接触面运动,也就是说,接触位置将建立与虚拟角色的绑定关系,使得动态接触面无论如何进行运动,虚拟角色都能够相对于接触位置绑定,使得在每帧与动态接触面都能够保持相同的位置关系。相应的,映射坐标信息具体是指映射位置在世界坐标系中的坐标信息;相应的,接触坐标信息具体是指接触位置在世界坐标系中的坐标信息;偏移量即为映射位置和接触位置在坐标系中的相对距离。
105.基于此,为了能够精准的确定当前帧中虚拟角色相对于动态接触面的位置关系,保证后续的每一帧中都可以以该位置关系为基础进行虚拟角色的位置更新,以展示出虚拟角色随着动态接触面运动而运动的效果。可以在动态接触面上确定合适的点作为虚拟角色对应的接触位置,并确定接触位置对应的坐标系,之后在该坐标系中定位映射位置对应的映射坐标信息,以及接触位置对应的接触坐标信息。再根据映射坐标信息和接触坐标信息,即可计算出接触位置和映射位置之间的偏移量,也就是映射位置的相对位置偏移,最后再按照该偏移量建立虚拟角色与动态接触面之间的位置关系即可,实现后续在每一帧中都可以控制虚拟角色与动态接触面中的接触位置使该位置偏移,从而使得虚拟角色可以同动态接触面一起运动。
106.实际应用中,在计算偏移量时,考虑到计算精准度,可以以虚拟角色对应的碰撞检测体完成,也就是说,确定碰撞检测体的底部在本地坐标系中的坐标信息,基于该坐标信息和映射坐标信息即可计算出偏移量。
107.沿用上例,在湖面上选择接触点,并确定接触点对应的本地坐标系,在本地坐标系中确定脚部ik的目标位置的坐标为(x1,y1,z1),以及接触点的坐标为(x2,y2,z2),之后将接触点坐标作为基准点,结合脚部ik的目标位置的坐标(x1,y1,z1)和接触点的坐标(x2,y2,z2),计算偏移量为(x3,y3,z3),即脚步ik的目标位置基于接触点的本地坐标系的新位置为(x3,y3,z3);方便后续每帧都可以依据该帧接触点的坐标和偏移量(x3,y3,z3)对游戏角色的位置进行更新,使得游戏角色可以与接触点绑定,实现游戏角色可以随着湖面的波动而运动。
108.综上,通过在本地坐标系中定位映射位置的坐标信息和接触位置的坐标信息,可以使得接触位置和映射位置在同一坐标系中进行体现,从而能够精准的计算二者之间的偏移量,并基于该偏移量确定虚拟角色与动态接触面在当前帧中的位置关系,方便后续在每帧中都可以以该位置关系为基础进行位置调整。
109.步骤s108,在所述动态接触面相对于所述虚拟角色运动的情况下,按照所述位置关系对所述虚拟角色的位置进行更新。
110.具体的,在上述建立完成虚拟角色与动态接触面之间的位置关系后,进一步的,为了能够保证后续虚拟角色与动态接触面更加贴合,且二者能够随动,可以在动态接触面相
对于虚拟角色运动的情况下,按照位置关系对虚拟角色的位置进行更新,也就是说,后续的每帧中,动态接触面中的接触位置若发生运动,此时虚拟角色将在每帧中都按照位置关系进行位置调整,使得虚拟角色可以相对于动态接触面中的接触位置具有恒定的相对距离,以展示出二者随动的效果。即动态接触面的运动带动接触位置发生位置变化,而接触位置与虚拟角色绑定,则在每帧中都结合偏移量完成位置更新。
111.进一步的,在按照位置关系对虚拟角色进行位置更新时,由于每帧动态接触面与虚拟角色之间的距离都会发生改变,因此需要通过位置关系进行调整,本实施例中,具体实现方式如下:
112.确定在当前动画帧中所述目标骨骼在世界坐标系中的初始位置;
113.基于所述位置关系对所述初始位置进行调整,根据调整结果对所述当前动画帧中的所述虚拟角色的位置进行更新。
114.具体的,初始位置具体是指当前动画帧中目标骨骼在世界坐标系中的位置,且此时基于初始位置可以确定虚拟角色与运动中的动态接触面在当前动画帧中的距离,为了能够保证虚拟角色与动态接触面可以随动,且不会发生距离过大或过小的问题,可以按照位置关系对初始位置进行调整。
115.基于此,首先确定在当前动画帧中目标骨骼在世界坐标系中的初始位置,其次基于位置关系对初始位置进行调整,最后即可根据调整结果对当前动画帧中的虚拟角色的位置进行更新,使得虚拟角色始终保持与动态接触面相对距离恒定,且不会因为动态接触面的运动而发生变化,此时虚拟角色即可实现与动态接触面随动。
116.综上,通过在每帧中都按照位置关系对虚拟角色相对于动态接触面中的接触位置的位置进行调整,可以保证虚拟角色相对于动态接触面中的接触位置是距离恒定的,进而实现二者随动的展示效果。
117.此外,为了能够节省计算资源的消耗,且能够保证虚拟角色与动态接触面随动,可以在运动周期中的每一帧都按照位置关系进行位置的调整,以生成目标动画,本实施例中,具体实现方式如下:
118.确定所述动态接触面的运动周期,并将所述运动周期内的动画帧按照时间顺序进行拼接;
119.根据拼接结果生成包含所述虚拟角色和所述动态接触面的目标动画并展示。
120.具体的,运动周期具体是指动态接触面发生运动变化的周期;相应的,目标动画具体是指在每帧中对虚拟角色相对于动态接触面的位置进行调整后的动画,且在该动画中,虚拟角色相对于动态接触面一起运动。
121.基于此,首先确定动态接触面的运动周期,以按照该运动周期对已经完成位置调整的动画帧进行拼接,根据拼接结果即可创建出包含虚拟角色和动态接触面的目标动画,并展示即可。
122.沿用上例,参见图2中(a)所示的示意图,游戏角色在第一帧中相对于湖面的距离是s1,之后在每帧脚部ik调整中,通过获取脚部骨骼的世界坐标信息,并叠加第一帧中的偏移量(x3,y3,z3),得到后续的每一帧中脚部ik目标位置,实现在湖面波动时,游戏角色在每帧都按照(x3,y3,z3)进行位置的调整,从而使得游戏角色相对于湖面的运动而运动,以展示出如图2中(b)和图2中(c)的效果,图2中(b)和图2中(c)为目标动画中的任意两帧。
123.本技术提供的位置更新方法,为了能够实现虚拟角色随着动态接触面的运动一起运动,在获取到虚拟角色的目标骨骼对应的骨骼位置后,可以根据骨骼位置确定目标骨骼映射在动态接触面的映射位置,之后基于映射位置建立虚拟角色与动态接触面之间的位置关系,当动态接触面相对于虚拟角色运动的情况下,即可按照位置关系由动态接触面上的接触点的位置对虚拟角色的位置进行更新,实现在动态接触面运动的情况下,可以使得与动态接触面接触的虚拟角色一起运动,并且通过位置关系可以保证虚拟角色与动态接触面之间的贴合度,从而向用户展示更加真实的虚拟场景。
124.下述结合附图3,以本技术提供的位置更新方法在游戏场景中应用为例,对所述位置更新方法进行进一步说明。其中,图3示出了本技术一实施例提供的一种应用游戏场景中的位置更新方法的处理流程图,具体包括以下步骤:
125.步骤s302,在虚拟角色对应的角色骨骼中选择与动态接触面距离最近的目标角色骨骼作为目标骨骼。
126.步骤s304,确定所虚拟角色所属的世界坐标系,并基于世界坐标系确定目标骨骼对应的骨骼位置。
127.步骤s306,在骨骼位置和动态接触面之间创建辅助线。
128.步骤s308,基于动态接触面与辅助线的交点确定接触点,并将接触点的位置作为映射位置。
129.步骤s310,在动态接触面上确定虚拟角色对应的接触位置,并确定接触位置对应的坐标系,在坐标系中确定映射位置对应的映射坐标信息,以及接触位置对应的接触坐标信息。
130.步骤s312,根据映射坐标信息和接触坐标信息,计算接触位置和映射位置之间的偏移量。
131.步骤s314,基于偏移量确定虚拟角色与动态接触面之间的位置关系。
132.步骤s316,在动态接触面相对于虚拟角色运动的情况下,确定在当前动画帧中目标骨骼在世界坐标系中的初始位置。
133.步骤s318,基于位置关系对初始位置进行调整,根据调整结果对当前动画帧中的虚拟角色的位置进行更新。
134.此外,为了能够实现虚拟角色的目标骨骼姿态比较合理,会根据接触面选择一个合适的偏移角度,例如与接触面平行,以偏转角度为基础对虚拟角色与动态接触面之间的偏转角度进行调整。再或者基于动态接触面的法线方向确定偏转角度。
135.步骤s320,确定动态接触面的运动周期,并将运动周期内的动画帧按照时间顺序进行拼接。
136.步骤s322,根据拼接结果生成包含虚拟角色和动态接触面的目标动画并展示。
137.综上所述,为了能够实现虚拟角色随着动态接触面的运动一起运动,在获取到虚拟角色的目标骨骼对应的骨骼位置后,可以根据骨骼位置确定目标骨骼映射在动态接触面的映射位置,之后基于映射位置建立虚拟角色与动态接触面之间的位置关系,当动态接触面相对于虚拟角色运动的情况下,即可按照位置关系由动态接触面上的接触点的位置对虚拟角色的位置进行更新,实现在动态接触面运动的情况下,可以使得与动态接触面接触的虚拟角色一起运动,并且通过位置关系可以保证虚拟角色与动态接触面之间的贴合度,从
而向用户展示更加真实的虚拟场景。
138.与上述方法实施例相对应,本技术还提供了位置更新装置实施例,图4示出了本技术一实施例提供的一种位置更新装置的结构示意图。如图4所示,该装置包括:
139.获取模块402,被配置为获取虚拟角色的目标骨骼对应的骨骼位置;
140.确定模块404,被配置为根据所述骨骼位置确定所述目标骨骼映射在动态接触面的映射位置;
141.建立模块406,被配置为基于所述映射位置建立所述虚拟角色与所述动态接触面的位置关系;
142.更新模块408,被配置为在所述动态接触面相对于所述虚拟角色运动的情况下,按照所述位置关系对所述虚拟角色的位置进行更新。
143.一个可选的实施例中,所述获取模块402进一步被配置为:
144.在所述虚拟角色对应的角色骨骼中选择与所述动态接触面距离最近的目标角色骨骼作为所述目标骨骼;确定所述虚拟角色所属的世界坐标系,并基于所述世界坐标系确定所述目标骨骼对应的骨骼位置。
145.一个可选的实施例中,所述位置更新装置,还包括:
146.旋转模块,被配置为在所述虚拟角色与所述动态接触面之间存在倾斜角度的情况下,根据所述倾斜角度对所述虚拟角色进行旋转;其中,旋转后的虚拟角色与所述动态接触面垂直。
147.一个可选的实施例中,所述确定模块404进一步被配置为:
148.在所述骨骼位置和所述动态接触面之间创建辅助线;基于所述动态接触面与所述辅助线的交点确定接触点,并将所述接触点的位置作为所述映射位置。
149.一个可选的实施例中,所述建立模块406进一步被配置为:
150.在所述动态接触面上确定所述虚拟角色对应的接触位置,并确定所述接触位置对应的坐标系;在所述坐标系中确定所述映射位置对应的映射坐标信息,以及所述接触位置对应的接触坐标信息;根据所述映射坐标信息和所述接触坐标信息,计算所述接触位置和所述映射位置之间的偏移量;基于所述偏移量确定所述虚拟角色与所述动态接触面之间的所述位置关系。
151.一个可选的实施例中,所述更新模块408进一步被配置为:
152.确定在当前动画帧中所述目标骨骼在世界坐标系中的初始位置;基于所述位置关系对所述初始位置进行调整,根据调整结果对所述当前动画帧中的所述虚拟角色的位置进行更新。
153.一个可选的实施例中,所述位置更新装置,还包括:
154.展示模块,被配置为确定所述动态接触面的运动周期,并将所述运动周期内的动画帧按照时间顺序进行拼接;根据拼接结果生成包含所述虚拟角色和所述动态接触面的目标动画并展示。
155.一个可选的实施例中,所述位置更新装置,还包括:
156.调整模块,被配置为确定所述虚拟角色与所述动态接触面的偏转角度;按照所述偏转角度对所述虚拟角色与所述动态接触面的角度关系进行调整。
157.一个可选的实施例中,所述调整模块进一步被配置为:
158.在所述动态接触面中确定所述接触位置对应的父骨骼;确定所述父骨骼与所述接触位置所属的接触骨骼的目标偏转角度,作为所述虚拟角色与所述动态接触面的偏转角度。
159.本技术提供的位置更新装置,为了能够实现虚拟角色随着动态接触面的运动一起运动,在获取到虚拟角色的目标骨骼对应的骨骼位置后,可以根据骨骼位置确定目标骨骼映射在动态接触面的映射位置,之后基于映射位置建立虚拟角色与动态接触面之间的位置关系,当动态接触面相对于虚拟角色运动的情况下,即可按照位置关系由动态接触面上的接触点的位置对虚拟角色的位置进行更新,实现在动态接触面运动的情况下,可以使得与动态接触面接触的虚拟角色一起运动,并且通过位置关系可以保证虚拟角色与动态接触面之间的贴合度,从而向用户展示更加真实的虚拟场景。
160.上述为本实施例的一种位置更新装置的示意性方案。需要说明的是,该位置更新装置的技术方案与上述的位置更新方法的技术方案属于同一构思,位置更新装置的技术方案未详细描述的细节内容,均可以参见上述位置更新方法的技术方案的描述。此外,装置实施例中的各组成部分应当理解为实现该程序流程各步骤或该方法各步骤所必须建立的功能模块,各个功能模块并非实际的功能分割或者分离限定。由这样一组功能模块限定的装置权利要求应当理解为主要通过说明书记载的计算机程序实现该解决方案的功能模块构架,而不应当理解为主要通过硬件方式实现该解决方案的实体装置。
161.图5示出了根据本技术一实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
162.计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
163.在本技术的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本技术范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
164.计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
165.其中,处理器520用于执行如下计算机可执行指令:
166.获取虚拟角色的目标骨骼对应的骨骼位置;
167.根据所述骨骼位置确定所述目标骨骼映射在动态接触面的映射位置;
168.基于所述映射位置建立所述虚拟角色与所述动态接触面的位置关系;
169.在所述动态接触面相对于所述虚拟角色运动的情况下,按照所述位置关系对所述虚拟角色的位置进行更新。
170.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的位置更新方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述位置更新方法的技术方案的描述。
171.本技术一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
172.获取虚拟角色的目标骨骼对应的骨骼位置;
173.根据所述骨骼位置确定所述目标骨骼映射在动态接触面的映射位置;
174.基于所述映射位置建立所述虚拟角色与所述动态接触面的位置关系;
175.在所述动态接触面相对于所述虚拟角色运动的情况下,按照所述位置关系对所述虚拟角色的位置进行更新。
176.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的位置更新方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述位置更新方法的技术方案的描述。
177.本技术一实施例还提供一种芯片,其存储有计算机程序,该计算机程序被芯片执行时实现所述位置更新方法的步骤。
178.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
179.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
180.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
181.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
182.以上公开的本技术优选实施例只是用于帮助阐述本技术。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本技术的内容,可作很多的修改和变化。本技术选取并具体描述这些实施例,是为了更好地解释本技术的原
理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本技术。本技术仅受权利要求书及其全部范围和等效物的限制。