- 0
- 0
- 1
分享
- 调整Lyra动画并在自己的UE5游戏中使用
-
原创 2022-05-11
大家好,我是Epic Games的动画游戏逻辑程序员Jose Villarroel。Lyra初学者游戏包(最新免费示例项目)中的动画系统展示了我们目前在虚幻引擎5中构建游戏的方式,你可以将这种方式延伸到自己的项目中。这篇博客文章将向你介绍相关的思维模式和工具,帮助你将受《堡垒之夜》和《虚幻争霸》启发的持枪扫射角色调整成一个向前移动的角色(类似于你在《黑客帝国觉醒:虚幻引擎5体验》中所看到的角色)。
向前移动的动画
如需查看我们将要修改的各个部分的更多信息,并进一步了解我们将要涉及的动画蓝图,请参阅《Lyra中的动画》。
替换动画
我们需要使用不同的动画来实现新的运动方式。你可以制作自己的动画,但为了简单起见,我将直接从最新的城市示例项目中迁移运动动画集。
注意:默认的迁移设置会包含许多不必要的额外资产,如在动画通知中使用的音效。你可以剔除它们,但你必须手动替换引用。
城市示例项目中的玩家角色包含了我们在向前移动动作集合中所缺少的许多动作,例如定向动身。
城市示例项目中的动画资产使用一种不同的骨架资产作为父资产,所以我们必须在骨架之间执行某种形式的重定向操作。幸运的是,这两种骨架具有相同的局部层级(即使没有,我们还可以改为使用IK绑定重定向),因此,我们能够使用UE5中新推出的兼容骨架。我们打开SK_Mannequin,将SK_Base添加至角色的兼容骨架。
接下来,我们要制作新的链接层动画蓝图基础,实现向前移动版本中动画图表的差异。我们来复制ABP_ItemAnimLayersBase(我会将它命名为ABP_ForwardFacing)。为了简单起见,我要将“类默认值”窗口中的动画资产引用填充为ABP_UnarmedAnimLayers中未装备武器的动画集,然后在“类默认值”窗口下,将ABP_ForwardFacing中的开始/停止/慢跑动画集替换为城市示例项目中的相应动画。
Lyra使用距离匹配,因此我们还要为新的慢跑周期、开始和停止添加距离曲线。为此,我们要为每个动画添加距离曲线动画修改器。另外,通过在内容浏览器中选中所有动画序列,点击右键,选择动画修改器,然后添加修改器,还可以执行批量操作。
距离曲线修改器和生成的距离曲线。
调整角色蓝图
在Lyra的射击游戏模式中,角色始终会看着玩家瞄准的地方。对于一个面向前方移动的角色来说,这并不理想,所以我们来看看B_Hero_ShooterMannequin,并更改一些角色运动设置。我们在角色运动组件中启用将旋转朝向运动,然后在角色默认值中禁用使用控制器旋转Yaw。
现在,我们需要链接我们新创建的向前移动动画蓝图,但因为它没有与特定的物品栏项目相关联,所以我们要做一些小的调整,覆盖默认行为。我们要阻止添加物品栏项目,并默认链接我们的层。
B_Hero_ShooterMannequin > 事件图表。需要做出的修改已高亮为绿色。
为了让事情更加直观,我们向ABP_Mannequin_Base添加一些可视化调试信息。
绘制黑色箭头表示Actor的前进方向,红色箭头表示网格体根骨骼的前进方向。
我们点击运行,看看效果。
定向动身的效果看上去不好。角色转身太快,导致足部产生太多滑动。有时还会出现急停,而且动画的播放速度也太快。我们有三个单独的问题需要解决:播放速度、急停和转身速度。
我们首先解决播放速度问题。我们在慢跑开始动画中使用了距离匹配。播放速度与移动距离成正比,而我们的角色移动得非常快。在Lyra中,我们将播放速度和跨步扭曲结合在一起,这使我们能够动态调整角色姿势,以应对动画和游戏逻辑中的不同。允许一些足部滑动是很常见的做法,因为匹配的距离太长会导致播放速度非常快,而跨步扭曲的幅度太大可能会使角色的姿势变得夸张。这些都是可以调整的,但行业标准是,对播放速度/跨步扭曲的调整不应超过正负15-20%。超过这个数值会导致视觉质量明显下降,而且允许足部滑动通常会产生更好的效果。我们要追求最高的质量,仅将角色运动组件的速度和加速度降至更加可控的级别。我们来看看这样效果如何。
动画调试
播放速度看起来确实更合适了,而且急停也基本消失了。相反,开始动画看上去几乎没有在播放。我们来解决这个问题。新推出的倒放调试器似乎很适合用在这里。
倒放调试器为我们指出了问题出在ABP_Mannequin_Base,通过反复执行单步调试,它让我们注意到在状态机中,开始状态过早地过渡到了其他状态。我们通过进一步检查发现,根据速度方向和角色朝向的变化,以及根骨骼Yaw偏移的差异,过渡规则可能会出现中断(参阅《Lyra中的动画》“原地转身”一节)。
在任何地方,如果我们想禁用某些处于向前移动模式的东西,就会使用这种蓝图逻辑。
对于持枪扫射的角色来说,这是一种有用的机制,但对向前移动的角色而言,这没有太大意义。使用属性访问控制功能,我们可以很容易地从需要阻止这类过渡的角色运动组件中抓取相关属性。我们借此机会,删除我们不需要的其他东西。
当角色开始向前移动时,我们不希望他的身体向前倾。同样,瞄准偏移也应该被禁用。
ABP_Mannequin_Base > LocomotionSM > 开始
朝向扭曲会调整下半身的朝向,协调动画方向和角色移动方向间的差异。对于向前移动的角色,我们希望让他朝向要移动的方向,因此在开始动作中,我们不需要再使用朝向扭曲功能了。
ABP_ForwardFacing > 动画层 > 全身开始状态
我们要增加允许的根骨骼Yaw偏移角度(ABP_Mannequin_Base > 类默认值 > 原地转身)。在这里,正负179°之间都是属于合理的范围。
根据向左转还是向右转,我们还需要添加一个可选的180°开始角度。
非原地转身
最后,我们还要解决转身速度的问题。我们要解决的是,角色的转身速度和动画期望的转身速度之间存在很大差异。最简单的解决方法是降低角色运动组件的旋转速率,但这种方案无法实现最高的保真度。
幸运的是,Lyra的原地转身中已经为这个问题提供了一种解决方案(参阅《Lyra中的动画》“原地转身”一节)。该方案使用根骨骼Yaw偏移抵消角色的转身,从而更准确地跟上动画需要的转身速度。
这其中的主要区别是,我们要将动画调整至玩家期望的方向,而不是完全按照动画中的既定设计进行转身。也就是说,如果玩家要转身60°,而选择的动画以45°开始,我们要将旋转角度完全扭至60°,同时与动画中设定的速度相协调。
首先,我们需要采用原地转身动画修改器。我要将生成的曲线命名为RemainingTurnYawSt和TurnYawWeightSt。
注意:我们还要手动将这些曲线添加到SK_Mannequin,因为它们必须存在于两个骨架资产中才能正确地重新映射。
我们来看看在原地转身的Process Turn Yaw Curve中,动画修改器生成的曲线是被如何使用的。
ABP_Mannequin_Base > 函数 > 原地转身
我们将复制这个函数,并对现有的动画节点函数(UE5中新增)做一些调整,以满足我们的新需求。首先,我们要调整所需的根骨骼Yaw偏移的增量。
在开始动画的转身部分,我们要控制根骨骼Yaw偏移,但是当转身结束时,我们要通过混合节点的方式消除这个偏移。为此,我们添加了Reached End of Turn节点,每当我们触发了新的开始动作时,都必须重置它。
ABP_Mannequin_Base > Set Up Start State是一个动画节点函数,每当进入开始状态时都会运行它。
我们可以使用Lyra动画蓝图内置的一些模式定义,相较于通过根骨骼Yaw偏移模式实现的角色转身,应该如何表现网格体的旋转。现在,我们要更新ABP_Mannequin_Base > Update Start Base动画节点函数,根据转身是否结束来改变模式。
我们来看看效果。
这在多人游戏中也适用。
调整工具集
Lyra中的扫射动画并不是为了支持向前移动而建立的。通过这些调整,现在它支持了两种模式,我们并没有编写任何代码就实现了这一点。使用这篇博客文章中提到的新工具,在我们创建的游戏中,我们可以在瞄准时使用扫射动画,在探索世界时使用向前移动动画。
我们所做的都是非破坏性更改,通过使用链接动画层、动画节点函数和属性访问控制,我们可以比以往更好地复用、替换和划分动画蓝图的逻辑。姿势扭曲和距离匹配使我们能够根据游戏逻辑的需要,对动画进行调整。倒放调试器允许我们在上下文环境中使用最少的设置调试动画。
这些只是虚幻引擎5中的部分新功能,它们为动画师和设计师赋予了强大的力量。新的重定向方法意味着,Lyra可以和你自己的角色、MetaHuman甚至是《虚幻争霸》英雄互相重定向。你可以亲自试用Lyra中最新的实验性运动匹配功能。
随着5.0版本的发布,我们欢迎你提出反馈意见,帮助我们改进虚幻引擎5中的动画。请加入我们的论坛,告诉我们你的想法,并向我们展示你接下来要构建的东西!
-
阅读原文
* 文章为作者独立观点,不代表数艺网立场转载须知
- 本文内容由数艺网收录采集自微信公众号虚幻引擎 ,并经数艺网进行了排版优化。转载此文章请在文章开头和结尾标注“作者”、“来源:数艺网” 并附上本页链接: 如您不希望被数艺网所收录,感觉到侵犯到了您的权益,请及时告知数艺网,我们表示诚挚的歉意,并及时处理或删除。