Unreal蓝图-day2
砂糖桑
Aug 22, 2022
Last edited: 2022-8-23
type
Post
status
Published
date
Aug 22, 2022
slug
unreal-day2
summary
学习Unreal蓝图的第二天。主要是角色动画相关的内容。
tags
虚幻4蓝图
category
虚幻引擎
icon
password
Property
Aug 23, 2022 06:36 AM
学习B站上的《UE4蓝图开发生存游戏教程》做的笔记。
第二天学习了P10-P15,主要是UE4人物动画的相关知识。上手之后还是挺简单的。
课程按照由浅入深的方式进行讲解,前面做的到后面又进行了大修改(有点浪费时间,但是很值得),但是为了笔记的简洁,就单刀直入了。
动画重定向
动画与骨骼绑定,一个骨骼的动画应用到另一个骨骼上一般都会出问题。动画重定向的目的就是通过手动指定两个骨骼结点间的映射关系,将一个骨骼的动画比较好地应用到另一个骨骼上。
之前再Mixamo上下载的动画使用的骨骼和UE4自带人物模型使用的骨骼是不同的,所以需要动画重定向。
动画重定向的步骤为:
- 调整UE4自带模型(需要重定向的骨骼)的姿势和Mixamo模型(与现有动画匹配的骨骼)的姿势基本相同(调节前者的姿势)。这是进行重定向的前置步骤。

- 姿势调整好后,进入具栏的重定向管理器,点击修改姿势,选择使用当前姿势。这样可以保存调整好的姿势。

- 切换到Mixamo的模型,进入重定向管理器,点击自动映射。自动映射的结果一般是很糟的,还需要一个个去检查与修改。

- 点击显示高级项,进行更细节(如手指)的匹配。

如果需要频繁进行Mixamo与UE自带模型的映射,可以将该映射保存下来。
- 选择需要重定向的动画,右键选择复制动画资产并重定向。

- 选择骨骼后,直接重定向即可。

如果源的模型为空,那么还需要将源的骨骼与相应的网格模型绑定。选择预览网格体:

- 现在就可以再资产管理器中看到重定向后的动画了:

现在从Mixamo上下载的动画已经可以很好地应用到UE4自带的人物模型上面了。
动画蓝图的原理
动画蓝图的作用设置人物的各种操作对应的动画,它的原理是数据驱动动画。
- 在角色蓝图中点击mesh组件,细节中可以看到该模型使用的动画蓝图。动画蓝图与骨骼绑定,一个骨骼又对应一个预览网格体 → 网格体与动画蓝图也是一一对应的。

- 一个动画蓝图主要包括事件图表和AnimGraph两个图表。

事件图表的作用是设置变量,这就是数据驱动动画中的“数据”
AnimGraph的作用是设置动画的状态转换(状态机)。一个状态的内部常常使用BlendSpace来控制动画的选择。这就是数据驱动动画中的“动画”


混合空间的作用是将相关联的动画进行线性混合,如倒退-静止-走路-跑步就可以做成一个混合空间。这里使用的是一个二维的混合空间:
人物动画的制作
先分析需求:
- 按下wasd可以控制人物前后左右移动,这时需要使用相应的走路动画。
- 按下ctrl+wad可以控制人物的冲刺,这时需要加载相应的跑步动画。
- 人物后退和静止的时候跑步动画是无效的。
- 跑步的移动速度比走路快。
- 不要出现滑步的现象。
制作的过程:
- 先创建一个Blendspace2D,将相应的动画拖过去,然后设置坐标轴:纵坐标为前进后退,取为
Forward;横坐标为左右移动,取为Strafe。轴值都进行单位化便于后续计算:


- 创建两个浮点型(绿色)的变量作为blendspace的两个输入:

- 在角色蓝图或事件图表中设置Speed和Strafe两个变量。原理是速度向量和相应方向向量点积候再除以跑步的最大速度:

如果在角色蓝图中设置动画蓝图中的变量,需要从网格体获取到相应的动画蓝图后再set变量(注意需要进行类型转换):

编译保存后就可以加载左右移动(只有走路)的动画了。接下来是跑步动画。
- 在输入中添加ctrl作为冲刺(Strip)的输入:

- 在角色蓝图中设置按下ctrl将速度提升为跑步(750),松开ctrl将速度设置为走路(375)的逻辑:

因为混合空间中走路的速度是跑步的一半,所以实际的速度也应该满足这个关系。
编译保存后按下ctrl就可以加载跑步动画了。跑步的速度是走路的两倍。
- 防止倒退和静止时按下ctrl也会加载跑步动画。方法是判定速度和角色朝向的方向(点积)。为负就将速度限制到走路速度。

这个操作需要在每帧都进行检测,防止出现先按下w+ctrl跑步前进,然后松下w依然在加载跑步动画的情况。
