虚幻引擎学习之路:动画模块进阶篇(二)

简介:

一、动画重定向

游戏引擎动画模块中的动画重定向(Animation Retargeting)可用于在不同模型上重用动画文件,该功能类似于Unity引擎中Humanoid模式下的Retargeting功能。Unreal 4引擎对使用相同Skeleton Asset的Skeletal Mesh支持动画重定向,并且支持不同尺寸角色动画的重定向,其细节把握非常到位,具体如下图所示:
请输入图片描述
请输入图片描述
上图显示了高、中、低三个不同的模型,并以骨骼长度中等模型的动画做重定向。在不做骨骼缩放处理的情况下直接做重定向使得较矮的模型被拉伸,较高的模型出现了穿插。

Unreal 4引擎对该问题提供了解决方案。打开两个Skeletal Mesh共用的Skeleton Asset,并勾选Show Retargeting Options,即可看到骨骼结构图右边显示骨骼Retargeting设置,如下图所示:
请输入图片描述
点开向下箭头会显示四个选项:Animation、Skeleton、Animation Scaled以及Animation Relative,如下图所示:
请输入图片描述
该选项表示了骨骼的Transform数据来源。其中,Animation选项表示Transform来自动画文件,Skeleton选项表示Transform来自骨骼文件(即静态骨骼),Animation Scaled表示Transform来自动画文件,但根据原始Skeletal Mesh中的骨骼长度进行缩放。对于一般情况,只需要将Root、IK和Weapon骨骼设置成Animation,Pelvis骨骼(一般为根节点)设置成Animation Scaled,其他骨骼均设置成Skeleton即可。设置完成后即可输出经过骨骼缩放后的动画重定向结果,如下图所示:
请输入图片描述
其中,黄色线表示动画文件原始模型的骨骼,白色线表示进行动画重定向的模型骨骼。

对于使用不同Skeleton Asset的Skeletal Mesh,Unreal 4引擎支持使用Rig文件将两者的骨骼进行映射,过程类似于Unity引擎中对Humanoid类型骨骼的模型进行标准人形骨骼映射。然后,即可支持动画重定向功能。有兴趣的读者可参考Unreal 4官方网站动画重定向教程【1】,进一步了解。


二、逆向运动学

游戏引擎中逆向运动学(Inverse Kinematics)可以弥补普通动画中不精确的情况,从而生成更加真实的角色动画。IK在游戏角色动画中有多种应用,其中比较常用的情况是使得角色双脚能贴合在高低不平的地面或是当角色触碰某些物品时能精确地碰到物品的位置,如下图所示:
请输入图片描述
其中,左图是没有使用IK的情况,在楼梯上由于角色两脚地面高低不一致,导致右脚穿插入楼梯。右图是使用了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节点,如下图所示:
请输入图片描述
其中,红色框表示用Two Bone IK节点计算右脚的IK解,蓝色框表示Two Bone IK节点计算左脚的IK解。其中,Joint Target Location参数是为了限定膝盖节点的弯曲方向。

由此,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显示插值结果。其形变效果如下图所示:
请输入图片描述
上图显示了角色左边眉头被挤压的Morph Target叠加到Skeletal Mesh上的结果。


四、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功能则添加了角色动画的精准度和细节。






原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
4月前
|
JavaScript 调度
Three.js开发秘籍:FlyControls的拖拽视角问题解决方案
Three.js开发秘籍:FlyControls的拖拽视角问题解决方案
64 0
|
5月前
|
JavaScript
小而美的IKUN-UI组件库源码学习(前言)
小而美的IKUN-UI组件库源码学习(前言)
128 0
小而美的IKUN-UI组件库源码学习(前言)
|
7月前
|
API 开发者
通过使用Phaser游戏框架,我成功地完成了“跳跃之旅”项目的开发
【5月更文挑战第14天】在Phaser框架下开发2D平台跳跃游戏"跳跃之旅"时,面临性能优化、碰撞检测与响应、图形和动画等挑战。通过使用Phaser的性能分析工具和资源优化策略提升帧率,利用内置物理引擎实现精确碰撞,编写自定义碰撞响应函数,以及借助图形绘制和动画系统创建精美动画,成功解决了这些问题。此过程提升了开发者的技术水平和对游戏开发的理解。
73 4
|
前端开发 容器
重识Flutter — 探索Slivers的奇妙世界(综合实例)
本文将通过一个炫酷的综合案例来帮助你理解Slivers,和我一起继续探索Sliver的世界,利用其强大的特性和灵活的组合方式,创建出更加有趣和具有交互性的滚动界面吧!
|
图形学 异构计算 数据可视化