UE高级运动系统(ALSv4)解构(02)进阶知识

1. 动画通知

通知有Notify和Notify State两种,这和UI动画的Trigger和Repeater类似,Notify是一瞬间发出的,而Notify State会持续一段时间。
同时Notify又可分为Skeleton Notify、AnimNotify、原生方法,三种实现方式。
(1)Skeleton Notify是一个纯粹的事件,在动画蓝图中可以拿到。

在这里插入图片描述

在这里插入图片描述

注意:Skeleton Notify特殊的,不能复用,只是针对于这一种动画蓝图,不同的动画蓝图无法共享。

(2)创建AnimNotify蓝图类,通过重载方法来编写逻辑,并且这种方式可以达到复用的目的。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 根运动

根运动是指动画来控制角色骨架的运动,普通运动就算运动朝前翻滚,骨架的根节点也一直是在原地的。根运动可以在动画属性中开启。

在这里插入图片描述

注意:根运动一般是在播放蒙太奇的时候才使用。

3. 状态机与过渡规则

状态机是用来控制在什么样的条件下,人物应该进入什么状态,播放什么动画的一个东西。

在这里插入图片描述

在这里插入图片描述

过渡规则是控制状态机执行的条件,当中有多个属性我们可以进行设置,我们依次进行介绍。

(1)Transition栏

在这里插入图片描述

Blend Logic:Standard Blend(达成过渡规则时,在一个状态播放完后,才进入过渡规则的状态),Inertialization(惯性化,需要在动画蓝图中添加Inertialization节点,可以直接过渡,不用等上一个播放完毕)。

在这里插入图片描述

Transition Rule Sharing:可点击Promote To Shared,创建一个共享,同时规则会变成橘黄色,其它的过渡规则可以设置此共享,就可以做到设置一致,不用重新设置。

Automatic Rule Based on Sequence Player in State:勾选后,在状态播放完后会自动播放下一个状态,实现与下图的逻辑等同。

在这里插入图片描述

(2)Blend Settings栏

在这里插入图片描述

Duration:切换的时间,如果不为0,就会对两个状态的动画进行混合。
Mode:过渡时,使用的过渡函数,使用CPU直接计算。
Custom Blend Curve:和Mode一样,需要在Mode栏选择Custom,才能使用这个曲线,过渡时,使用自定义曲线,使用内存去读曲线。
Blend Profile:混合配置,我们可以去配置每个骨骼的混合权重,我们可以在骨架界面去配置此项。
Transition Crossfade Sharing:共享,但是不能同步设置Blend Profile项。

在这里插入图片描述
注意:上图中的骨骼权重值不能为0,因为源码的计算是1/权重值,如果为0就崩溃了。

(3)Notifications栏

在这里插入图片描述
Notifications中的事件,和在动画中的骨骼通知一样,本质就是个事件,我们填入自定义的事件名字,我们就能在动画蓝图中调用该事件。

在这里插入图片描述

在这里插入图片描述

注意:要使用此自定义通知事件,包含该事件的状态机一定要连接进去,不然没有该事件。

4. 管道

管道是一个特殊的状态,执行它不需要时间,只会包含一个判断条件。

在这里插入图片描述

在这里插入图片描述

管道的作用:在于多增加了一次判断,可以进行状态的二次控制。

5. 保存姿势

保存姿势,相当于对姿势的缓存,先把该状态姿势进行保存,然后在不同的状态机中去修改不同的属性,达到保存原有姿势的作用。用New Save cached pose…对姿势进行保存,用Use cached pose “XXX”对保存的姿势进行提取。

在这里插入图片描述

6. 动画层与动画接口

(1)动画层
动画层类似于动画中的函数,可以极大的简化逻辑和提高封装。

在这里插入图片描述

使用Linked Anim Layer: XXX来使用自己创建的动画层。

在这里插入图片描述

(2)动画层接口
动画层接口类似于函数接口。

在这里插入图片描述

我们就能在动画蓝图的设置中找到我们创建的动画层接口。

在这里插入图片描述

添加后自动出现接口中的函数。

在这里插入图片描述

(3)动画层接口不同实现的关联使用
因为是接口的原因,如果有两个动画蓝图类继承自同一个动画层接口,但是其各自的动画层实现不一样,我们可以通过人物Mesh的Link Anim Class Layers对该动画蓝图类的动画层各自不同的实现进行切换。

在这里插入图片描述

注意:动画层可以用来处理交互逻辑,不用写两套逻辑,在不同动画蓝图中,使用不同的动画层接口的实现,直接切换动画蓝图就可以。

7. 动画修改器

在这里插入图片描述

动画修改器中包含两个重载函数,恢复时和应用时。

在这里插入图片描述

动画修改器的使用如下

在这里插入图片描述

在这里插入图片描述

注意:动画修改器相当于一个Editor Utility,只是帮助你去修改编辑动画里的曲线、骨骼位置等东西。

8. 摄像机震动

摄像机的震动我们选择使用Client Start Camera Shake函数和MatineeCameraShake蓝图类来实现。

在这里插入图片描述

在这里插入图片描述

使用创建动画通知类(AnimNotify)的方式调用这个方法,将创建的MatineeCameraShake类配置进去,即可在跑步动画中使用摄像机震动。

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值