原文链接:
https://blog.uwa4d.com/archives/Study_Unreal4_Animation_3.html
上周UWA介绍了Unreal 4引擎动画模块中的动画融合功能,今天我们将继续介绍Unreal 4引擎动画模块中的其他进阶功能,其中主要包括:动画重定向、逆向运动学和顶点动画。
在此,特别感谢Unreal中国团队对于本篇文章中Unreal引擎相关内容的审核,并在UWA团队学习其引擎的道路上提供的大力支持。
一、动画重定向
游戏引擎动画模块中的动画重定向(Animation Retargeting)可用于在不同模型上重用动画文件,该功能类似于Unity引擎中Humanoid模式下的Retargeting功能。Unreal 4引擎对使用相同Skeleton Asset的Skeletal Mesh支持动画重定向,并且支持不同尺寸角色动画的重定向,其细节把握非常到位,具体如下图所示:


Unreal 4引擎对该问题提供了解决方案。打开两个Skeletal Mesh共用的Skeleton Asset,并勾选Show Retargeting Options,即可看到骨骼结构图右边显示骨骼Retargeting设置,如下图所示:



对于使用不同Skeleton Asset的Skeletal Mesh,Unreal 4引擎支持使用Rig文件将两者的骨骼进行映射,过程类似于Unity引擎中对Humanoid类型骨骼的模型进行标准人形骨骼映射。然后,即可支持动画重定向功能。有兴趣的读者可参考Unreal 4官方网站动画重定向教程【1】,进一步了解。
二、逆向运动学
游戏引擎中逆向运动学(Inverse Kinematics)可以弥补普通动画中不精确的情况,从而生成更加真实的角色动画。IK在游戏角色动画中有多种应用,其中比较常用的情况是使得角色双脚能贴合在高低不平的地面或是当角色触碰某些物品时能精确地碰到物品的位置,如下图所示:

Unreal 4和Unity引擎都支持IK,本节主要介绍Unreal 4引擎中IK的使用和设置。Unreal 4引擎中设置IK通常需要设置两个地方:Character的Blueprint和Animation Blueprint。在Character Blueprint中,需要处理获取Socket节点的位移信息,用于在Animation Blueprint中使用。Socket节点即为IK中需要触碰到指定位置的节点,例如:在本节例子中角色脚底可以设置成Socket节点,如下图所示:


其中,上图的Character Blueprint中,红框表示了每一帧Tick函数,蓝框表示计算角色右脚的Socket节点与地面的高度并记录在IKOffsetRightFoot变量中,绿框表示计算角色左脚的Socket节点与地面的高度并记录在IKOffsetLeftFoot变量中。然后,在Animation Blueprint的Event Graph中获取该变量值并设置为Effector Location,如下图所示:

其中,红色框表示利用IKOffsetRightFoot变量的值计算右脚Effector Location(脚底位置),蓝色框表示利用IKOffsetLeftFoot变量的值计算左脚Effector Location。
最后,在Animation Blueprint的Anim Graph中,使用Two Bone IK节点设置IK节点,如下图所示:

由此,IK的设置已完成。其中,主要步骤分为三步:(1)计算获取Socket节点的位移;(2)在Event Graph中设置该值为Effector Location;(3)在Anim Graph中使用Two Bone IK节点设置IK骨骼。
三、顶点动画
Unreal 4与Unity引擎都支持顶点动画,它常被用于制作面部表情以及布料等无法用骨骼驱动的动画。在Unreal 4引擎中被称为Morph Target,在Unity引擎中被称为Blend Shape。在Unreal 4引擎中,Morph Target可以被叠加到Skeletal Mesh上,形成顶点动画。其使用通常需要在Maya等3D建模工具中把顶点动画制作完成,并导入Unreal 4编辑器。然后,通过Event Graph中的Set Morph Target节点进行设置,如下图所示:

其中,Target表示Skeletal Mesh,Morph Target Name表示该网格中的某一个Morph Target,Value表示Morph Target与 Skeletal Mesh的插值系数,其取值为[0, 1]。当取值为0时,显示原始网格形状,当取值为1时显示Morph Target形状,取值0~1显示插值结果。其形变效果如下图所示:

四、Aim Offset
Aim Offset在Unreal 4引擎中是动画模块中的一个特殊功能,其主要用于制作射击游戏的瞄准动画。本节UWA将重点介绍其使用方法。
Aim Offset本质上是一个动画融合的工具,它的操作方式类似Blend Space。不同的是Aim Offset用于融合的是角色在不同方向瞄准的Pose,Blend Space则是将不同的动画进行融合。在使用Aim Offset之前需要先创建角色在不同方向的瞄准动作,如下图所示:

然后,基于角色骨骼创建Aim Offset资源,如下图所示:

双击Aim Offset资源并设置好Yaw和Pitch坐标轴,即可将之前创建好的瞄准Pose拖入其中对应的位置,如下图所示:


其中,上图显示了设置好上下左右各方向的瞄准Pose后的坐标轴。使用Aim Offset时可以直接将其拖入Anim Graph中并与Locomotion输出Pose融合,如下图所示:

转动角色到不同方向即可融合出不同的瞄准动画,如下图所示:

五、动画模块小结
Unreal 4引擎提供了丰富的动画融合、重定向、IK以及顶点动画等工具,方便制作出逼真的动画效果。同时,其提供的功能同样非常强大,且在细节处足见其深厚的技术功力。其中,Animation Montage提供了将动画自由切分、组合、循环以及跳转的功能;Blend Space以及Aim Offset提供了根据二维参数以及动画样本进行动画融合的功能;Post Process Animation Blueprint提供了对动画骨骼信息进行访问和使用的功能,并且配合AnimDymanic可以支持角色身上配件基于物体的动画;IK和Morph Target功能则添加了角色动画的精准度和细节。
参考文献
【1】https://docs.unrealengine.com/latest/INT/Engine/Animation/AnimHowTo/Retargeting/index.html#retargetingusingthesameskeleton





秘密档案2手机版
快餐店17号
来丫
热血斗魂
武林红颜九游版
圣杯三国疯趣版
我的男子公寓(测试服)
指上水世界游戏