一、什么是UE4动画蓝图
UE4动画蓝图是一种基于视觉编程的工具,旨在使动画和交互设计师更轻松地创建、编辑和测试角色动画。UE4动画蓝图在UE4引擎中的位置和作用相当于C++代码所处的位置和作用。
二、如何创建一个简单的动画蓝图
首先,创建一个角色蓝图。然后,添加一个Skeleton Mesh组件,并将其设置为角色蓝图的默认场景根组件。接着,点击Skeleton Mesh,选择“Create Animation Blueprint”。之后,UE4会提示用户是否创建一个基于 AnimGraph 的动画蓝图或基于StateMachine的动画蓝图。选择“Anim Graph”,然后将其命名为“CharacterAnimBlueprint”
AnimGraph(Graph) { FinalPoseResult = LocalToComponentSpace(FinalBlendRecursive(Result)); FinalPoseAdditive = LocalToComponentSpace(FinalBlendAdditive(Result)); OutputPose = (BlendPose(FinalPoseResult, FinalPoseAdditive, Weight)); DrawDebugPose(Graph, OutputPose); ReturnValue = OutputPose; }
这是创建的简单动画蓝图的基础代码,其中“AnimGraph”是 UE4 动画蓝图的一部分。 这个代码的作用是将最终的角色动作传递到游戏引擎的组件中。
三、动画状态机
动画蓝图中最常用的工具之一就是“状态机”了。状态机是 UE4 动画系统的核心组件,负责管理游戏对象在不同状态下的动画行为。 可以通过添加不同的状态,然后以及将它们连接起来来创建一个自定义的状态机。以下是一个基本动画状态机的样例代码:
Anim State Machine(BasicStateMachine) { Entry State(Default) { bCanEverTick = True; bCanTransitionOutOf = True; bCanTransitionInto = True; } State(State1) { bCanEverTick = True; bCanTransitionOutOf = True; bCanTransitionInto = True; } State(State2) { bCanEverTick = True; bCanTransitionOutOf = True; bCanTransitionInto = True; } DefaultState = Default; DefaultTransitions = ((Default, State1), (State1, State2)); }
这个动画状态机包含了一个 Entry state 和两个状态 State1 和State2,这两个状态之间有一个默认的转换。 将动画状态机连同角色的骨架设定插件和适当的动画文件关联起来,就可以在 UE4 中启动一个简单的状态机了。
四、纯蓝图:从开始到结束的动画
在 UE4 中,通过动画蓝图,还可以创建不需要带入动画文件的完整动画序列。当然,这种做法需要通过修改帧(frame)数、插值掩码、本地空间坐标等手段让这种动画序列变得有意义。以下是创建一个纯蓝图动画的样例:
Function(Lerpize) { Delta = (GetCurrentTime() - StartTime) / (EndTime - StartTime); if (Delta >= 1.0) { return TargetValue; } else { return Lerp(StartValue, TargetValue, Delta); } }
在该样例代码中,使用 Lerp 函数和“函数”节点分别创建了一个插值和过渡效果。这个函数将根据指定的开始和结束时间计算线性插值,并生成一个当前值,让动画能够实现平滑过渡。
五、UE4动画蓝图的其他用途
除了上述内容,UE4动画蓝图还可以用于“动画蒙太奇”、“重定向”、“事件触发”、“循环”、“跳转…”等一系列其他功能。在 UE4 引擎中,动画蓝图几乎是实现角色动画和游戏物理效果的终极工具。通过掌握其用法,游戏开发者可以创造出丰富多样、真实自然的游戏场景和动画效果。