逆向 kinematics

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

逆向动画学习技术 (IK) 是一种常见的电脑动画技术,可以以最佳方式实现角色与其环境的实时交互。 创建一个理想的动作需要经过许多次反复的调整和优化。 使用 IK 可以通过将单个对象的位置和位置进行调整来创建一个理想的动作。 使用 IK 可以通过将多个角色零件的位置和位置进行调整来动画多个角

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

抓住并放置一个角色的手,同时自动调整相关的肢体,例如手腕、肘和肩。
在不同的表面和斜坡上,让脚印象实际上与脚踝发生交互。
快速创建与角色和道具的现实互动。

IK控制

您可以使用 IKControl 来在动画编辑器外部添加 IK 到您的角色配备。 Studio 允许您程序化添加 IK 到所有角色,例如 R15、Rthro 和自定义导入的皮肤角色,以在您的体验中创建现实的移动和交互。

当添加一个 IKControl 时,正确地设置 需要的属性 以避免意外和非自然的动画结果。 与所有动画一样,请测试您的 IKControls 以确保您达到所需的行为。

所需属性

当将 IKControl 添加到角色的 HumanoidAnimationController 时,您必须设置以下必要属性才能启用 IK:

属性描述
Type指定 IK 控制的行为类型。请参阅 Enum.IKControlType 以获取 IK 控制的行为选项列表。常见的行为类型包括 PositionTransform
EndEffectorA BasePartBone 在您的角色网格跟向 Target 。例如,您可以将左手骨头设置为 1>LeftHand1> 骨头,作为 4>Class.I
TargetClass.IKControl.EndEffector|EndEffector 指向的对象或地点。Target 可以是任何具有世界位置的对象。
ChainRoot定义了 Class.BasePart|BaseParts 或 Class.Bone

测试 IKControls

您可以通过IKControl程序或直接通过Explorer添加或编辑程序。您甚至可以在IKControl期间在Play测试中添加和进行更改,以便快速查看各个属性对角色的移动如何受到影响。

使用 IKControl 作为目标快速测试您的 Attachment

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

  2. 在 Explorer 中,导航到 工作区 → 您的用户的 Model 。 此 Model 实例名为您当前 Roblox 帐户的名称。

  3. 点击您角色模型 HumanoidRootPart 旁边的 HumanoidRootPart 图标,添加一个 附件。

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

  5. Explorer 窗口中,选择角色旁边的 图标,然后添加一个 Humanoid

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

    1. 键入 : 从下拉列表中选择 Transform
    2. 结束效果器 : 在 Explorer 中选择您的模型的 左手 MeshPart
    3. 目标 : 在 Explorer 中选择新创建的 附件 对象。
    4. ChainRoot : 在Explorer中选择您的模型的 左上角上臂 MeshPart
    IKControl 属性
    Explorer Panel - 角色模型

    您的角色的左臂现在应该触及目标 Attachment 。您可以通过移动 Attachment 或编辑 IKControl 属性来实验,以获得不同的结果。

添加限制

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

臂头弯曲不自然
正确的弯曲手臂

使用 IKControl 将约束添加到你的角色,你的 IKControl 和约束必须满足以下条件:

  • 附件在约束的 Attachment0 / Attachment1 属性中与 Motor6D 1> Class.Motor6D.Part0|附件11> / 4> Class.Motor6D.Part1|附件14>
  • Class.Limit Class.Limit Class.Limit Class.Limit Class.Limit Class.Limit Class.Limit Class.Limit Class.Limit / Attachment1 CFrames.
  • 限制和IKControl共享相同的父Model

下面的说明描述添加一个 HingeConstraint 来限制角色的腕部旋转,并添加一个 BallSocketConstraint 来限制旋转角度。

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

要添加 HingeConstraint 和子附件:

  1. 在 Explorer 中,找到您的模型的 左下角手臂 ,然后单击 ⊕ 按钮

  2. 添加一个 枢轴限制器LeftElbowConstraint 的名称。

  3. 在 Explorer 中,导航到 左上角上臂.左臂托架附件 并添加一个附件:

    1. 单击 ⊕按钮 添加一个名为 LeftElbowConstraintAttachment0LeftElbowConstraintAttachment0

    2. 在视图中,选择附件,然后使用 旋转工具 来旋转附件,使黄色 主要轴 成为您的肘的期望旋转方向。

    3. LeftElbowConstraint.Attachment0 属性设置为此新附件。

  4. 在 Explorer 中,导航到您的模型的 左下角手臂.左臂盔甲装置附件 添加一个附件:

    1. 单击 ⊕按钮 并添加 附件 以名称为LeftElbowConstraintAttachment1
    2. LeftUpperArm.LeftElbowConstraint.Attachment1 设置为此新附件。
    3. 复制 LeftElbowConstraintAttachment0.CFrameOrientation 属性,并将其作为 LeftElbowConstraint.附加1.CFrameOrientation 值的复制。

测试你的 IKControl 来验证头肘只在关节轴上旋转:

腕带

即使在腕带约束下,IKControl 仍可以使用手腕产生不真实的姿势。

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

您可以通过添加 BallSocketConstraint 来限制手腕的旋转。 与添加 HingeConstraint 到肘的过程类似,您可以使用 LimitsEnabled 属性在此约束上进一步控制手腕的移动范围。

要为腕表添加一个 BallSocketConstraint

  1. 在 Explorer 中,找到您的模型的 左手 并单击 ⊕ 按钮
    1. 添加一个 BallSocketConstraintLeftWristConstraint 的名称。
  2. 找到您的模型的 左下臂.左腕带附件 并添加一个附件:
    1. 点击 ⊕按钮 ,并添加 附件 ,以便添加LeftWristConstraintAttachment0
    2. 在视图中,选择附件,然后使用 旋转工具 来旋转附件,使黄色主轴指向模型的手指。
    3. LeftWristConstraint.Attachment0 属性设置为新的 LeftWristConstraintAttachment0
  3. 找到您的模型的 左侧手腕端配件 并添加一个附件:
    1. 点击 ⊕按钮 ,并添加 附件 ,名称为 LeftWristConstraintAttachment1
    2. 复制左侧腕带约束器附件0.CFrameOrientation 属性,并将其作为 LeftWristConstraintAttachment1.CFrameOrientation 属性的复制。
    3. LeftWristConstraint.Attachment1 属性设置为此新的 LeftWristConstraintAttachment1
  4. 在 Explorer 中,选择 左腕约束
  5. 在 Properties Editor 中,设置以关注中/正在关注:
    1. 启用 限制已启用 .
    2. 上角角 设置为 80 。这控约束限制的轴可以旋转多少,而 80 度大约是手腕可以弯曲的程度。
  6. 根据您的角色,您可能想要调整甜筒所指向的方向。您可以使用 旋转工具 来旋转约束的 附件0。

选择 LeftWristConstraint 时,会出现一个绿色甜筒,显示手腕的移动范围。

设置约束后,测试 IKControl 使用手指指向角色前方,手腕应该更真实地旋转和弯曲。