【UE动画】虚幻动画系统
一. 动画简析
1.1 2D动画、3D动画、骨骼动画
- 早期游戏动画被分为2D和3D两种(实现手段)
- 2D 游戏动画
- 无骨骼的实现手段,最简单暴力,通过图片帧的切换,完成动画系统的动画播放,最贴近动画实质性,切帧播放
- 但帧动画调整成本大,浪费资源,每个姿势都需要进行重复渲染,程序负担大
- 3D 游戏动画
- 早期使用顶点动画制作基本角色动画,
- 通过移动三维模型的顶点位置和相对位置,实现简单的模型旋转、位移等操作,复杂动画通过一定的算法,进行整体(或部分)模型顶点的位移,来实现动作展现
- 2D 游戏动画
- 骨骼动画
- 游戏骨骼动画,也是模型动画方式的一种(顶点动画,骨骼动画)
- 由骨骼牵动模型进行动画的表现,支持结构化,可以通过结构细化骨骼层级关系方便动画调整,易于创建编辑
- 动画信息是通过骨骼的转动位移来影响模型顶点信息,需要较高的时时运算处理能力
1.2 虚幻动画系统
- 虚幻中的动画
- 动画合成:将两段动画片段进行拼接,组合成为新的动画(合成动画禁止使用被调整的动画,例如蒙太奇,混合空间等)
- 动画蓝图:可以用来编写动画逻辑数据蓝图
- 动画蒙太奇:用来将动画进行逻辑拆分与组合
- 混合空间:基于基准动作,将多个动画通过使用驱动值(最多两个)进行混合过度
- 目标偏移:使用动画叠加空间,将多个动画进行组合,最后使用驱动数据(最多两个)进行驱动调整
- 姿势资源:允许将动画与基准动作之间过度时借助曲线进行调整,可以构建表情动画(表情这东西不是一直播放的)
- 虚幻动画系统
- 虚幻的动画系统由骨架网格,动画片段,动画逻辑,骨架物理组成
- ① 骨架网格
- 骨架是一组由骨骼位置和旋转角度组成的树状结构
- 每个骨架网格物体需要一个相关的骨架资源(可以在导入骨架网格物体时创建一个新的骨架资源,或选择一个已有的骨架资源)
- 进行重定向时需注意到:骨架的初始部分是由根据其创建该骨架的骨架网格物体定义的
- 要想共享动画,那么骨架网格物体必须使用同样的骨架资源(共享同样的骨架资源,要求不要破坏骨架网格物体中的骨骼层次结构的命名顺序)
- 骨架是一组由骨骼位置和旋转角度组成的树状结构
- ② 动画序列
- 是由其他软件(Maya,3DMax等)进行输出的,是可在骨架网格体上播放的独立的动画资源,包含了一些关键帧,这些关键帧可以及时地指出某个特定点处的一个骨骼的位置、旋转度及缩放比例
- 动画序列驱动骨骼,骨骼带动网格
- 但动画与骨骼不是约束关系,可通过重定向,将一套动画转嫁到另一套骨骼上
- ③ 动画组合方式
- 虚幻中的动画组合方式分为两种:附加动画与混合动画(决定了动画过渡方式和组合方式)
- 附加动画
- A动画是1,B动画是1,叠加后动画是2
- 动画都可以随时作为完全动画或者附加动画进行使用
- 系统将在必要时进行适当计算, 把数据转换为偏移,不需要提前指定被识别为附加动画的动画
- (如将上半身开枪的动画,叠加到任何下半身姿势上,以构建多样性动画)
-
混合动画
-
A动画是1,B动画是2,叠加后动画是1.5
- 使用 “混合节点” 和 “混合空间” 后,可将各种动画混合在一起,实现一个 更为复杂的最终姿势,可在各种不同情形下对单一源动画 进行重复利用
- (举例而言,跑步动画可以和瞄准姿势/面部表情动画混合,实现一边跑步一边举枪瞄准,或者一边跑步一边说话的最终效果;并且在这种状态下,保持源动画的独立)
-
- ① 骨架网格
- 动画片段包括:动画片段,动画组合,动画偏移,混合空间,蒙太奇
- 虚幻动画系统在设计上将动画与角色逻辑彻底分开,使得动画系统尽量不依赖角色系统,从而可以更清晰的将角色系统与动画系统进行解耦设计
二. 虚幻动画系统的使用
1. UE导入角色后一般会获得以下三种文件:
- ① 骨骼网格体(理解成蒙皮的模型)
- ② 物理资产(物理效果)
- ③ 骨骼
2. 调试动画时以便观察,cmd输入命令:
ShowDebug ANIMATION //开启 ShowDebug None //关闭
三. 重定向动画
1. 先在虚幻商城嫖一套动画来,添加到工程
2. 选中需要动画重定向的资源 - 重定向动画资产
等等,好像有亿点问题
程序化批量处理有位移的动画
- 1. 程序化绑定根骨骼
- 将有位移的动画导入Maya
-
- 在脚本编译器中输入如下代码:
JointTool; //骨骼工具 select -d; joint -p 0 0 0; //创建一个在(0,0,0)位置的骨骼joint SnapToGrid; dR_enterForSnap; select -r joint1; rename "joint1" "root"; //重命名为root select -r mixamorig:Hips; select -add root; parent;
- 全选代码,按鼠标中键拖入
- 在脚本编译器中输入如下代码:
- 2. 曲线编辑器禁用位移关键帧
- 1. 第一次导入骨骼和动画
-
第二次批量导入动画(注意:动画需要经过处理:添加根骨骼 + 去位移)
-
动画重定向(此处需要花费亿点时间)
-
调节骨骼属性,使控制动画高度
-
对动画进行骨骼重定向
-
大功告成,将小白人模型换成了Mixamo
将Blender节点动画导入UE
- 在输出节点前添加 “输出实例 Realize Instances” 节点
- 输出格式为 .usd 文件,注意不能输出为 fbx 格式
- 在UE中装好插件:USD Importer / USD Multi-User synchronizationusd
- 将 .usd 文件导入UE,打开usd文件,就可以得到一个Sequence啦!!!
未完待续...