Control Rig

使用Control Rig实时绑定角色骨骼并制作角色动画。

Windows
MacOS
Linux

借助Control Rig,你可以为导入的骨骼模型创建自定义控制点,然后在虚幻编辑器中为模型生成新的动画,或者修改模型现有的动画。本文介绍了Control Rig编辑器的用法,以及如何通过绑定工具(rig)来创建动画。

先决条件和准备工作

  • 你必须先启用 Control Rig 插件。为此,在虚幻编辑器的菜单栏中点击 编辑(Edit)>插件(Plugins) ,然后搜索 Control Rig。启用插件后,请重启编辑器。

    control rig插件

  • 已将骨骼网格体资产导入项目中。

  • 对虚幻引擎的Sequencer比较熟悉。

创建Control Rig资产

你可以用两种方法为骨骼网格体创建Control Rig。

第一种方法,右键点击你的骨骼网格体资产,并选择 创建Control Rig(Create Control Rig)。这会新建一个 Control Rig 资产并自动将你的骨骼网格体指定为绑定对象。此资产会自动沿用骨骼网格体的名称,并且以 _CtrlRig 作为名称后缀。

创建control rig

第二种方法是手动创建一个 Control Rig。步骤是在内容浏览器中点击右键,选择 动画(Animation)> Control Rig。在上下文菜单中,选择 ControlRig 并点击 创建(Create)

创建control rig 2

创建资产后,在内容浏览器中双击打开它。

如果用这种方法创建Control Rig,你需要在打开Control Rig资产后,手动将骨架指定给Control Rig资产。

Control Rig编辑器

打开Control Rig资产后,可以看到Control Rig编辑器。下面列出了它的主要操作区域。

图像替换文本

  1. 工具栏(Toolbar)

  2. 视口(Viewport)

  3. Rig层级(Rig Hierarchy)

  4. 执行堆栈(Execution Stack)

  5. Rig图表(Rig Graph)

  6. 细节/预览场景(Details / Preview Scene)

  7. 我的蓝图(My Blueprint)

工具栏

图像替换文本

Control Rig工具栏包含用于控制预览行为和Control Rig构造的按钮和设置。这些按钮带有特定的Control Rig功能,如下所示:

编译

图像替换文本

只要对Rig层级进行了更改,就需要重新编译。这包括对控制点、骨骼或空间(space)进行添加、移除、重设父子关系、重命名等操作。创建变量后也需要重新编译。

"编译(Compile)"按钮还可用于重置控制点。

编译重置

事件模式

事件模式工具用于在不同图表事件链之间切换。每个选项都关联着一个Rig Graph事件节点。

图像替换文本

设置事件(Setup Event) 将触发Setup Event节点链,并激活设置(Setup)模式,此模式允许你调整骨骼、控制点和空间的初始位置。

前向解算(Forwards Solve) 将触发Forwards Solve节点链。在此模式下移动控制点仅会影响其当前位置,并且是临时性的。

后向解算(Backwards Solve) 将触发Backwards Solve节点链。在此模式下可以让骨骼驱动控制点,而不是反过来。允许你在Sequencer中使用 烘焙到Control Rig(Bake to Control Rig) 功能。

后向和前向(Backwards and Forwards) 会先触发Backwards Solve节点链,然后触发Forwards Solve节点链。如果你想验证这两个节点链能否按顺序正常工作,请使用此模式。

自动编译

图像替换文本

启用此选项后,你在改动Rig图表后,都会自动进行编译。上述所有其他更改仍需要手动编译。

调试对象

图像替换文本

此下拉菜单允许你将Control Rig视口链接到活跃状态下的游戏会话中的角色。这样你就可以在Control Rig视口中预览该会话中的当前动画。

control rig调试对象链接

类设置

图像替换文本

此处的大部分选项都是常规的蓝图属性。Control Rig蓝图中的类设置(Class Settings)包含 小工具库(Gizmo Library),允许你编辑各种小工具,进而设置控制点的显示形状。

图像替换文本

视口

视口是你操控Control Rig节点的地方,也是你设置各种预览模式和显示选项的地方。

control rig视口

Control Rig选项位于 视图选项(View Options) 面板。显示Space(Display Spaces) 可以绘制/停止绘制场景中Space对象的本地坐标轴。显示选中项的坐标轴(Display Axes on Selection) 用于只显示当前选中Space的本地坐标轴。 坐标轴缩放(Axes Scale) 可以缩放绘制的坐标轴。

control rig视图选项

Rig层级

Rig层级(Rig Hierarchy)面板类似于大纲视图,可以查看当前骨架和控制点的层级。这也是你新建 骨骼(Bones)控制点(Controls)空间(Spaces) 的主要区域。

要创建这些元素,在面板中点击右键,选择 新建(New)> 骨骼(Bone)、控制点(Control)空间(Space)。即可在(0,0,0)新建一个控制点。

创建控制点、空间、骨骼

其他上下文菜单命令有:

Reset Transform / All Transforms

此命令重置当前选定节点或所有节点,使其回到其初始变换。

control rig重置变换

Set Initial Transform from Current

使用此命令将初始变换(Initial Transform)设置为节点的当前位置。现在重置变换后,会将其重置到此新位置。

control rig初始变换

Set Initial Transform from Closest Bone

使用此命令会将你选中的控制点吸附到最近的骨骼,并将该位置设置为初始变换(Initial Transform)位置。适合用于将控制点对齐到骨骼。

control rig最近骨骼

从当前位置设置小工具变换

如果你在变换小工具,执行此命令会将小工具的枢轴点重置回初始变换位置,但让小工具维持在当前显示位置。如果你想要自定义小工具的显示位置,同时保持枢轴点不变,可以使用此命令。

control rig小工具变换偏移

取消父子关系

取消父子关系(Unparent) 会移除当前选定节点,并将其放在层级的顶部。

control rig取消父子关系

执行堆栈(Execution Stack)

执行堆栈(Execution Stack)面板可用于预览图表中操作的顺序。你可用它调试节点并评估事件顺序。

右键点击一个执行节点并选择 聚焦所选项(Focus on Selection),可以在Rig图表中将画面对准该节点。

control rig执行堆栈

Rig图表

Rig图表是编写Control Rig行为脚本的主要位置。

如果要在图表中添加Hierarchy节点的引用,可以从层级(Hierarchy)面板将它们拖放到图表中,然后选择所需的引用类型。

control rig图表

还可以通过右键单击创建节点。在上下文菜单中搜索或导航至所需节点。为方便起见,任何带执行事件的节点都会自动连接上一个节点的执行事件。

control rig图表

细节/预览场景

细节(Details) 面板包含Control Rig编辑器中选定元素的相关信息。这些元素可能包括控制点、骨骼和图表节点。

control rig细节

预览场景(Preview Scene) 面板包含你的视口场景的视效信息。你可以在此处更改骨骼网格体的预览效果,调整光照和其他各种视效设置。

我的蓝图

我的蓝图(My Blueprint) 面板和普通蓝图的"我的蓝图"面板相似,包含各种 函数(Functions)变量(Variables)

图像替换文本

点击面板左上角的 添加(Add) 按钮可添加函数和变量。

图像替换文本

Control Rig中的变量应该主要用于在Rig图表中驱动逻辑,而不是直接暴露给关卡中的实例。

创建基本FK Control Rig

本节将介绍如何创建一个简单的正向运动学(FK)Control Rig。本示例用到了一个相对简单的机械臂,包含五块主要骨骼。

首先为骨骼网格体创建Control Rig资产。在内容浏览器中右键点击该资产,选择 创建Control Rig(Create Control Rig)。完成后,打开该资产。

创建control rig

创建控制点

现在创建第一个控制点,它很可能将作为根。在Rig层级(Rig Hierarchy)中点击右键,选择 新建(New)>新控制点(New Control)。以此方式创建的控制点将位于场景的0,0,0坐标。创建此控制点后,可能要重命名。

创建control rig的根节点

控制点在视口中有可能会不显示,就像本例一样。要更改小工具(Gizmo)的形状和颜色,先选中控制点,然后在 细节(Details) 面板中找到 小工具(Gizmo) 类别。此处的属性可以自定义控制点的形状、大小和颜色。

control rig - 小工具的形状、颜色、大小

现在继续为其余骨骼创建控制点。有一种方法比较有效:右键点击所需骨骼,选择 新建(New) > 新建控制点(New Control)。使用此方法后,控制点会直接在选定骨骼的位置生成,让对齐更方便。

control rig - 创建fk控制点

父子关系和层级

设置完控制点的形状和名称后,你还需要取消它们与骨骼层级之间的父子关系,让控制点拥有独立于骨骼的层级关系。方法是右键点击控制点,选择 取消父子关系(Unparent)。取消所有控制点的父子关系后,必须删除 Space 节点,因为已不再需要了。

control rig - 取消父子关系

现在你可以重建控制点的层级关系。在Rig层级视图中,将一个控制点拖放到目标控制点上,设置他们的父子关系。对所有控制点执行此操作。

Rig逻辑

Rig的层级就绪后,就可以开始绑定控制点以便控制骨骼了。

首先在 层级(Hierarchy) 面板中将根骨骼拖到 Rig图表(Rig Graph) 中,选择 设置变换(Set Transform),这将创建一个面向该骨骼的Set Transform节点。然后将对应的控制点拖放到图表中,选择 获取控制点(Get control)。最后,将 Transform 引脚从 Get Transform - Control 节点连接到 Set Transform - Bone 节点。

control rig - 设置变换

请随意移动控制点并预览它对骨骼的影响。在 Set Transform 节点上启用 传播到子项(Propagate to Children),可以看到改动效果从该骨骼向下延伸到整个层级。

control rig - 移动控制点

现在继续为剩余骨骼和控制点创建类似的逻辑链。将各个控制点的 Get Transform 节点连接到骨骼上对应的 Set Transform 节点。

图像替换文本

完成后,所有控制点都应能够操纵各自的骨骼了。记住,你可以使用 编译(Compile) 按钮将控制点快速重置回其初始位置。

control rig - fk控制点

创建基本IK Control Rig

本节将介绍如何创建简单的逆向运动学(IK)Control Rig。本示例使用了相对简单的机械臂,其中包含五块主要骨骼。本例还将假设你已经创建了一个带有根控制点的Control Rig资产,如前文所述。

创建控制点

首先创建末端 控制点(Control)。由于这个例子相对比较简单,你只需要创建一个IK效应器控制点(IK effector control)。

右键点击目标骨骼(手),按 CTRL+N 在选定骨骼上快速新建一个控制点。然后,右键点击该骨骼并选择 取消父子关系(Unparent),即可取消它与该控制点的父子关系。删除对应的 空间(Space) 元素,因为不需要了。

创建控制点热键

请随意命名你的控制点,并在 细节(Details) 面板中设置你想要的颜色、大小和形状。

Rig逻辑

在Rig图表中,右键点击并浏览至 层级(Hierarchy)> CCDIK。选择并创建此节点。CCDIK 节点是一种IK节点,可用于连接各种骨骼和效应器(effector)。

control rig ccdik

下一步,创建 Item Chain 节点。方法是右键点击图表并选择 集合(Collections)> 项目链(Item Chain)Item Chain 节点用于定义IK链中的开始和结束骨骼。定义后,开始和结束骨骼之间的所有其他骨骼都将包含在内,共同形成整个链集合。

第一个项目(First Item) 类别中,将 名称(Name) 设置为所需的开始骨骼。对 最后一个项目名称(Last Item Name) 也执行同样的操作。

图像替换文本

最后,将 效应器控制点(Effector Control)Rig层级(Rig Hierarchy) 拖放到 图表(Graph),并选择 获取控制点(Get Control)。将 变换(Transform) 引脚从 Get Transform - Control 节点连接到 CCDIK效应器变换(CCDIK Effector Transform) 引脚。然后,将 集合(Collection) 引脚从 项目链(Item Chain) 挂接到 CCDIK项目(CCDIK Items) 引脚。

control rig ik ccdik项目链

现在你的IK链应该可以正常工作了。在视口中移动该控制点并查看效果。你可能还需要启用 CCDIK 节点上的 传播到子节点(Propagate to Children) 布尔值,确保子骨骼也沿用该效果。

control rig - ik传播

在Sequencer中制作动画

完成Control Rig后,即可在Sequencer中进行动画处理。

有一种简单的方法,将Control Rig资产从 内容浏览器 拖动到关卡中。这将自动创建并打开一个新的Sequencer资产,以便开始进行动画处理。

control rig关卡

如需为控制点设置关键帧,请在选择控制点后,按 Enter(全部设置关键帧),或S键(仅对变换设置关键帧)。

control rig - sequencer关键帧

你的控制点位于主Control Rig轨道下,作为子轨道存在。你可以查看所有控制点上设置的所有关键帧,或者展开它们,查看单独的控制点及其关键帧。

control rig - sequencer轨道

继续对你的控制点进行动画处理,直至获得理想的动画效果。

control rig - 制作sequencer动画