UE4动画系统(二)

/ 0

动画曲线

动画曲线(Animation Curves)提供一种在动画播放时更改材质参数值或变形目标值的方法。

指定要修改的资源(材质或变形目标),命名曲线,然后在动画的持续时间内调整关键帧值。

动画通知

用于播放音效、一段时间的特效、动画蓝图内的事件调用等。直接添加的动画蓝图内的事件,只能在当前动画蓝图中使用,如果想要更通用,可以自己添加继承自 AnimNotify 的通知子类。

根运动

由动画控制角色移动,比如滑铲、翻滚,带位移的技能动画等。

在动画序列的根运动分类里设置启用根运动,并勾选强制根锁定。

强制根锁定是让动画移动的位置和角色的位置锁定。

根运动一般用在程序中播放蒙太奇动画时使用,也有些需要做无缝运动的ARPG单机游戏也会使用根运动动画直接替代程序移动。

状态机

先实现运动相关(Locomotion)状态机,然后缓存。

再使用 变换(修改)骨骼 来实现指定部位偏移倾斜,比如头部、上半身偏移倾斜等。

再实现 IK 动画。

最后输出姿势。

过渡条件

状态机里的状态之间的过渡都需要设置条件,满足条件才可以过渡。

基于状态中序列播放器的自动规则:表示上一个状态播放完毕直接过渡。这样就无需自己再去判断动画播放剩余时间。

过渡规则共享:将过渡规则共享给其他过渡节点使用,避免重复一样的修改。

惯性化:设置惯性化后,还需要在状态的输出后面添加一个惯性化节点才能生效,让动画过渡更加流畅。

混合设置

时长:当前状态过渡到下一个状态需要的时长,这个用于平滑过渡的。

模式:提供了一些预设曲线,也可以自定义混合曲线。

混合配置:针对骨骼单独配置混合速度。先在骨骼页面左下角,创建描述文件。小于1是变慢,大于1是变快。然后再过渡条件节点设置混合配置。

事件

和动画序列里添加的通知类似,只是这里可以在过渡前、过渡后、过渡被中断的时候调用事件。

导管

从状态引出来的节点里除了状态,还有一个是导管。

导管也是状态的一种,也是需要过渡的。但是,这个状态是没有动画的,只是一个纯粹的条件状态。

作为一个前提条件,比如导管用于判断角色是否死亡,然后再后面过渡的多种死亡的状态播放不同动画,让结构更清晰。

保存姿势

将输出缓存姿势后,可以在多个地方直接使用缓存的姿势,避免把动画蓝图连线弄得很复杂。

姿势快照与布娃娃系统

在角色蓝图中使用节点 保存姿势快照 保存布娃娃系统运动后的最后一帧,在动画蓝图中使用节点 姿势快照 进行混合过渡。

比如被击飞,倒地后的姿势保存姿势快照后,在动画蓝图里和其他姿势进行混合。这样就可以从倒地姿势过渡到其他姿势。

流程

1.胶囊体设置无碰撞、骨骼网格体设置纯物理、骨骼网格体设置碰撞对象类型为物理行体、骨骼网格体设置所有形体模拟物理现象为真,最后保存位置(否则角色会陷入地底)。

2.先保存物理后的姿势快照,然后播放蒙太奇起身动画,在动画蓝图里使用姿势快照混合过渡到播放起身动画蒙太奇的插槽。

3.胶囊体设置启用碰撞和物理、骨骼网格体设置纯查询、骨骼网格体设置碰撞对象类型为静态场景、骨骼网格体设置所有形体模拟物理现象为假,最后恢复位置。