Language:
Share

动画蓝图

动画蓝图 是专用蓝图 ,它控制骨架网格体 的动画。 你可在 动画蓝图编辑器 中编辑动画蓝图图表(你可以在这里执行动画混合,直接控制骨架的骨骼,或设置最终将定义每一帧要使用的骨架网格体的最终动画姿势的逻辑)。

动画内容示例 页面1.2部分下展示了一个 动画蓝图 示例。

创建动画蓝图并在其中导航

在了解动画蓝图的工作原理之前,最好先了解如何创建动画蓝图以及动画蓝图界面。

使用动画蓝图

动画蓝图中包含两个主要组件,它们配合工作,以为每帧 创建最终动画。具体来说,事件图表 更新 动画图表 中所采用的数值,这些数值随后用于驱动状态机、混合空间或其它节点,实现多个动画序列或姿势之间的混合,从而能够向其它系统发出通知,并实现动态动画驱动效果。

使用子动画蓝图实例

为不同角色创建动画蓝图时,经常需要使这些角色共享动画逻辑。 例如,假设你将物理动画或AnimDynamics 应用给了一个角色,而且,你还希望将它应用给另一个角色。 使用 子动画实例(Sub Anim Instance) 节点,你可以创建对独立动画蓝图的引用,以在另一个动画蓝图中访问和包含其所有逻辑。

此方法可用于将大型动画蓝图分解成独立的较小蓝图,然后你可将它们包含在其它动画蓝图中。 例如,你可以创建一个仅限于“运动”的动画蓝图,并创建一个处理基于物理的动画的“子动画实例(Sub Anim Instance)”。 也可以在子动画蓝图的父动画蓝图中将子动画蓝图的成员变量公开为输入引脚,从而使 子图表输入(Sub-Graph Input) 节点将 输入姿势(In Pose) 公开给 “子动画实例(Sub Anim Instance)”(请参阅下面展示的示例)。

SubAnimInstance.png

使用“子动画实例(Sub Anim Instance)”时,它们使用的骨骼必须与它们存在在其中的外动画蓝图的骨骼相同。

请参阅使用“子动画实例(Sub Anim Instance)” ,获取设置影响角色运动的子动画蓝图实例的示例说明。

使用子动画蓝图

创建和设置角色及动画蓝图时,在某些情况下,你可能拥有多个相似的角色,但不同状态的动画完全不同。 你可以使用预先存在的动画蓝图的 子动画蓝图 并覆盖你希望替换的动画资源,而非为每个属于这种情况的角色创建动画蓝图。 子动画蓝图将从父动画蓝图继承一切,从而使你能够指定哪些动画应通过 资源覆盖编辑器 被覆盖。

例如,假设你有两个人形角色,一个是人类,另一个是狼人。两个角色都会走、跑、跳和爬。 但是,它们的动作可能完全不同。在这些动作间转变的逻辑相同,但是动作本身不同。 创建两个不同的动画蓝图的方法完全没问题,但是为了节省时间,你可以创建一个子动画蓝图,并选择性地选择要覆盖的动画。

请参阅动画蓝图覆盖 ,获取创建子动画蓝图并使用子动画蓝图覆盖动画蓝图的示例。

指定后期处理动画蓝图(Post Process Anim Blueprint)

通过 骨架网格体资源细节 面板,也可以直接将动画蓝图作为 后期处理动画蓝图(Post Process Anim Blueprint) 指定给骨架网格体。 这使你可以将始终在任意动画蓝图作为“主动画实例(Main Anim Instance)”被指定给“骨架网格体组件(Skeletal Mesh Component)”之后运行的动画蓝图指定给骨架网格体。 通过将“后期处理动画蓝图(Post Process Anim Blueprint)”指定给骨架网格体,你无需将逻辑复制到其它动画蓝图就可以创建AnimDynamics、骨架控制或其它动画蓝图逻辑。

ExamplePostProcess.png

请参阅“网格体细节(Mesh Details)”页面的后期处理动画蓝图(Post Process Anim Blueprint) 部分获取更多信息。

动画蓝图的实时编辑

本功能目前为试验性功能,因此某些方面可能无法正常工作。

你可以在动画蓝图在编辑器中运行时实时编辑和重新编译动画蓝图,这可以缩短迭代时间,因为你无需停下来就可以应用更改。

在上面的视频中,我们在“在编辑器中运行(Play in Editor)”会话期间对角色的状态机进行了更改。

你可以通过启用 通用 - 试验性(General - Experimental) 部分下的 工具(Tools) 中的 启用动画蓝图实时再编译(Enable Live Recompilation Of Animation Blueprints) 选项启用实时编辑。

LiveEditing.png

你需要定义动画蓝图中要使用调试过滤器 调试的动画蓝图实例。

DebugOption.png

选择好要调试的动画蓝图实例之后,动画蓝图编辑器将反映角色所处的动画状态(来自关卡)。