逆向动力学 (IK)是计算机动画中常用的技巧,可以有效地让角色在环境中实时移动和互动,使角色更真实地移动。为角色创建现实的运动过程往往需要多次迭代和各种关节的微调。使用 IK,您可以通过姿势或调整单个对象来摆弄和动画多个角色部分。
这种动画技术可以为以下示例提供解决方案:
IK控制
您可以使用 IKControl 来在动画编辑器之外对角色模型添加 IK 。工作室允许您通过编程方式应用 IK 到所有角色,例如 R15、Rthro 和自定义导入的皮肤角色,以在体验中创建真实的运动和互动。
当添加 IKControl 时,正确设置 必需属性 以避免意外和不自然的动画结果。与所有动画一样,测试你的 IK控件 以确保你达到所需的行为。
需要的属性
当向您的角色添加 或 时,您必须设置以下必需属性以启用 IK:
属性 | 描述 |
---|---|
Type | 指定 IK 控件的行为类型。见 Enum.IKControlType 获取行为选项列表。常见的行为类型是 Position 或 Transform 。 |
EndEffector | 您角色模型中的一个 BasePart 或 Bone 跟踪到 Target 的。例如,你可以将 左手骨 设置为EndEffector以达到作为Target的对象集合。 |
Target | EndEffector到达或指向的对象。一个Target可以是任何具有世界位置的对象。 |
ChainRoot | 定义了 BaseParts 或 Bones 链,这会影响 IKControl 。所有连接到 和 之间的零件都受到定义的行为类型影响,使用该类型来执行操作。例如,如果你的角色的 左手 设置为 Target,你可以通过设置 ChainRoot 到 左上臂 来应用 IK 到整个左手。要应用 IK 仅对肘下的部件,将 ChainRoot 设置为 左下臂 。 |
测试 IK控件
您可以通过编程或直接通过 Explorer 添加和编辑 IKControl 程序。你甚至可以在游戏测试期间添加并对 IKControl 进行更改,快速检查各种属性如何影响角色的移动。
要快速测试您的 IKControl 使用一个 Attachment 作为目标:
在工具栏的 测试 选项卡中,选择 播放 以启动播放测试。
单击角色模型旁边的 ⊕ 图标,然后添加一个 附件。
选择 附件 并使用 移动 工具将对象放置在视图前面的角色前面。
在 探索器 窗口中,选择你角色的 ⊕ 旁边的图标,然后添加一个 IKControl 。
选择 IKControl 并在 属性 面板中设置以下属性值:
- 类型 :从下拉列表中选择Transform。
- 目标 : 在 Explorer 中选择新创建的 附件 对象。
IKControl 属性 >探索面板 - 角色模型 >你的角色左臂现在应该达到目标 Attachment。您可以通过移动Attachment或编辑IKControl属性来实现不同的结果。
添加约束
您可以使用 Constraints 来限制关节在达到目标时移动的方式。约束可以确保肘和膝关节自然弯曲,或使机械关节在特定方向旋转。


要使用 IKControl 对角色添加约束,您的 IKControl 和约束必须满足以下条件:
- 约束中引用的附件附于同一部分,与 / / 中的附件相同。
- 约束和 IKControl 共享相同的父 Model 。
以下说明描述了添加 HingeConstraint 以限制角色肘部的旋转和添加 BallSocketConstraint 以限制旋转角度的过程。
肘部
Roblox R15 角色已经包含在它们的关节中可以用来应用肘部约束的附件。对于肘部,左上臂和左下臂都包含一个 LeftElbowRigAttachment 。除了添加约束外,您还需要为每个部分的 LeftElbowRigAttachment 添加额外的子附件,以指定肘关节可以旋转的轴。
要添加 HingeConstraint 和子附件:
在 Explorer 中,找到你的模型的 左下臂 并单击 ⊕ 按钮 。
添加一个 铰链约束 ,名称为LeftElbowConstraint。
在 Explorer 中,导航到 LeftUpperArm.LeftElbowRigAttachment 并添加附件:
点击 ⊕按钮 以添加带有名称 附件 的LeftElbowConstraintAttachment0。
在视图中,选择附件并使用 旋转工具 来旋转附件,使黄色 主轴 成为你肘部预期旋转的轴。
将 左肘约束。附件0 属性设置为这个新附件。
在 Explorer 中,导航到你的模型的 左下臂.左肘装置 添加附件:
- 点击 ⊕按钮 并添加一个名为 附件 的LeftElbowConstraintAttachment1。
- 将 左上臂.左肘束约束.附件1 属性设置为这个新附件。
- 复制 左肘束约束附件0.CFrameOrientation 属性,并将其粘贴为 左肘束附件1.CFrameOrientation 值。
测试你的 IKControl 以验证仅肘关节旋转关于其铰链轴:
腕部
即使是在肘部约束的情况下,IKControl仍然可以使用腕部产生不现实的姿势。

您可以通过添加 BallSocketConstraint 来限制手肘的旋转。虽然这与添加 HingeConstraint 到肘部的过程类似,但你可以使用这个约束上的 LimitsEnabled 属性来进一步控制肘部的运动范围。
要为腕部添加 BallSocketConstraint :
- 在 Explorer 中,找到你的模型的 左手 并单击 ⊕ 按钮 。
- 添加一个 球节点约束 ,名称为 LeftWristConstraint .
- 找到你的模型的 左下臂.左腕固定装置 并添加附件:
- 点击 ⊕按钮 并添加一个名为 附件 的LeftWristConstraintAttachment0。
- 在视图中,选择附件并使用 旋转工具 将附件旋转,使黄色主轴指向模型的手指。
- 将 左腕约束。附件0 属性设置为新的 LeftWristConstraintAttachment0。
- 找到你的模型的 左手.左腕Rig附件 并添加附件:
- 点击 ⊕按钮 并添加一个名为 附件 的LeftWristConstraintAttachment1。
- 复制 左腕约束附件0.CFrameOrientation 属性,并将其粘贴为 左腕约束附件1.CFrameOrientation 属性。
- 将 左腕约束。附件1 属性设置为这个新的 左腕约束附件1 。
- 在 Explorer 中,选择 左腕约束 。
- 在属性编辑器中,设置以关注中/正在关注内容:
- 启用 限制启用 。
- 将 上角 设置为 80。这控约束限制的轴可以旋转多少,80 度大约是腕部应该能够弯曲的程度。
- 根据你的角色,你可能想调整锥体指向的方向。您可以使用 旋转工具 来旋转约束的 附件0 。
当选择 左腕约束 时,一个绿色锥出现,可视化腕部的运动范围。

配置约束后,测试 IKControl 与手指指向角色前方,肘应更真实地旋转和弯曲。