逆向动画学习技术 (IK) 是一种常见的电脑动画技术,可以以最佳方式实现角色与其环境的实时交互。 创建一个理想的动作需要经过许多次反复的调整和优化。 使用 IK 可以通过将单个对象的位置和位置进行调整来创建一个理想的动作。 使用 IK 可以通过将多个角色零件的位置和位置进行调整来动画多个角
这种动画技术可以为以下示例提供解决方案:
IK控制
您可以使用 IKControl 来在动画编辑器外部添加 IK 到您的角色配备。 Studio 允许您程序化添加 IK 到所有角色,例如 R15、Rthro 和自定义导入的皮肤角色,以在您的体验中创建现实的移动和交互。
当添加一个 IKControl 时,正确地设置 需要的属性 以避免意外和非自然的动画结果。 与所有动画一样,请测试您的 IKControls 以确保您达到所需的行为。
所需属性
当将 IKControl 添加到角色的 Humanoid 或 AnimationController 时,您必须设置以下必要属性才能启用 IK:
属性 | 描述 |
---|---|
Type | 指定 IK 控制的行为类型。请参阅 Enum.IKControlType 以获取 IK 控制的行为选项列表。常见的行为类型包括 Position 或 Transform 。 |
EndEffector | A BasePart 或 Bone 在您的角色网格跟向 Target 。例如,您可以将左手骨头设置为 1>LeftHand1> 骨头,作为 4>Class.I |
Target | Class.IKControl.EndEffector|EndEffector 指向的对象或地点。Target 可以是任何具有世界位置的对象。 |
ChainRoot | 定义了 Class.BasePart|BaseParts 或 Class.Bone |
测试 IKControls
您可以通过IKControl程序或直接通过Explorer添加或编辑程序。您甚至可以在IKControl期间在Play测试中添加和进行更改,以便快速查看各个属性对角色的移动如何受到影响。
使用 IKControl 作为目标快速测试您的 Attachment:
在测试选项卡中,选择 播放 以启动播放测试。
点击您角色模型 HumanoidRootPart 旁边的 HumanoidRootPart 图标,添加一个 附件。
选择 附件 并使用 移动 工具将对象放置在窗视图前的角色前面。
在 Explorer 窗口中,选择角色旁边的 ⊕ 图标,然后添加一个 Humanoid 。
选择IKControl,并在 属性 面板中设置以下属性值:
- 键入 : 从下拉列表中选择 Transform 。
- 目标 : 在 Explorer 中选择新创建的 附件 对象。
您的角色的左臂现在应该触及目标 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 和子附件:
在 Explorer 中,找到您的模型的 左下角手臂 ,然后单击 ⊕ 按钮 。
添加一个 枢轴限制器 用 LeftElbowConstraint 的名称。
在 Explorer 中,导航到 左上角上臂.左臂托架附件 并添加一个附件:
单击 ⊕按钮 添加一个名为 LeftElbowConstraintAttachment0 的LeftElbowConstraintAttachment0。
在视图中,选择附件,然后使用 旋转工具 来旋转附件,使黄色 主要轴 成为您的肘的期望旋转方向。
将 LeftElbowConstraint.Attachment0 属性设置为此新附件。
在 Explorer 中,导航到您的模型的 左下角手臂.左臂盔甲装置附件 添加一个附件:
- 单击 ⊕按钮 并添加 附件 以名称为LeftElbowConstraintAttachment1。
- 将 LeftUpperArm.LeftElbowConstraint.Attachment1 设置为此新附件。
- 复制 LeftElbowConstraintAttachment0.CFrameOrientation 属性,并将其作为 LeftElbowConstraint.附加1.CFrameOrientation 值的复制。
测试你的 IKControl 来验证头肘只在关节轴上旋转:
腕带
即使在腕带约束下,IKControl 仍可以使用手腕产生不真实的姿势。
您可以通过添加 BallSocketConstraint 来限制手腕的旋转。 与添加 HingeConstraint 到肘的过程类似,您可以使用 LimitsEnabled 属性在此约束上进一步控制手腕的移动范围。
要为腕表添加一个 BallSocketConstraint :
- 在 Explorer 中,找到您的模型的 左手 并单击 ⊕ 按钮 。
- 添加一个 BallSocketConstraint 用 LeftWristConstraint 的名称。
- 找到您的模型的 左下臂.左腕带附件 并添加一个附件:
- 点击 ⊕按钮 ,并添加 附件 ,以便添加LeftWristConstraintAttachment0。
- 在视图中,选择附件,然后使用 旋转工具 来旋转附件,使黄色主轴指向模型的手指。
- 将 LeftWristConstraint.Attachment0 属性设置为新的 LeftWristConstraintAttachment0 。
- 找到您的模型的 左侧手腕端配件 并添加一个附件:
- 点击 ⊕按钮 ,并添加 附件 ,名称为 LeftWristConstraintAttachment1。
- 复制左侧腕带约束器附件0.CFrameOrientation 属性,并将其作为 LeftWristConstraintAttachment1.CFrameOrientation 属性的复制。
- 将 LeftWristConstraint.Attachment1 属性设置为此新的 LeftWristConstraintAttachment1 。
- 在 Explorer 中,选择 左腕约束 。
- 在 Properties Editor 中,设置以关注中/正在关注:
- 启用 限制已启用 .
- 将 上角角 设置为 80 。这控约束限制的轴可以旋转多少,而 80 度大约是手腕可以弯曲的程度。
- 根据您的角色,您可能想要调整甜筒所指向的方向。您可以使用 旋转工具 来旋转约束的 附件0。
选择 LeftWristConstraint 时,会出现一个绿色甜筒,显示手腕的移动范围。
设置约束后,测试 IKControl 使用手指指向角色前方,手腕应该更真实地旋转和弯曲。