Control Rig以多种方式进行计算,称为 解算方向(solve direction) ,它们是在Control Rig的Rig图表(Rig Graph)中创建的。通过使用这些工具将绑定逻辑拆分为多个解算方向或 解算器 ,你可以展开绑定的传入数据,从而启用工作流程,如绑定共享、将动画烘焙回控制点,以及调试该行为等。
此页面概述Control Rig中可用的不同解算方向、如何使用这些解算方向,以及这些功能启用的工作流程。
先决条件
正向解算
正向解算(Forwards Solve)是用于通过控制点、变量和其他绑定元素驱动骨架的解算方向。它是Control Rig的主要解算方向,将在Sequencer和动画蓝图中为Control Rig设置动画时使用。
默认情况下,所有Control Rig资产都在Rig图表(Rig Graph)中包含正向解算(Forwards Solve)节点。从这个节点创建的逻辑将作为一个基础,通过控制点、变量和其他绑定元素影响骨架的骨骼。通过这种方式,控制点以"正向"方式运行,即控制点影响骨骼。
预览正向解算
正向解算(Forwards Solve)是视口中的默认预览模式。这可以通过确保解算方向工具栏(Toolbar) 按钮 设置为 正向解算(Forwards Solve) 进行验证。类似于AnimBP,正向解算会持续执行,无论当前关卡状态如何。
根据激活的解算方向,这将影响Rig图表(Rig Graph)中突出显示的执行线。例如,如果正向解算(Forwards Solve)处于活动状态,则后向解算(Backwards Solve)的执行线将显得更加透明。

后向解算
后向解算(Backwards Solve)是用于从骨架驱动控制点的解算方向。它是正向解算(Forwards Solve)的 反向操作 ,用于将动画序列中的动画烘焙到Sequencer中的Control Rig上。
要在Rig图表(Rig Graph)中创建后向解算(Backwards Solve)逻辑,你必须创建一个 后向解算(Backwards Solve) 节点。右键单击 Control Rig图表(Control Rig Graph) ,然后选择 事件(Events)> 后向解算(Backwards Solve) 。
从这个节点创建的逻辑将作为一个基础,从骨架中的骨骼影响控制点。通过这种方式,控制点以"后向"方式运行,即骨骼影响控制点。
预览后向解算
你可以在视口中预览后向解算(Backwards Solve)行为,方法是打开工具栏(Toolbar)中的解算方向 下拉菜单 ,然后单击 后向解算(Backwards Solve) 。这将导致视口从Rig图表(Rig Graph)执行后向解算(Backwards Solve)逻辑,而不是进行正向解算(Forwards Solve)。
为了更好地预览这种反向Control Rig行为,可以导航到Control Rig中的 预览场景设置(Preview Scene Settings) 面板,指定要播放的角色动画。将 预览控制器(Preview Controller) 设置为 使用指定动画(Use Specified Animation) ,然后从 动画(Animation) 属性中选择一个动画。现在应该看到,控制点与正在播放的动画相匹配。
预览后向解算(Backwards Solve)时,视口轮廓将以 黄色 显示。这种颜色和其他颜色可以在 Control Rig编辑器偏好设置(Control Rig Editor Preferences) 中更改。

将动画烘焙到Control Rig
后向解算(Backwards Solve)的主要用途是将动画序列烘焙到Control Rig,从而对虚幻引擎中的动画进行进一步更改。
为此,假设你在Sequencer中有一个动画角色,右键单击角色轨道,选择 烘焙到Control Rig(Bake To Control Rig) ,然后选择要烘焙到的 Control Rig资产(Control Rig Asset) 。
如果Control Rig资产不使用Rig图表(Rig Graph)中的后向解算(Backwards Solve)节点,则无法在 烘焙到Control Rig(Bake To Control Rig) 菜单中选择Control Rig。
将出现一个对话框窗口,你可以在其中指定与烘焙操作相关的选项:
| 名称 | 描述 |
|---|---|
| 导出变换(Export Transforms) | 将变换数据烘焙到控制点。 |
| 导出曲线(Export Curves) | 将 AnimCurve 数据烘焙到控制点。这包括在计算后向解算(Backwards Solve)逻辑时的AnimCurve |
| 世界空间记录(Record in World Space) | 在绝对世界空间坐标中烘焙。 |
| 计算所有骨骼网格体组件(Evaluate All Skeletal Mesh Components) | 烘焙时计算所有骨骼网格体组件。如果将蓝图与其他骨骼网格体组件一起使用,通常需要启用此功能。 |
| 暖场帧(Warm Up Frames) | 在烘焙过程发生之前要计算的帧数。如果在计算之前,有后期处理动画蓝图效果需要额外时间才能稳定下来,这将非常有用。 |
| 开始前延迟(Delay Before Start) | 在烘焙过程发生之前要延迟的显示率(Display Rate)帧的数量。如果在计算之前,需要重复运行后期处理动画蓝图效果,这将非常有用。 |
| 减少关键帧(Reduce Keys) | 如果启用它,则可以在烘焙过程发生后运行简化过程,从而根据公差量删除冗余关键帧。 |
| 公差(Tolerance) | 公差(Tolerance) 值越高,则允许过滤后的曲线偏离原始曲线越多,如果启用 减少关键帧(Reduce Keys) ,则会导致移除更多关键帧。 |
单击 创建(Create) 可将动画序列烘焙到Control Rig。完成后,应该会在时间轴上看到带有关键帧的Control Rig轨道。这些关键帧应与作为烘焙来源的整体动画相对应。
你也可以直接将动画序列导入为Control Rig关键帧,方法是右键单击 Control Rig分段(Control Rig Section) ,然后从 将动画序列导入此序列(Import Anim Sequence Into This Sequence) 中选择动画。动画将相对于Sequencer播放头导入。

设置事件
设置事件(Setup Event)用于执行准备逻辑,例如构造变量和设置控制点的初始位置。它在Control Rig的后初始化阶段执行一次。可以认为它类似于蓝图中的 构造脚本(Construction Script) 。
要在Rig图表(Rig Graph)中创建设置事件(Setup Event)逻辑,你必须创建一个 设置事件(Setup Event) 节点。右键单击 Control Rig图表(Control Rig Graph) ,然后选择 设置(Setup)> 设置事件(Setup Event) 。
从这个节点创建的逻辑将作为一个基础,影响Rig元素的初始状态。可能包括的内容有,定义控制点到其各自骨骼的初始偏移,从而启用Rig共享(Rig Sharing)。此外,你可以定义变量的初始值,或更改骨骼的初始位置。
生成Rig元素
构造事件的其他主要用途之一是在此初始化阶段生成Rig元素。这样就可以生成新的控制点、骨骼和Null来创建流程性Control Rig,并使用Rig图表逻辑进行初始化。
要创建Spawn节点,请右键点击Rig图表,并从 动态层级(Dynamic Hierarchy) 类别点击某个 Spawn 节点。可以添加以下节点:
| 名称 | 说明 |
|---|---|
| Spawn Bone | 在层级中创建新的骨骼。 |
| Spawn Null | 在层级中创建新的Null。 |
| Spawn Animation Channel | 在层级中创建新的 动画通道(Animation Channel) 。动画通道是 控制点(Control) 的一种类型,用于提供动画通道或自定义属性。 |
| Spawn Control | 在层级中创建新的控制点。 |
生成 动画通道(Animation Channels) 或 控制点(Controls) 时,你需要指定其属性类型。为此,请右键点击 初始值(Initial Value) 引脚并从 通配符(Wildcard) 下拉菜单选择类型。
将Spawn节点连接到构造事件时,你应该会看到新的元素显示在层级面板中,如果它是正常创建的,还会显示在视口中。所有生成的元素名称为黄色,以与非生成的元素区分开。
Spawn节点当前仅适用于构造事件。
你还可以右键点击生成的元素,并点击 选择Spawner节点(Select Spawner Node) ,这会对用于生成此元素的节点取景。这样更容易在复杂的图表中找到Spawn节点。
不同于非生成的元素,生成的元素的初始值和设置是只读的,并且必须在节点上定义,而不是在细节面板中定义。为此,你可以展开"初始值(Initial Value)"和"设置(Settings)"引脚并编辑属性。你还可以将属性和变量连接到这些,以从其他逻辑源驱动它们。
你可以在Control Rig中创建的生成元素数量存在限制,如果你要创建大型Rig或使用 For Loop 逻辑,可能会达到限制。默认情况下,此限制设置为 128 ,并可以通过启用 类设置(Class Settings) 并更改 流程性元素限制(Procedural Element Limit) 属性来更改。
预览设置事件
通过选择工具栏(Toolbar)中的解算方向(Solve Direction)下拉菜单,然后单击 设置事件(Setup Event) ,可以在视口中预览设置事件(Setup Event)行为。这将导致视口从Rig图表(Rig Graph)而不是正向解算(Forwards Solve)执行设置事件(Setup Event)逻辑。进入此模式对于调试设置逻辑很有用。
启用设置事件(Setup Event)后,还可以从视口编辑骨骼和空值的初始位置。
预览设置事件(Setup Event)时,视口轮廓将以 红色 显示。
后向和正向
后向和正向(Backwards and Forwards)预览模式先执行后向解算(Backwards Solve),然后执行正向解算(Forwards Solve)绑定逻辑。这导致在视口中模拟将动画烘焙到Control Rig过程的行为。通常,如果需要调试烘焙过程以确保骨骼和控制点正常运行,将启用这一模式。
通过选择工具栏(Toolbar)中的解算方向(Solve Direction)下拉菜单,然后单击 后向和正向(Backwards and Forwards) ,可以在视口中预览后向和正向(Backwards and Forwards)行为。这将导致视口从Rig图表(Rig Graph)依次执行后向解算(Backwards Solve)和正向解算(Forwards Solve)逻辑。
后向和正向(Backwards and Forwards)预览时,视口轮廓将以 蓝色 显示。