跳跃动画处理方法、装置、电子设备及计算机可读介质与流程

文档序号:25312837发布日期:2021-06-04 15:57阅读:215来源:国知局
跳跃动画处理方法、装置、电子设备及计算机可读介质与流程

1.本公开涉及游戏技术领域,具体而言,涉及一种游戏角色的跳跃动画处理方法、游戏角色的跳跃动画处理装置、电子设备及计算机可读介质。


背景技术:

2.在游戏中,控制角色跳跃是游戏的基本操作之一,目前常用的跳跃系统中,游戏角色的跳跃主要可以分为三个阶段:起跳阶段、下落循环阶段和落地起身阶段。
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.图6示意性示出了起跳穿模的示意图;
52.图7示出了本公开示例实施方式的游戏角色的跳跃动画处理方法的流程示意图;
53.图8示意性示出了根据本公开的一个具体实施方式的落脚点和起点水平面不同时跳跃动画的示意图;
54.图9示意性示出了根据本公开的一个具体实施方式的跳崖式跳跃状态机过渡系统
的示意图;
55.图10示意性示出了压缩预备起跳延迟的示意图;
56.图11示意性示出了根据本公开的一个具体实施方式的游戏角色压缩预备状态的示意图;
57.图12示出了本公开示例实施方式的压缩状态过渡到正常状态的流程示意图;
58.图13示意性示出了根据本公开的一个具体实施方式的根骨骼过渡的示意图;
59.图14示意性示出了跳跃的小球弹跳运动规律的示意图;
60.图15示出了本公开示例实施方式的通过速率翘曲调整动画播放速率的流程示意图;
61.图16示意性示出了根据本公开的一个具体实施方式的播放速率曲线的示意图;
62.图17示出了本公开示例实施方式的确定播放速率曲线的流程示意图;
63.图18示出了本公开示例实施方式的计算播放速率曲线对应的抛物线参数的流程示意图;
64.图19示出了本公开示例实施方式的游戏角色的跳跃动画处理装置的框图;
65.图20示出了适于用来实现本公开实施方式的电子设备的计算机系统的结构示意图。
具体实施方式
66.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
67.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
68.在游戏中,控制角色跳跃是游戏的基本操作之一。在最初的游戏中,跳跃动画只有一个关键帧,如图1所示。游戏角色离开地面的瞬间将会切换到这一帧跳跃动画并保持到其落地,然后切换回站立状态的动画。
69.在游戏发展的第二个阶段,跳跃系统迭代为了两个关键帧,如图2所示,一个pose向上,即动画关键帧201,一个pose下降,即动画关键帧202。在第二阶段的后期,动画师在2帧基准的情况下,为动画的下降增添了更多符合运动规律的运动细节,比如四肢和附加物的跟随运动或滞后运动等。
70.再后来,到了游戏发展的第三阶段,从二维游戏进步到三维游戏,像素风为主流的
角色逐步迭代为了三维模型。游戏设计者和动画师拥有了更多表现动画的机会和挑战。如图3所示为三维模型中多视角的跳跃动画,其中,动画关键帧301为背视图,动画302关键帧为侧视图,多个关键帧之间通过插值平滑过渡。除此之外,还可以将多个跳跃动画应用于同一动画系统,如图4所示,分别为游戏角色第一次、第二次、第三次跳跃动作之间的差异。
71.之后的跳跃系统大致都遵循了这一跳跃动画系统,并在表现上更加丰富,例如,在写实类场景下的动画跳跃系统中,可以在游戏角色的起跳、跳跃至顶点和下落时分别使用不同的跳跃动作,以达到更加丰富的视觉效果。但是,在目前的跳跃动画系统中,要同时满足视觉表现、现实真实度以及实时操控等方面的要求,还存在一些难度。
72.在一些相关的实施例中,例如在虚幻引擎中的跳跃动画系统模块中,跳跃系统大致可分为以下三个阶段:
73.1、起跳,linearaction(单向线性动画),只播放一次,播放完毕后进入下一阶段。
74.2、下落,cycles(循环动画),角色在第一阶段起跳结束后进入下落循环阶段,通过一个首尾相连的动画反复播放,直至角色落地。如图5所示的下落阶段动画,角色的第一帧和最后一帧都是这个姿势,动画将会循环播放直到该阶段结束。
75.3、起身,transition(过渡动画),角色接触地面判定触发后,从第二阶段跳转出来,开始播放线性非循环的过渡动画,直至角色起身。起身阶段在角色落地判定为真时触发。
76.在上述相关实施例中,跳跃系统虽然相对于普通的上下式跳跃多了起身的过渡,但仍然存在不少缺陷如下:
77.1、在运动规律角度,缺少下压蓄力的关键帧。这个问题主要从响应性出发,玩家触发跳跃操作时希望角色能够及时上升,但这和需要反方向蓄力才能起跳的真实物理情形相悖,因此,从游戏性的角度出发只能采取妥协方案,移除了角色下压蓄力的初始阶段。
78.2、在视觉表现角度,第一阶段起跳动画播放结束时,角色未必恰好运动到最高处。如果角色还处于上升阶段,就因为第一阶段的结束开始播放下落循环动画,会造成动画的视觉功能性错误。
79.3、在动画制作角度,针对不同落脚点高度的场景需要分别制作不同的跳跃动画,容易造成内存资源的浪费。另外,动画师的工作流程一般来说都是独立完整地制作其中一段动画,而跳跃的功能性决定了玩家实际控制的胶囊体在理想情况下应和动画完全匹配。如果直接拆分一个完整动画,往往会造成模型和胶囊体之间存在不小的出入,在写实类游戏中将极大影响玩家体验,例如,模型在视觉上能通过的地方玩家过不去,或者出现如图6所示的起跳穿模的现象,角色模型在跳跃过程中超出了控制器胶囊体601,既可能穿模,也可能让玩家产生误判。
80.基于上述问题,本示例实施方式首先提供了一种游戏角色的跳跃动画处理方法,能够立体多层次地协同解决跳跃系统的预备动作和响应手感之间的矛盾,以及视觉表现和角色位移不匹配的问题,并针对游戏引擎特性,提出更合理的方式制作、拆分动画,使其在游戏环境中兼顾表现与操控的功能。参考图7所示,上述游戏角色的跳跃动画处理方法可以包括以下步骤:
81.步骤s710.获取游戏角色的原始跳跃动画,其中,原始跳跃动画至少包括若干帧连续的非循环跳跃图像。
82.步骤s720.获取游戏角色的压缩状态关键帧,并将压缩状态关键帧作为原始跳跃动画中的初始关键帧,以得到游戏角色的第一跳跃动画。
83.步骤s730.根据游戏角色的根骨骼将第一跳跃动画中的游戏角色在起跳阶段由压缩蓄力状态过渡到跳跃状态,以得到游戏角色的目标跳跃动画。
84.本公开示例实施方式的游戏角色的跳跃动画处理方法中,通过将压缩状态关键帧作为游戏角色跳跃动画的初始关键帧,并通过根骨骼使游戏角色在起跳阶段由压缩蓄力状态过渡到正常的跳跃状态,以得到游戏角色最终在游戏中所使用的目标跳跃动画。本公开示例实施方式中的游戏角色的跳跃动画处理方法,可以解决跳跃动画中在起跳阶段的预备动作和响应手感之间的矛盾,以及游戏角色在处于压缩蓄力状态时的视觉表现与角色位移不匹配的问题,使跳跃动画的视觉表现更拟真,并使游戏角色在跳跃过程中始终处于胶囊体控制器的相对稳定的位置。
85.下面,结合图8至图13对本示例实施方式的上述步骤进行更加详细的说明。
86.在步骤s710中,获取游戏角色的原始跳跃动画,其中,原始跳跃动画至少包括若干帧连续的非循环跳跃图像。
87.本示例实施方式中,游戏角色指的是游戏中由玩家所操控的游戏角色模型,可以根据玩家的操作指令执行相应的动作,如跑步、跳跃、翻滚等。在游戏动画的制作过程中,也是以游戏角色模型为基础,通过胶囊体控制器来控制游戏角色模型的位置。
88.原始跳跃动画指的是一段至少包括若干帧连续的非循环跳跃图像的动画,是一段连续线性的非循环动画(linear action)。原始跳跃动画包括起跳、下落循环、落地起身三个阶段,可以通过如虚幻引擎中默认的角色跳跃系统模块中获取。
89.本示例实施方式中,原始跳跃动画中游戏角色的预设落脚点低于预设起跳点,因此,也可以称其为“跳崖式”跳跃动画,例如,预设落脚点的高度可以比预设起跳点低3个游戏角色模型的半高,或4个游戏角色模型的半高。
90.使用跳跃动画的跳崖式拆分来解决动画的视觉功能性错误问题,可以应对多种地形下的跳跃,尤其是在写实类第三人称的游戏中,落脚点和起点水平面不同的情况出现的频率极高。跳崖式拆分从具体游戏环境中出发,首先确保动画尽量为一个整体,即整个跳跃动画至少包括若干帧连续的非循环跳跃图像,是一个连续线性的非循环动画(linear action)。跳跃动画为一个整体的好处是,可以使整个跳跃过程表现充分,过渡流畅,不会因为状态机之间的过渡而造成加速度的变化。
91.如图8所示,在写实类游戏场景中,单个线性跳跃动画会高频率地面对落脚点和起跳点水平面不同的问题。为了避免在跳跃过程中,落脚点稍微与起点有偏差就会进入下落循环的状态,在跳跃动作的设计初期,就可以以“跳崖式”跳跃为标准进行拆分和制作。预设角色的跳跃落脚点会比起跳点低的多,这样游戏角色就可以在大部分地形起伏的情况下,以此单个线性动画进行表现,而不用额外增加动画资源,也不会提前进入下落循环的状态机。
92.如图9所示的跳崖式跳跃状态机过渡系统中,从角色位于地面阶段(ground)开始,经过起跳阶段(takeoff)进入下落循环阶段(fall)。另一种情况是,当角色的坠落超出跳崖式动画的极限后,还会重新过渡到下落循环阶段(fall)。当角色在下落循环阶段中提前落地,或再次过渡到下落循环阶段(fall)后触发落地判定,这两种情况都会插值过渡到落地
阶段(recover),具体情况需要根据实际的跳跃落脚点来确定。
93.本公开示例实施方式的游戏角色的跳跃动画处理方法中,通过使用预设落脚点低于预设起跳点的角色跳跃动画,可以通过单个的跳跃动画应对多种地形下的角色跳跃问题,不需要针对每种不同的落脚点高度制作不同的跳跃动画,从而节约了动画制作所占用的内存资源和人力资源。
94.在步骤s720中,获取游戏角色的压缩状态关键帧,并将压缩状态关键帧作为原始跳跃动画中的初始关键帧,以得到游戏角色的第一跳跃动画。
95.在跳跃的起始阶段,如果没有挤压,直接伸展的躯体并不符合动画原理。但是为了游戏的响应性,输入跳跃指令后需要即时上升角色的胶囊体控制器,而在上升过程中播放压缩预备状态的动画也不好看,因此在一些相关的实施例中,会使游戏角色跳过压缩预备状态直接进行跳跃。
96.而在第三人称写实类游戏中,对于动画的真实度要求更高,没有压缩预备状态的跳跃缺点会更加明显。在一种相关的实施例中,可以在原地起跳的时候设置较为明显的延迟并使游戏角色完成压缩预备的姿势,而在移动状态下则直接上升游戏角色并取消压缩预备的姿势,如图10所示,游戏角色从待机动画到压缩预备动画将花费25帧。
97.本示例实施方式中,通过将压缩状态关键帧作为原始跳跃动画中的初始关键帧,可以在跳跃的起始阶段增加游戏角色压缩预备的视觉表现,通过一种下蹲预备起跳的姿势,使整个跳跃的动作更加拟真。将压缩状态关键帧作为原始跳跃动画中的初始关键帧以后,得到游戏角色的第一跳跃动画。
98.本示例实施方式中,游戏角色的跳跃将不影响其胶囊体控制器,仅作为视觉补偿。即玩家发出跳跃指令后,游戏角色的胶囊体控制器将符合响应,即时上升,而游戏角色则会在开始跳跃的瞬间获取一个压缩状态关键帧作为跳跃动画的初始帧。如图11所示,本示例实施方式中的跳跃系统的起始帧,可以直接从一种较夸张的,比通常情况下更低的下蹲姿势开始进行跳跃。
99.本示例实施方式中的这一方案要求动画师在跳跃动作设计的时候,以低于正常压缩预备高度的压缩状态关键帧作为动画的初始关键帧,之后利用引擎状态机之间的混合过渡特点,让第一跳跃动画的初始位置抵达一个即时的压缩状态,利用视觉残留原理,给予玩家一种模型压缩预备的心理预期和视觉反馈。
100.在步骤s730中,根据游戏角色的根骨骼将第一跳跃动画中的游戏角色在起跳阶段由压缩蓄力状态过渡到跳跃状态,以得到游戏角色的目标跳跃动画。
101.本示例实施方式中,为了确保模型位置相对于控制器胶囊体一直处于稳定状态,在引擎导入动画时可以引入根骨骼root的概念,即模型底部有一根控制全身骨骼的root,并通过根骨骼root的旋转与位移来计算角色实际的位置。
102.当引入了步骤s720中的压缩状态关键帧后,根骨骼相对于角色的质心出现了高度变化,单纯地使用起始第一帧作为root的参考位置会让角色模型的整体位置偏低,因此,需要根据游戏角色模型的根骨骼进行模型状态的过渡,使其从起跳时的压缩蓄力状态逐渐过渡到正常的跳跃状态。
103.本示例实施方式中,如图12所示,根据游戏角色的根骨骼将第一跳跃动画中的游戏角色在起跳阶段由压缩蓄力状态过渡到跳跃状态,具体可以包括以下几个步骤:
104.步骤s1210.将第一跳跃动画中的起跳阶段拆分为第一起跳阶段和第二起跳阶段。
105.本示例实施方式中,可以将第一跳跃动画中的起跳阶段(takeoff)内部拆分为两个状态,即第一起跳阶段和第二起跳阶段,其中,第一起跳阶段用于压缩蓄力状态的过渡。
106.步骤s1220.在第一起跳阶段将游戏角色由压缩蓄力状态过渡到跳跃状态,并在第二起跳阶段使游戏角色保持跳跃状态。
107.本示例实施方式中,可以获取压缩蓄力状态下游戏角色的根骨骼与游戏角色的模型质心之间的第一质心高度,以及正常的跳跃状态下根骨骼与模型质心之间的第二质心高度,然后,在第一起跳阶段将根骨骼与模型质心之间的距离由第一质心高度逐渐变化至第二质心高度。
108.在第一起跳阶段,角色的根骨骼与质心的相对位置将会由初始的压缩蓄力状态平滑过渡到正常的跳跃状态,这一动画的操作可在ddc(direct digital control,直接数字控制系统)数字创作软件(比如3dmax)中,通过为根骨骼添加动画层,并将最后一帧移动到正常距离来实现,如图13所示,模型1301为初始的压缩状态关键帧,根骨骼与模型质心之间的距离为第一质心高度,1302为第一起跳阶段的最后一帧,进入了正常的跳跃状态,根骨骼与模型质心之间的距离为第二质心高度。
109.通过根骨骼root,能够在确保了角色需要起跳压缩的同时,保证其他阶段模型与胶囊体控制器的位置相对稳定,来配合实现压缩蓄力的动画效果。同时,也确保了跳跃过程中,角色模型始终处于胶囊体控制器的相对稳定的位置,且可以从低处的压缩状态平滑过渡到正常位置。
110.本示例实施方式中,在根据上述方法生成目标跳跃动画的基础上,响应作用于游戏角色的跳跃指令,通过获取游戏角色的实际起跳点和实际落脚点,并根据实际起跳点、实际落脚点以及目标跳跃动画,完成游戏角色的跳跃过程。
111.具体地,可以先将目标跳跃动画的预设起跳点放在实际起跳点的位置,并确定游戏角色的实际落脚点与预设落脚点之间的关系。若游戏角色的实际落脚点与预设落脚点相同,则使游戏角色按照目标跳跃动画中的起跳阶段、下落阶段和落地阶段完成跳跃过程;若游戏角色的实际落脚点高于预设落脚点,则当游戏角色提前落地时,从目标跳跃动画的下落阶段提前进入落地阶段;若游戏角色的实际落脚点低于预设落脚点,则使游戏角色在下落阶段结束之后重新进入下落阶段,直到游戏角色落地时,再由下落阶段进入落地阶段。
112.在如图9所示的跳崖式跳跃状态机过渡系统中,从角色位于地面阶段(ground)开始,经过起跳阶段(takeoff)进入下落循环阶段(fall)。另一种情况是,当角色的坠落超出跳崖式动画的极限后,还会重新过渡到下落循环阶段(fall)。当角色在跳崖过程中提前落地,或再次过渡到下落循环阶段(fall)后触发落地判定,这两种情况都会插值过渡到落地阶段(recover),具体情况需要根据实际的跳跃落脚点来确定。
113.除此之外,本示例实施方式中,还可以通过速率翘曲(speed warping)技术。来解决跳跃系统下需要缩放动画播放时间以匹配游戏实际表现时,通过速率等比缩放带来的与其他动画不匹配的问题。例如,原动画中角色2秒抵达跳跃最高点,而在游戏中角色4秒抵达最高点,就需要对动画整体播放速率进行调整。在一些相关的实施例中,解决方案是将动画整体播放速率rate(r)设置为1/2,公式为:
114.r=t
ani
÷
t
game
115.其中,t
ani
表示原动画中的原始跳跃时长,t
game
表示游戏中的实际跳跃时长,即动画的播放速率rate(r)为原动画中的原始跳跃时长除以游戏中的实际跳跃时长。
116.但这种等比缩放的做法会使得整段动画匀速拉长,在视觉上给人以慢放感,尤其在和别的动作(比如跑、攻击)混合在一起操作时,破坏了游戏的沉浸感和真实感。
117.本示例实施方式中,可以通过速率翘曲(speed warping)技术让动画的播放速率在首尾都回到1,即100%。结合如图14所示的跳跃的小球弹跳运动规律,让动画在跳跃过程中插值加减速,使动画在最高点时的播放速率最小,在最低点时的播放速率最大。
118.本示例实施方式中,如图15所示,通过速率翘曲技术调整跳跃动画播放速率的方法,具体可以包括以下几个步骤:
119.步骤s1510.获取游戏角色从实际起跳点起跳并下落到与实际起跳点相同高度的中间点的实际跳跃时长,并获取原始跳跃动画中游戏角色从预设起跳点到中间点的原始跳跃时长。
120.本示例实施方式中,仅对游戏角色模型从实际起跳点起跳并下落到与实际起跳点相同高度的中间点的这一段跳跃过程进行播放速率的调整,剩下的下落阶段动画的播放速率保持100%的速率即可。
121.步骤s1520.根据原始跳跃时长和实际跳跃时长确定目标跳跃动画在游戏中的播放速率曲线。
122.在如图14所示的小球弹跳运动过程中,小球接触地面的时候是加速最快、相对伸展变化较大的阶段,而越靠近顶点,运动越趋缓,相对挤压越大。而角色跳跃的过程也与其类似。角色跳跃的运动过程中,越靠近跳跃的最高点,运动越趋缓。因此,速率的翘曲可以通过如图16所示的曲线去模拟控制,曲线的值从1开始,跳跃的最高点对应波谷的位置,跳跃的最高点对应着速率的最低点,然后重新返回1,并在之后的阶段保持在1。
123.本示例实施方式中,如图17所示,根据原始跳跃时长和实际跳跃时长确定目标跳跃动画在游戏中的播放速率曲线,具体可以包括以下几个步骤:
124.步骤s1710.根据原始跳跃时长和实际跳跃时长确定播放速率曲线对应的曲线参数。
125.本示例实施方式中,播放速率曲线为一段抛物线,可以通过计算抛物线公式y=ax2+bx+c中的参数a、b和c,来确定目标跳跃动画在游戏中的播放速率曲线。
126.本示例实施方式中,如图18所示,根据原始跳跃时长和实际跳跃时长确定播放速率曲线对应的曲线参数,具体可以包括以下几个步骤:
127.步骤s1810.根据原始跳跃时长和实际跳跃时长的比值,得到目标跳跃动画在游戏中的平均播放速率。
128.目标跳跃动画在游戏中的平均播放速率r=t
ani
÷
t
game
,其中,t
ani
表示原动画中的原始跳跃时长,t
game
表示游戏中的实际跳跃时长。
129.步骤s1820.根据平均播放速率和原始跳跃时长得到播放速率曲线与坐标轴之间形成的曲线下面积,并根据原始跳跃时长得到播放速率曲线的顶点坐标参数。
130.如果要让播放速率曲线的值curvevalue等于r,就需要使曲线与坐标轴之间形成的曲线下面积等于r乘以原动画中的原始跳跃时长t
ani
。曲线的线下面积可以通过微积分公式计算,具体计算公式如下:
[0131][0132]
根据如图16所示的曲线1601可知,参数c值固定为1,抛物线的顶点坐标参数即顶点固定为动画时长t
ani
的一半。
[0133]
步骤s1830.根据播放速率曲线的曲线下面积和顶点坐标参数,确定播放速率曲线对应的曲线参数。
[0134]
根据抛物线的顶点坐标参数可以得到b=

at
ani
,结合曲线与坐标轴之间形成的曲线下面积,可以得到:
[0135][0136]
当已知动画时长t
ani
和游戏内需要表现时长t
game
的时候,就可以求解出抛物线的参数a,进而可以得到参数b的值。
[0137]
步骤s1720.根据曲线参数确定目标跳跃动画在游戏中的播放速率曲线。
[0138]
最后,将求得的抛物线参数a、b和c带入抛物线公式y=ax2+bx+c中,即可得到目标跳跃动画在游戏中的播放速率曲线。
[0139]
步骤s1530.根据播放速率曲线调整目标跳跃动画在游戏中的播放速率。
[0140]
本示例实施方式中,可以通过如下公式来调整目标跳跃动画在游戏中的播放速率:
[0141]
t
ani
×
cruvevalue=t
game
[0142]
即原始动画时长t
ani
乘以曲线值cruvevalue后,需等于游戏内的实际时长t
game

[0143]
在采用程序化生成地面且地形起伏较大的写实类第三人称游戏中,玩家在大场景中随时可能跳跃,并且需要针对其能力,调整角色的跳跃加速度。跳跃系统要确保写实和操控体验的平衡,既要符合现实世界的物理规律,赋予玩家沉浸感,又要保证手感,甚至是响应优先。通过本示例实施方式中的上述方法控制游戏角色的跳跃动画处理过程,在游戏中具有即时响应的特点,也有压缩蓄力的视觉表现,并能在客户端中修改自身播放速率并流畅过渡,使跳跃动画的视觉表现更拟真。
[0144]
应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0145]
进一步的,本公开还提供了一种游戏角色的跳跃动画处理装置。参考图19所示,该游戏角色的跳跃动画处理装置可以包括原始动画获取模块1910、初始关键帧确定模块1920以及目标动画确定模块1930。其中:
[0146]
原始动画获取模块1910可以用于获取游戏角色的原始跳跃动画,其中,原始跳跃动画至少包括若干帧连续的非循环跳跃图像;
[0147]
初始关键帧确定模块1920可以用于获取游戏角色的压缩状态关键帧,并将压缩状
态关键帧作为原始跳跃动画中的初始关键帧,以得到游戏角色的第一跳跃动画;
[0148]
目标动画确定模块1930可以用于根据游戏角色的根骨骼将第一跳跃动画中的游戏角色在起跳阶段由压缩蓄力状态过渡到跳跃状态,以得到游戏角色的目标跳跃动画。
[0149]
在本公开的一些示例性实施例中,原始动画获取模块1910中的原始跳跃动画中游戏角色的预设落脚点低于预设起跳点。
[0150]
在本公开的一些示例性实施例中,本公开提供的一种游戏角色的跳跃动画处理装置还可以包括时长参数获取模块、速率曲线确定模块以及播放速率调整模块。其中:
[0151]
时长参数获取模块可以用于获取游戏角色从实际起跳点起跳并下落到与实际起跳点相同高度的中间点的实际跳跃时长,并获取原始跳跃动画中游戏角色从预设起跳点到中间点的原始跳跃时长;
[0152]
速率曲线确定模块可以用于根据原始跳跃时长和实际跳跃时长确定目标跳跃动画在游戏中的播放速率曲线;
[0153]
播放速率调整模块可以用于根据播放速率曲线调整目标跳跃动画在游戏中的播放速率。
[0154]
在本公开的一些示例性实施例中,速率曲线确定模块可以包括曲线参数确定单元以及播放速率曲线确定单元。其中:
[0155]
曲线参数确定单元可以用于根据原始跳跃时长和实际跳跃时长确定播放速率曲线对应的曲线参数;
[0156]
播放速率曲线确定单元可以用于根据曲线参数确定目标跳跃动画在游戏中的播放速率曲线。
[0157]
在本公开的一些示例性实施例中,曲线参数确定单元可以包括平均播放速率确定单元、曲线下面积确定单元以及曲线参数计算单元。其中:
[0158]
平均播放速率确定单元可以用于根据原始跳跃时长和实际跳跃时长的比值,得到目标跳跃动画在游戏中的平均播放速率;
[0159]
曲线下面积确定单元可以用于根据平均播放速率和原始跳跃时长得到播放速率曲线与坐标轴之间形成的曲线下面积,并根据原始跳跃时长得到播放速率曲线的顶点坐标参数;
[0160]
曲线参数计算单元可以用于根据播放速率曲线的曲线下面积和顶点坐标参数,确定播放速率曲线对应的曲线参数。
[0161]
在本公开的一些示例性实施例中,目标动画确定模块1930可以包括起跳阶段拆分单元以及蓄力状态过渡单元。其中:
[0162]
起跳阶段拆分单元可以用于将第一跳跃动画中的起跳阶段拆分为第一起跳阶段和第二起跳阶段;
[0163]
蓄力状态过渡单元可以用于在第一起跳阶段将游戏角色由压缩蓄力状态过渡到跳跃状态,并在第二起跳阶段使游戏角色保持跳跃状态。
[0164]
在本公开的一些示例性实施例中,蓄力状态过渡单元可以包括质心高度确定单元以及质心高度过渡单元。其中:
[0165]
质心高度确定单元可以用于获取压缩蓄力状态下游戏角色的根骨骼与游戏角色的模型质心之间的第一质心高度,以及跳跃状态下根骨骼与模型质心之间的第二质心高
度;
[0166]
质心高度过渡单元可以用于在第一起跳阶段将根骨骼与模型质心之间的距离由第一质心高度逐渐变化至第二质心高度。
[0167]
在本公开的一些示例性实施例中,本公开提供的一种游戏角色的跳跃动画处理装置还可以包括跳跃过程实现模块,可以用于响应作用于游戏角色的跳跃指令,获取游戏角色的实际起跳点和实际落脚点,并根据实际起跳点、实际落脚点以及目标跳跃动画,完成游戏角色的跳跃过程。
[0168]
在本公开的一些示例性实施例中,跳跃过程实现模块可以包括实际落脚点确定单元、第一跳跃过程实现单元、第二跳跃过程实现单元以及第三跳跃过程实现单元。其中:
[0169]
实际落脚点确定单元可以用于将目标跳跃动画的预设起跳点放在实际起跳点的位置,并确定游戏角色的实际落脚点与预设落脚点之间的关系;
[0170]
第一跳跃过程实现单元可以用于若游戏角色的实际落脚点与预设落脚点相同,则使游戏角色按照目标跳跃动画中的起跳阶段、下落阶段和落地阶段完成跳跃过程;
[0171]
第二跳跃过程实现单元可以用于若游戏角色的实际落脚点高于预设落脚点,则当游戏角色提前落地时,从目标跳跃动画的下落阶段提前进入落地阶段;
[0172]
第三跳跃过程实现单元可以用于若游戏角色的实际落脚点低于预设落脚点,则使游戏角色在下落阶段结束之后重新进入下落阶段,直到游戏角色落地时,再由下落阶段进入落地阶段。
[0173]
上述游戏角色的跳跃动画处理装置中各模块/单元的具体细节在相应的方法实施例部分已有详细的说明,此处不再赘述。
[0174]
图20示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
[0175]
需要说明的是,图20示出的电子设备的计算机系统2000仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0176]
如图20所示,计算机系统2000包括中央处理单元(cpu)2001,其可以根据存储在只读存储器(rom)2002中的程序或者从存储部分2008加载到随机访问存储器(ram)2003中的程序而执行各种适当的动作和处理。在ram 2003中,还存储有系统操作所需的各种程序和数据。cpu 2001、rom 2002以及ram 2003通过总线2004彼此相连。输入/输出(i/o)接口2005也连接至总线2004。
[0177]
以下部件连接至i/o接口2005:包括键盘、鼠标等的输入部分2006;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分2007;包括硬盘等的存储部分2008;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分2009。通信部分2009经由诸如因特网的网络执行通信处理。驱动器2010也根据需要连接至i/o接口2005。可拆卸介质2011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器2010上,以便于从其上读出的计算机程序根据需要被安装入存储部分2008。
[0178]
特别地,根据本发明的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分2009从网络上被下载和安装,和/或从可拆卸介质2011被安装。在该计算机程序被中央处理单元(cpu)2001执行时,执行本申请的系统中限定
的各种功能。
[0179]
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0180]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0181]
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。
[0182]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
[0183]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。
[0184]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1