[官方培训]08-UE动画基础 戴浩军 Epic 笔记
UE动画基础
UE动画概述
- UE动画功能强大,复杂,灵活
- 不同类型项目对动画系统应用范围各不相同
- “动画”作为一个宽泛概念,在引擎中有多种实现方式,需要灵活选择
影视CG相关常见动画种类浏览
- 骨骼网格体动画(动画序列,变形目标,动画曲线,Pose Asset)
- 物理动画(刚体,布料,破碎,实时毛发模拟)
- 顶点动画缓存
- 顶点材质动画(世界顶点偏移)
- 毛发Groom Cache动画
- 时间轴动画(Sequencer动画)
- 时间轴相机动画
- 时间轴控制绑定动画
骨骼网格体动画
骨骼动画就是用骨骼位置和蒙皮信息带动骨骼网格体的模型顶点位置,从而实现模型的动画效果。
动画序列
动画序列是骨骼动画系统中常见的动画资产类型,通常个用来表现角色肢体的动画。
变形目标
变形目标对应的就是Maya中的BlendShape,是通过在不同的模型顶点形态之间进行插值,结合动画曲线,来实现形变动画。通常用来表现角色身体和面部的肌肉的变形动画。
动画曲线
动画曲线是指在动画序列中通过改变某些属性来实现多种动画数据统一变化的一种方式。
曲线有三种类型:
- 目标变形曲线 专用于驱动目标变形的数值,基于骨骼网格体资产。
- 属性曲线 是一种通用曲线,可以在动画蓝图中实时读取曲线当前数值,理论上可以用来驱动任何数据,基于骨骼资产。
- 材质曲线 用于驱动骨骼网格指定的材质中具有相同名称的材质参数,基于骨骼资产。实际上材质曲线是专用的属性曲线,可以在编辑器中随时切换。可以在DCC中预先添加所需要的属性,并在时间轴上设置关键帧来制作好属性曲线,通过FBX格式导入UE。
姿势资产(Pose Asset)
可以将包含多种曲线的动画序列逐帧转换为一组pose,通过在动画蓝图中输入数据的方式来驱动pose,实现基于曲线的综合动画效果。目前主要用于驱动角色面部动画。
物理动画
通过实时的物理模拟来实现刚体,布料,破碎,毛发等实时物理模拟动画效果。
顶点动画缓存
本质上就是在DCC软件的时间轴上,记录模型每个顶点的唯一动画信息。导出例如为alembic格式,再导入虚幻引擎。作为几何缓存或骨骼动画的变形目标进行实时播放。
顶点材质动画
顶点材质动画指的是通过材质中的世界位置偏移节点,配合UV信息的变化来表现植被,水面,环境和布料等动态规律明显的几何形变动画效果。
毛发Groom Cache动画
可以将外部预解算的Groom毛发动画,通入abc格式导入引擎中。
时间轴动画(Sequencer动画)
Sequencer动画是指在虚幻引擎的Sequencer编辑器中,通过直接修改场景对象属性,尤其是transform属性而生成的动画效果。还可以在DCC软件中制作好,再通过FBX格式导入。
时间轴相机动画
时间轴相机动画是Sequencer动画的一种。相机动画还可以将其特有的焦距,光圈等相机专用参数导入到引擎。
时间轴控制绑定动画
现在可以导入外部的DCC软件中的动画数据。
骨骼动画功能与特性
CG项目相关
- DCC动画制作要求
虚幻引擎对DCC中骨骼网格和骨骼动画导入数据的兼容性很强,只要是在各内软件中具有蒙皮信息的物体,通过FBX格式导出后都能导入骨骼网格体和骨架。角色模型蒙皮的对象可以是符合虚幻标准的骨架,也可以是任意其它骨架。甚至在Max等软件中可以不用骨骼而是直接蒙皮到其它几何体上。都可以作为骨骼网格体导入引擎。
唯一要注意的要求是同一套骨架内的骨骼名称不能相同,否则导入引擎会报错。
- 动画导入/导出
骨骼动画如何从DCC软件中导出并导入UE?
以Maya为例,我们选中几何体和骨骼导出为FBX格式,在导出设置中我们只需要勾选动画导出就得到了最基本的包含模型骨骼和动画的fbx文件。然后在虚幻引擎fbx导入器中确保勾选导入动画,就可以完成模型,骨骼和动画数据的最基本的导入。
动画数据导入导出的注意点
- 系统单位的问题
对于影视CG项目而言,推荐的做法是一开始就把系统单位设置为厘米。
模型尺寸或动画距离都基于厘米来测量。尽量不要在制作过程中修改系统单位,这样在导入引擎后既可以保证骨骼没有缩放又能够保证动画位移数据尽可能一致。要杜绝因为系统单位而引起的骨骼缩放,这样的话即使在引擎中手动弥补也会带来其它问题。
- 动画导入范围
比如我们在Maya中有一段动画时间轴上的播放范围是1-30帧,但是有关键帧的范围只有1-15帧。此时导出动画,并在导入引擎时动画长度的选项是默认的导出时间。那么最终导入的动画序列长度就是30帧,其中只有15帧有动画数据。
此时把动画长度选项改为带动画的时间,重新导入动画,动画序列的长度就变成了15帧,通过这个方式可以确保动画数据的精简。
引擎导出到外部DCC
在引擎中选中动画序列导出为FBX格式,并在Maya中用fbx导入器导入即可,记得在导入设置中选择Unreal Take这个动画轨道。引擎中的强制锁定跟骨骼等效果在导出后还原成了位移动画。通过这个方式可以最大程度保留原始动画数据。
- 动画重定向
将针对某个角色制作的动画数据适配给另一个角色。
- Live Link
Live Link是虚幻引擎的动画插件,可以用于从Maya中将动画数据实时传输到虚幻引擎。也可以通过移动设备进行面部实时动捕。
- 引擎内修改或创作动画
控制绑定(Control Rig)是虚幻引擎推出的实时绑定系统,结合动画模式可以让我们直接在引擎编辑器中创作骨骼动画。
CG中的动画环节
如何确保骨骼动画数据保真度
骨骼动画数据从DCC到UE失真的因素:
- Maya关节方向导致的数据显示差异
- 坐标系转换导致精度的误差
- 帧率差异导致动画长度不同
- Maya数据显示精度
- Maya动画曲线信息无法导出到UE,导致帧之间插值方式有差异
- Maya双精度浮点数和UE动画数据但精度浮点数的差异
- 动画压缩导致高频信息丢失
- 插值方式会改变动画形态
下面通过一个案例来具体说明
最佳实践:
- Maya系统单位设置为厘米,项目中不再修改
- Maya设置Z-up
- 显示Maya数值小数点后6位
- Maya中避免帧率缩放,一旦缩放需要手动调整关键帧位置
- Maya从0帧开始制作动画,导出动画FBX时帧数范围保持0到最后一帧
- UE中导入动画时选择“导出的时间”,手动设置导入动画数据的时长
- UE中导入动画时选择和Maya中相同的采样率,并针对精度要求高的动画提高帧率和采样率
- 避免因为距离过远的动画和幅度过小的动画数值(例如角色离世界中心很远,或者做一个尺寸很小的动画,在引擎中放大使用等)
- 高频动画关闭动画压缩,并根据需要修改帧过渡方式
如何选择动画实现方式
如何通过动画环节的快速迭代最大化实时流程的价值
- 通过原型+迭代的方式并行推进动画制作
- 通过Live Link实时预览引擎内效果
- 引擎内修改和创作动画
通过控制绑定(Control Rig)和动画模式直接引擎内修改。
- 引擎内实时动作捕捉
动画案例简析
Meerkat Demo(狐獴)案例工程动画技术分析
- 动画方法分析和相关注意事项介绍
- 把角色部件封装为蓝图
- 狐獴肢体骨骼动画和表情变形目标动画
- Live Link应用
- 基于Control Rig和动画模式的引擎内创作动画
Slay Animation Sample案例工程动画技术分析
- 按镜头划分动画序列资产的管理方式
- 在角色蓝图中协同动画播放
- Sequencer时间轴动画和骨骼动画结合应用
- Addtive表情动画和肢体动画结合应用
- 实时布料物理模拟动画的应用
参考资料汇总
参考资料索引
官方案例工程
- Content Example
- Meerkat Demo
- Slay Animation Sample
- Metahumans
- Face AR Sample
- Valley of the Ancient