虚幻引擎5动画基础知识
虚幻引擎5内容示例
这张地图提供如何向Actor
应用动画
的示例,这可以通过一次
性事件
,循环
事件,蓝图
或在动画蓝图
中定义行为类型
序列
来完成,它还展示了各种动画资产
技术以及骨骼重定向
,
欢迎来到动画基础知识
- 这张地图介绍
动画
的基础知识,你可以在此地图中了解骨骼 网格体
,根骨骼运动
,混合空间
等 - 在这里你可以了解到UE5中
角色动画
的基础知识,
第一个房间将演示基本的资产类型
和概念
,
第二个房间将深入研究动画蓝图
的许多功能, - 本
关卡
显示的每一个动画蓝图都
可以在
Content/ExampleContent/Animation_Basics
中找到,
或者通过选择一个角色
显示bp,选择细节面板
中的骨骼网格组件
,
导航到动画
类别中的动画类
参考,并点击"浏览到资产
"按钮来浏览,
1.1 核心资产类型(Core Asset Types)
动画角色
是由3种
不同的资产类型
组成的,
一个骨骼
,一个骨骼网格体
,和动画资产
,
每个资产都有特定的用途,
骨架
资产本质上是一个层次结构中的骨骼名称列表,
不包含皮肤或骨骼
的变形数据
,
它的主要功能是将动画数据
从动画中映射
到骨架网格
上,
骨架资产
还存储了可以跨骨骼网格
和动画
使用的元数据
,
如动画曲线
,同步标记
和通知等,只要骨架层次结构
兼容,
一个骨架资产可以在多个骨架网格中共享,- 骨架网格包含了与骨骼层次结构(与骨架的层次结构相同)
相关的网格皮肤,以及与网格相关的任何数据,
如材料和物理资产参考,
C动画资产包含动画的骨骼转换数据,
并可以在任何与动画所分配的骨架共享的骨架网格上播放,
[骨骼]-[骨骼网格体]-[动画]
1.2 镜像(Mirroring)
镜像可以通过一个镜像数据表来实现,
这个数据表包含一个骨骼和它们的镜像对应物的地图,
它还可以存储动画曲线,
同步标记和其他通知的镜像信息,
为了实现镜像,
必须通过镜像姿势节点将镜像数据表引用到动画蓝图中(见图1.8),
该节点可以被打开或关闭,
[原创动画]-[镜像数据表]-[镜像动画]
1.3.1 根运动-它是什么?(Root Motion - What is it?)
"根运动"是一个术语,它描述了根骨骼
(层次结构中的第一个,通常位于地面)
是否有运动被烘烤到它,左边的动画没有根运动,
因为根骨骼保持静止,而角色的其他部分从它身上移开,
右边的动画有根运动,因为根骨骼的动画是随着角色移动的,
[无根运动]-[有根运动]
1.3.2 根部运动-应用(Root Motion - Application)
如果一个动画有根部运动,
根部的运动可以被提取并被运动组件使用,
这样,运动组件和胶囊就可以对碰撞和物理做出反应,
同时按照动画编写的方式运动,
如果一个角色需要进行复杂的动作,比如躲避或击打反应,
根部运动是实现精确运动的好方法,而且没有脚的滑动,
[无根运动]-[有根运动]
1.4 叠加动画( Additive Animations)
叠加动画是更复杂的动画设置的一个核心部分,
当一个动画被叠加播放时,
这意味着它被添加到另一个动画之上而不被覆盖,
为了使一个动画成为叠加动画,
它需要有一个"基本姿势",
叠加动画计算它自己和基本姿势之间的差异,
然后将其添加到叠加动画所播放的内容上,
下面,中间的动画和左边的姿势之间的差异
被叠加在一个运行动画上,得到最终的结果,
[基本姿势]-[叠加动画]-[应用叠加]
1.5 混合空间(Blendspaces)
混合空间是可以在动画图(AnimGraph)中采样的特殊资源,
允许根据两个输入的值混合动画,
要根据一个输入在两个动画之间实现简单混合,
可以使用动画蓝图中提供的一个标准混合节点,
混合空间提供的方法是根据多个值(目前仅限于两个)
在多个动画之间进行更复杂的混合,
混合空间是一种资产,允许混合多个动画或姿势,
方法是将其绘制到一维或二维图表中,
然后,该图表可以在动画蓝图中进行引用,
其中混合通过Gameplay输入或其他变量进行控制,
通过使用混合空间,几乎所有类型的混合布局都可以用于你的动画,
[一维混合空间]-[二维混合空间]
1.6 瞄准偏移(Aim Offsets)
瞄准偏移本质上是叠加动画和混合空间的组合,
如果你想把多个叠加动画或姿势混合在一起,
然后把结果应用到另一个动画上,就可以使用它们,
一个常见的用例是用来瞄准武器,或者让角色环顾四周,
[基本姿势]-[叠加姿势]-[应用叠加]
1.7 蒙太奇和插槽(Montages & Slots)
动画蒙太奇是为你提供直接通过蓝图或C++代码播放动画的方法的资产,
通过一个动画蒙太奇,你可以把几个不同的动画或叠加动画组合成一个资产,
然后你可以把它分成几个部分,单独或组合播放,
你还可以在蒙太奇中发射事件,这些事件可以执行各种本地或复制的任务,
如播放声音提示或粒子效果,改变玩家的数值,如弹药数量,
甚至在联网游戏中复制根部运动(前提是动画上的根部运动已启用),
插槽是决定蒙太奇在动画图中被注入的节点,如果蒙太奇包含一个叠加动画,
它将在它之前的所有动画之上播放,如果没有,它将覆盖所有动画,
一个蒙太奇也可以有多个轨道,每个轨道在不同的槽中播放,
[正常]-[叠加]
1.8 动画蓝图(Animation Blueprints)
动画蓝图是一个专门的蓝图,用于控制骨架网的动画,
它包含一个动画图,你可以在这里进行动画混合,
或者直接控制骨骼,还有一个事件图,
你可以在这里设置逻辑,控制动画图的输入和参数,
动画蓝图是建立复杂角色动画系统的地方,
[速度]-[瞄准投掷]
[近战]-[命中]-[跳跃]
2.1 混合曲线(Blend Curves)
几乎每个混合节点和状态转换都可以通过曲线控制混合行为,
曲线将在混合的整个过程中定义混合的重量,
用户可以选择一些预设的曲线选项,或者使用自定义的曲线资产,
为了使自定义曲线能够作为混合曲线使用,X和Y轴都应该从0到1,
你可以在混合节点/状态转换细节面板中找到混合曲线选项,
[直线曲线]-[立方曲线]-[自定义曲线]
2.2 混合配置文件(Blend Profiles)
混合配置文件在每个骨骼的基础上修改混合速度,
这可以用来加快某些身体部位的混合速度,
有两种混合曲线类型,时间和重量,
- 时间混合配置文件将允许一个骨骼提前完成混合,
基于应用于每个骨骼的数值,
如果一个骨骼被设置为0.25,它将只在25%的时间内完成混合, - 重量混合配置文件允许一个骨骼更快地开始混合,
但将与其他骨骼同时完成混合,
一个设置为5的骨骼将以5倍的速度开始混合,
混合配置文件在骨架树中设置,
在混合节点/状态转换细节面板中应用,
[没有混合配置文件]-[时间混合配置文件]-[重量混合配置文件]
2.3 惯性混合(Inertial Blends)
惯性混合是一种特殊的混合,
它可以立即停止对输出状态或姿势的模拟,
而仍然平稳地混合到新的状态或姿势,
混合节点和状态转换都支持惯性混合,
但需要在图的后期有一个惰化节点,
如下图所示,惯性混合并不总是一个好的选择,
但对于退出和重新进入状态而不出现中断或弹出,
来说很方便,
[标准混合]-[惯性混合]
2.4 混合结点(Blend Nodes)
在动画图(Anim Graphs)中,有许多不同种类的混合节点,
每个都使用不同的输入,下面是几个例子,
[混合]-[混合多项]-[通过逻辑]-[通过Int]
2.5 状态机(State Machines)
状态机通过图形化方式将骨架网格体的动画拆分为一系列状态,
然后按照转换规则管理这些状态,
转换规则可控制从一个状态混合到另一个状态,
状态机大大简化了骨架网格体动画的设计流程,
可以创建一张控制图来轻松控制各个角色在各动画之间运动方式,
无需创建复杂的蓝图网,
[运行]
2.6 混合空间图(Blendspace Graphs)
混合空间图是一种新的灵活的混合空间,
这些混合空间不是作为单独的混合空间播放器资产存在,
而是在动画图中创建和设置的,这些混合空间的好处是,
取而代之的是样本点只是序列播放器,
样本点现在是独立的动画图,
它可以包含自己的混合节点,状态机,层节点等,
在下面的例子中,
混合空间被设置为一个传统的二维运动混合空间,
然而,额外的混合逻辑已经被添加到了左边和右边的样本点,
这样序列就可以动态地切换到臀部方向相反的版本,
[混合空间轴]-[翻转臀部方向]
2.7 分层(Layering)
分层是指将两个或多个独立的动画在单个骨骼或身体部位播放的概念,
下面是一个分层混合节点被用来在上半身播放一个瞄准动画(从1号脊椎开始),
在下半身播放一个奔跑动画,形成了一个全新的动画,
[下身肢体]-[上身肢体]-[分层结果]
2.8 分层蒙太奇(Layered Montages)
因为蒙太奇可以同时通过多个槽播放多个动画,
所以一个蒙太奇可以通过使用每个骨骼节点的层混合,
在两个不同的身体部位播放两个不同的动画,
在下面的例子中,一个蒙太奇在上半身的槽中播放一个重载动画,
而在下半身的槽中播放同一个重载动画的添加版本,
然后,这些槽被送入各自身体部位上的每个骨骼节点的分层混合,
[槽位1:上部(非叠加)]-[槽位2:下部(叠加)]-[分层结果]