逆向动力学

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

逆向动力学 (IK)是计算机动画中常用的技巧,可以有效地让角色在环境中实时移动和互动,使角色更真实地移动。为角色创建现实的运动过程往往需要多次迭代和各种关节的微调。使用 IK,您可以通过姿势或调整单个对象来摆弄和动画多个角色部分。

这种动画技术可以为以下示例提供解决方案:

抓取并姿势一个角色的手,同时自动调整相关的肢体,例如腕、肘和肩。
>

使角色的脚在不同的表面和斜坡上实际地互动。
>

抓取并移动单个目标对象以快速创建与角色和道具的真实互动。
>

IK控制

您可以使用 IKControl 来在动画编辑器之外对角色模型添加 IK 。工作室允许您通过编程方式应用 IK 到所有角色,例如 R15、Rthro 和自定义导入的皮肤角色,以在体验中创建真实的运动和互动。

当添加 IKControl 时,正确设置 必需属性 以避免意外和不自然的动画结果。与所有动画一样,测试你的 IK控件 以确保你达到所需的行为。

需要的属性

当向您的角色添加 或 时,您必须设置以下必需属性以启用 IK:

属性描述
Type指定 IK 控件的行为类型。见 Enum.IKControlType 获取行为选项列表。常见的行为类型是 PositionTransform
EndEffector您角色模型中的一个 BasePartBone 跟踪到 Target 的。例如,你可以将 左手骨 设置为EndEffector以达到作为Target的对象集合。
TargetEndEffector到达或指向的对象。一个Target可以是任何具有世界位置的对象。
ChainRoot定义了 BasePartsBones 链,这会影响 IKControl 。所有连接到 和 之间的零件都受到定义的行为类型影响,使用该类型来执行操作。例如,如果你的角色的 左手 设置为 Target,你可以通过设置 ChainRoot左上臂 来应用 IK 到整个左手。要应用 IK 仅对肘下的部件,将 ChainRoot 设置为 左下臂

测试 IK控件

您可以通过编程或直接通过 Explorer 添加和编辑 IKControl 程序。你甚至可以在游戏测试期间添加并对 IKControl 进行更改,快速检查各种属性如何影响角色的移动。

要快速测试您的 IKControl 使用一个 Attachment 作为目标:

  1. 在工具栏的 测试 选项卡中,选择 播放 以启动播放测试。

  2. 探索器 中,导航到 工作区 → 您的用户的 Model。这个 Model 实例被命名为您当前的 Roblox 帐户。

  3. 单击角色模型旁边的 ⊕ 图标,然后添加一个 附件。

  4. 选择 附件 并使用 移动 工具将对象放置在视图前面的角色前面。

  5. 在 探索器 窗口中,选择你角色的 ⊕ 旁边的图标,然后添加一个 IKControl 。

  6. 选择 IKControl 并在 属性 面板中设置以下属性值:

    1. 类型 :从下拉列表中选择Transform
    2. 终端效果器 : 在 Explorer 中选择您的模型的 左手 MeshPart
    3. 目标 : 在 Explorer 中选择新创建的 附件 对象。
    4. 链根 : 在 Explorer 中选择您的模型的 左上臂 MeshPart

    IKControl 属性
    >

    探索面板 - 角色模型
    >

    你的角色左臂现在应该达到目标 Attachment。您可以通过移动Attachment或编辑IKControl属性来实现不同的结果。

添加约束

您可以使用 Constraints 来限制关节在达到目标时移动的方式。约束可以确保肘和膝关节自然弯曲,或使机械关节在特定方向旋转。

肘部弯曲不自然
>

正确弯曲肘部
>

要使用 IKControl 对角色添加约束,您的 IKControl 和约束必须满足以下条件:

  • 约束中引用的附件附于同一部分,与 / / 中的附件相同。
  • Attachment0 / Attachment1 的相对位置必须与相应位置的 Motor6D / C0 / C1 CFrames 相等。
  • 约束和 IKControl 共享相同的父 Model

以下说明描述了添加 HingeConstraint 以限制角色肘部的旋转和添加 BallSocketConstraint 以限制旋转角度的过程。

肘部

Roblox R15 角色已经包含在它们的关节中可以用来应用肘部约束的附件。对于肘部,左上臂和左下臂都包含一个 LeftElbowRigAttachment 。除了添加约束外,您还需要为每个部分的 LeftElbowRigAttachment 添加额外的子附件,以指定肘关节可以旋转的轴。

要添加 HingeConstraint 和子附件:

  1. 在 Explorer 中,找到你的模型的 左下臂 并单击 ⊕ 按钮

  2. 添加一个 铰链约束 ,名称为LeftElbowConstraint

  3. 在 Explorer 中,导航到 LeftUpperArm.LeftElbowRigAttachment 并添加附件:

    1. 点击 ⊕按钮 以添加带有名称 附件LeftElbowConstraintAttachment0

    2. 在视图中,选择附件并使用 旋转工具 来旋转附件,使黄色 主轴 成为你肘部预期旋转的轴。

    3. 左肘约束。附件0 属性设置为这个新附件。

  4. 在 Explorer 中,导航到你的模型的 左下臂.左肘装置 添加附件:

    1. 点击 ⊕按钮 并添加一个名为 附件LeftElbowConstraintAttachment1
    2. 左上臂.左肘束约束.附件1 属性设置为这个新附件。
    3. 复制 左肘束约束附件0.CFrameOrientation 属性,并将其粘贴为 左肘束附件1.CFrameOrientation 值。

测试你的 IKControl 以验证仅肘关节旋转关于其铰链轴:

腕部

即使是在肘部约束的情况下,IKControl仍然可以使用腕部产生不现实的姿势。

腕部在某些方向上不自然弯曲

您可以通过添加 BallSocketConstraint 来限制手肘的旋转。虽然这与添加 HingeConstraint 到肘部的过程类似,但你可以使用这个约束上的 LimitsEnabled 属性来进一步控制肘部的运动范围。

要为腕部添加 BallSocketConstraint

  1. 在 Explorer 中,找到你的模型的 左手 并单击 ⊕ 按钮
    1. 添加一个 球节点约束 ,名称为 LeftWristConstraint .
  2. 找到你的模型的 左下臂.左腕固定装置 并添加附件:
    1. 点击 ⊕按钮 并添加一个名为 附件LeftWristConstraintAttachment0
    2. 在视图中,选择附件并使用 旋转工具 将附件旋转,使黄色主轴指向模型的手指。
    3. 左腕约束。附件0 属性设置为新的 LeftWristConstraintAttachment0
  3. 找到你的模型的 左手.左腕Rig附件 并添加附件:
    1. 点击 ⊕按钮 并添加一个名为 附件LeftWristConstraintAttachment1
    2. 复制 左腕约束附件0.CFrameOrientation 属性,并将其粘贴为 左腕约束附件1.CFrameOrientation 属性。
    3. 左腕约束。附件1 属性设置为这个新的 左腕约束附件1
  4. 在 Explorer 中,选择 左腕约束
  5. 在属性编辑器中,设置以关注中/正在关注内容:
    1. 启用 限制启用
    2. 上角 设置为 80。这控约束限制的轴可以旋转多少,80 度大约是腕部应该能够弯曲的程度。
  6. 根据你的角色,你可能想调整锥体指向的方向。您可以使用 旋转工具 来旋转约束的 附件0

当选择 左腕约束 时,一个绿色锥出现,可视化腕部的运动范围。

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