使用Control Rig的全身反转运动学(FBIK)功能,在Control Rig中构建具有高度控制和灵活性的rig。整体解算器方法在 基于位置IK 框架的基础上构建,可实现速度更快的rig性能、逐骨骼设置、首选角度、挤压和拉伸等。FBIK旨在充当Control Rig中的程序调整工具,例如用于地面对齐或手臂伸展行为。
本文档概述了如何创建FBIK节点及其各种功能。
先决条件
- FBIK是Control Rig图表中的节点,因此你应该了解Control Rig编辑器。
-
必须启用 FullBodyIK 插件。启用方法是,在虚幻编辑器菜单栏中找到 编辑(Edit)>插件(Plugins) ,并找到 FullBodyIK 。确保启用插件并重启编辑器。
- 你必须已经为角色创建Control Rig资产,并且知道如何创建功能按钮。有关如何执行此操作的信息,请参阅 Control Rig快速入门指南 页面。
创建和设置
创建FBIK节点,然后将骨骼和执行器分配给相应的引脚,可以在Control Rig中实现FBIK。
首先,在Control Rig图表中点击右键,并在上下文菜单中,选择 层级(Hierarchy)>全身IK(Full Body IK) 。这将创建Full Body IK节点。将该节点连接到 Forwards Solve 节点。

Rig图表设置
接下来,在Full Body IK节点上设置 根(Root) 骨骼属性。在标准的全身设置中,这可能是臀部或骨盆骨。

为FBIK系统创建并添加你选择的功能按钮。通常,这些功能按钮对应于你要影响的四肢,并且基于链的主要结束骨骼。在此示例中,为头、手和脚创建了功能按钮。

执行器设置
你需要为添加到图表中的每个功能按钮添加执行器引脚。为此,请点击 执行器(Effectors) 属性旁边的 添加(Add)(+) 按钮。需要为每个功能按钮创建执行器。

展开执行器条目之一,将显示其属性。在每个执行器中,你将为功能按钮设置相应的 骨骼(Bone) 值,然后从相应的 Get Transform 节点连接变换(Transform)引脚。

以相同的方式将每个执行器连接到其对应的Get Transform节点,直到连接所有执行器和功能按钮。

设置结果
现在你的角色应该有了一个基本的FBIK设置。你可以在Control Rig视口中操作功能按钮,查看效果。

骨骼设置
根据你的设置,基础FBIK行为可能不会按预期运行。这可能是因为没有启用某些骨骼设置。 骨骼设置(Bone Settings) 是Full Body IK节点中的属性,用于控制受FBIK影响的每个骨骼的行为。
点击 骨骼设置(Bone Settings) 旁边的 添加(Add)(+) 按钮,然后在 骨骼(Bone) 属性中指定你要影响的骨骼,将骨骼设置(Bone Settings)添加到Full Body IK节点。每个骨骼设置仅影响单个骨骼,因此你可能需要根据你的rig遇到的特定问题,添加多个骨骼设置。

人体模型示例中可以看到以下问题:
-
臀部的旋转和平移太激进。
-
腿部没有足够弯曲,外观僵硬。
-
脚踝旋转过于朝上,姿势不自然。
骨骼设置(Bone Settings) 可以用于解决此类问题,以便支持你偏好的IK设置。
旋转和位置刚度
旋转(Rotation) 和 位置刚度(Position Stiffness) 属性用于控制IK链中受功能按钮和执行器影响的程度。使用这些属性更改骨盆骨骼受功能按钮移动影响的程度。值为 0 时,完全自由移动,而值为 1 时会完全锁定骨骼,使其无法移动。

在人体模型示例中,骨盆骨骼通过骨骼设置指定,并且 旋转(Rotation) 和 位置刚度(Position Stiffness) 的值设置为 0.8 。在这种情况下,仍然可以做一些移动。

偏好角度
可以使用偏好角度(Preferred Angles)优先关节沿特定轴旋转,达到执行器。在人体模型示例中,它们可以用于解决腿部和膝盖的僵硬问题。
骨骼设置的底部旁边是 偏好角度(Preferred Angles) 的属性。你还必须确保启用 使用偏好角度(Use Preferred Angles) 才能使用这些偏好角度。

你指定的偏好角度(Preferred Angle)属性取决于角色的类型及其关节结构。对于此示例,人体模型的膝盖应该沿着 Z轴 向正方向弯曲,因此在本例中,Z 属性的值将设置为 45。

限值
限值(Limits) 可以用于限制骨骼轴沿IK链旋转的范围,或完全锁定该旋转。这些设置位于刚度(Stiffness)和偏好角度(Preferred Angles)属性之间。

每个轴都有允许以下限制的设置:
- 自由(Free) ,允许骨骼自由移动。
- 有限(Limited) ,只允许在指定范围内移动。如果选择有限(Limited),则使用 最小值/最大值(Min/Max) 属性来定义移动范围。
- 锁定(Locked) ,禁用沿该轴的移动。
在人体模型示例中,这些限值可以用于纠正不自然的脚踝旋转问题。 Z最小值(Min Z) 的值设置为 -70 , Z最大值(Max Z) 的值设置为 70 , Z 轴设置为 有限(Limited) 。

排除骨骼
根据你的rig需求,在某些情况下你可能要从FBIK解算中排除骨骼。在纠正看起来不自然的姿势或简化FBIK行为方面,此功能非常有用。

建议排除骨骼,而不是专门使用骨骼设置(Bone Settings)将骨骼设置为完全僵硬或锁定。
要排除骨骼,请点击 排除骨骼(Excluded Bones) 旁边的 添加(Add)(+) 按钮,然后从下拉菜单中选择要排除的骨骼。

节点引用
以下是全身IK节点上所有引脚和设置的列表。
名称 | 说明 |
---|---|
根(Root) | FBIK链的根骨骼。 |
骨骼(Bone) | IK链的端点骨骼,对应于功能按钮。 |
变换(Transform) | 用于控制端点骨骼的变换。这通常是由链接到功能按钮的 Get Transform 节点提供的,该功能按钮与端点骨骼共享相同的变换信息。 |
偏移Alpha(Offset Alpha) | 此属性衡量执行器骨骼到达目标变换的能力。设置为 1 时,执行器会尽力达到目标变换。设置为 0 时,执行器保持在输入姿势。 |
强度Alpha(Strength Alpha) | 此属性影响此执行器对IK链的作用强度。设置为 0 时,执行器不会将IK链拉向自己,其他执行器优先。 |
骨骼(Bone) | 应用这些设置的指定骨骼。可以是 执行器(Effectors) 与 根(Root) 之间层级中的任何骨骼。 |
旋转/位置刚度(Rotation/Position Stiffness) | 应用于骨骼旋转或平移属性的刚度。值为 0 表示可以完全自由移动,值为 1 则是完全锁定骨骼。 |
XYZ限值设置 | 所选骨骼轴上允许的移动类型。
|
XYZ最小值/最大值(Min/Max XYZ) | 如果将 有限(Limited) 用 限值设置(Limit Setting) 设置,则将使用XYZ最小值/最大值(Min/Max XYZ)属性指定允许的移动范围。 |
使用偏好角度(Use Preferred Angles) | 启用使用 偏好角度(Preferred Angles)。 |
偏好角度(Preferred Angles) | 指定当IK链被挤压时,骨骼在各个轴上旋转的程度。 |
迭代(Iterations) | 增大此值,直至执行器收敛于预期目标位置。增加此值也会增加FBIK链的CPU成本。增加 刚度(Stiffness) 、高 质量乘数(Mass Multiplier)和 旋转限值(Rotation Limits)** 都会影响收敛速度,从而需要对此值进行更多调整。 |
质量乘数(Mass Multiplier) | 这是全局值,影响骨骼对旋转和平移的抵抗程度。值的范围通常为 0.0 到 5.0,0.0 表示完全活络, 5.0 表示非常僵硬。 质量乘数(Mass Multiplier) 值越高,实现收敛所需的迭代越多。 |
允许拉伸(Allow Stretch) | 启用此设置将导致骨骼沿着IK链平移,以到达执行器。位置刚度值会影响此结果,其中刚度越高,拉伸较少。 |
固定根(Pin Root) | 启用此设置会将根骨骼的平移锁定为初始姿势。旋转仍会受影响。 |
绘制比例(Draw Scale) | 控制调试行大小的乘数。 |
绘制调试(Draw Debug) | 启用此设置会显示沿着此FBIK节点IK链的所有受影响骨骼。 |