前言

如果你是一位完全没有接触过UE的初学者, 不建议直接上手看示例项目, 因为这种情况下连哪些东西怎么打开都不知道, 是没办法学的. 建议在B站找一个UE蓝图入门教程过一遍, 然后找一个UE角色动画基础教程过一遍. 之后再来上手看项目会好很多. 这里推荐一下我个人看的两个入门教程:

虚幻5基础,虚幻5蓝图基础,虚幻5蓝图零基础入门(已完结)_哔哩哔哩_bilibili

虚幻(UE5)角色动画基础_哔哩哔哩_bilibili

加起来十一个小时. 由于内容非常入门, 肝一点开倍速一两天就能学完.

本文是一位UE初学者的学习笔记, 学习的内容是官方示例项目Content Example. 不保证没有错误, 仅供参考.

当然, 如果你是因为懒得学这个项目, 来找找有没有文章直接讲解这个项目的, 那应该会比较适合你.

Mirror

概述: 通过一个数据表完成镜像映射, 从而让一个动作镜像播放.

动画蓝图中:

image

如图, 如果从节点1连接至输出, 就会播放镜像后的动画, 如果直接输出, 就会播放原动画.

image

选择这个mirror节点, 可以看到右边栏可选择数据表.

数据表内部大概长这样:

image

RootMotion

概述: 为skeletal mesh添加一个根(root)骨骼, 并在动画中加入对根骨骼的移动, 就能实现角色随动画改变位置.

项目里给的演示是, 用同一个带有根骨骼的角色模型, 播放动作相同的两个动画, 其中一个带有root motion, 另一个不带root motion. 结果就是前者的根骨骼会随着动画改变, 后者不会.

项目还展示了root motion的应用. 大概来说, 就是如果一个动画有root motion, 那么根骨骼的位移可以被移动组件提取和使用.

但是我看蓝图好像没有特意去提取这个位移, 而是直接绘制了胶囊体. 所以不清楚是否需要特地去获取根骨骼的位移.

image

其hierarchy也是很正常, 没有特别动过. 不排除胶囊体内部有哪些蛇者与此有关, 后续遇到再补充.

Additive Animations

概述: 当一个动画作为附加动画播放时, 意味着它将添加到另一个动画上, 而非覆盖另一个动画. 而一个动画如果想作为附加动画, 那么它需要有一个base pose. 可附加动画将计算其自身与base pose之间的差异, 然后这个差异将被叠加上去.

image

在项目给出的演示中, base pose是跑步动作, 附加动画是受击动作(头朝后仰). 这里两个动作的差异体现在: 腿部跑动, 手臂动作, 头部位置. 最终叠加的效果为: 头部后仰, 腿部跑动, 手臂更多与base pose相同, 不过会有一点偏移. 这部分偏移效果应该就是附加动画叠加后产生的.

动画蓝图:

image

实验了下, alpha值在0到1之间有效(取大于1的值效果与1相同), 1的时候附加动画的叠加效果体现到最大, 不过看下来就算取1, 效果也比较有限. 附加动画确实更多是一个"附加"的作用.

Blendspaces

概述:
image

动画蓝图:

image

可以看到两个关于混合空间的节点, 一个是1D, 一个是2D, 分别就代表了输入值的维度.

双击节点能够打开对应的资源文件.

image

它们的区别主要就是左边栏中的Axis Settings. 在1D文件中, 只有Horizontal Axis子菜单, 而在2D中还会有一个Vertical Axis子菜单. 我们还能看到正中央下方的坐标图, 可以认为, horizontal axis控制的是水平方向的相关参数, vertical axis控制的是竖直方向的相关参数.

坐标图中, 圈出来的三个点就是被拖入坐标图的动画资源, 混合空间将根据输入值(本例中为speed)来混合被拖入坐标图中的动画, 从而得到当前应该播放的动画.

我们需要在event graph中自行实现对输入值的更新. 在项目中, 使用的是slider.

(仅展示部分)

image

Aim Offsets

概述: 瞄准偏移. 本质上是混合空间与附加动画的结合.

我觉得原文说的有点太泛了, 顺便贴一下ai.

image

豆包解释:

image
image

动画蓝图:

image

关键就是那两个aimoffset_player, 双击打开就能进行配置. 但好像只能用一维的值来做, 其他节点我试了一下都报错, 不太清楚什么原因. 后续遇到了补充.

Montages & Slots

概述: 动画蒙太奇节点比较复杂, 光看文字还是理解不了的. 这里推一下这个视频, 讲的简洁易懂. 作为入门来说应该足够.

ue5教程15:使用动画蒙太奇制作角色攻击动作,Mixamo网站的使用_哔哩哔哩_bilibili

这里提一下视频没讲到但是项目展示讲到的点: 如果蒙太奇包含了一个附加动画, 那么就会在已有动画的基础上添加附加动画; 否则就会覆盖所有动画.

以及, 视频展示的是在角色蓝图中调用播放蒙太奇, 而项目展示的是在动画蓝图的eventGraph中调用播放蒙太奇.

image

Blend Curves

概述: 可以用曲线来控制blend的过程.

点击blend节点, 就能自行配置曲线

image

Blend Profiles

概述:

image

动画蓝图:

image

项目说blend profile是在skeleton tree中配置的, 我就找了下:

image

进入对应skeletal mesh的文件中, 左边栏就能找到blend profile的相关配置. 他会给每个骨骼添加一个值, 这个值如何设置就如项目讲解的一样.

Inertial(惯性化)

概述: inertial比较符合它的名字. 在动画切换的时候, 会停止当前动画的计算, 并平滑地转换至下一个动画. 在项目的演示中表现为: 跑步跑到一半动作直接停了下来, 缓慢混合至战力, 非常僵硬.

惯性化似乎并不总是一个好选择. 以项目给出的演示为例, 从站立到跑步这个过程的切换会显得十分鬼畜突然, 相比之下正常的blend节点就能做的很好. 从跑步切换到站立的过程同样如此.

动画蓝图中, 可以在blend节点后使用惯性化.

image

我看了下, 惯性化节点能配置的东西相当少. 以后用到了再补充吧.

Blend Nodes

概述: 动画蓝图中会有很多blend节点可以用.

image
image

State Machine(状态机)

概述: 动画系统的经典设计了, 应该无需多言.

在animgraph中可以创建一个动画状态机, 双击就能进去配置.

image
image

Blendspace Graph

概述: 前面已经接触过blendspace了, 它是一种资源文件, 可以在动画蓝图中播放. 而动画蓝图也有一个节点, 也是个blendspace. 它不以资源文件的形式存在, 而是个可配置的节点, 灵活性比较高.

image

双击进节点:

image

右键可以添加新采样点

image

我们可以双击采样点, 配置该采样点输出的动画.

image

Layering

概述: 基于骨骼进行分层. 比如上半身播放动画1, 下半身播放动画2.

image

右边栏框住的部分就是配置分层的地方. 这里以spine_01为分界点.

(spine_01位置示意图)

image

Layering Montage

概述: layering与蒙太奇相结合.

这里直接讲一下项目给的蓝图.

image

配合项目场景中的逻辑, 应该可以理解为: 上半身和下半身正常状态下都是跑步. 然后在插槽upper body中, 当触发换弹按钮时会直接播放换弹动画. 体现为整个人物停下来, 换弹. 而lower body中, 换弹动画作为附加动画在触发换弹时被播放. 而在蓝图中, 使用了Layerd blend per bone节点, 将二者结合(分界点同样是spine_01). 这样一来, 在触发换弹时, 上半身会播放完整的上半身的换弹动画, 下半身播放被换单动画附加后的下半身的动画. 最后体现为: 上半身有明显换弹动作, 并且下半身(腰部, 腿部等)会随着换弹动作而有所变换. 显然, 二者都保留了原有的特征.