IK约束

IK约束在Spine Essential版中不可用。

IK约束用于设置骨骼旋转,可使骨骼末梢接触或指向目标骨骼。这有多种用途,但最常见的是通过移动手或脚来控制四肢。

通常设置动画的方式称为FK或正向运动学。FK是一种自上而下的方法:要设置手部位置动画,首先旋转上臂,然后旋转下臂。许多动作都可以用这种方式完成,但其他动作很难做到。例如,要在骨架站立时保持手的位置,需要连续调整手臂骨骼,需要许多关键帧才能使手保持在适当位置。

IK或“反向运动学”可以通过使用自下而上的方法更优雅地解决这个问题。例如,设置手位置,然后Spine会自动设置上臂骨骼和下臂骨骼的旋转。

IK可用于许多任务,例如在行走动画期间防止脚穿透地板、在运行时调整IK目标以站立在不平坦的地形上、等。

有关用法示例,请参阅IK约束演示示例项目提示

设置

Spine IK可以约束一个或两个骨骼。要创建IK约束,请首先:

  • 对于一个骨骼,选择要约束的骨骼。创建IK约束后,骨骼将旋转以指向目标骨骼。
  • 对于两个骨骼,选择要约束的骨骼并选择其子对象之一。创建IK约束后,骨骼将旋转,以致子骨骼的末梢位于目标骨骼。

单击受约束的骨骼将在末梢创建目标,确保在创建IK约束时受约束的骨骼不会移动。

接下来,在层级树属性中选择新建... IK约束,进入选择目标模式。通过单击现有骨骼或在空白区域单击以创建新骨骼来选择目标骨骼。单击受约束的骨骼将在该骨骼的末梢创建目标。目标骨骼不能是受约束骨骼的子级。

不支持约束三个或更多骨骼,因为其具有不确定性且难以控制。而应使用多个IK约束或FK。

属性

对于单骨骼IK:

对于双骨骼IK:

父级

这将显示第一个受约束的骨骼。单击该骨骼将选中它。

单击铅笔图标可以选择不同的骨骼。

子级

对于一个骨骼IK,此属性将为空。

这显示了第二个受约束的骨骼。单击骨骼将选中它。

点击铅笔图标可以选择不同的骨骼,或者点击X按钮可以清除子骨骼。

目标

这将显示目标骨骼。单击该骨骼将选中它。

单击铅笔图标可以选择不同的骨骼。

正向

此属性仅适用于双骨骼IK。

选中后,子骨骼相对于父骨骼以正向(逆时针方向)旋转。

正弯曲方向属性可设置关键帧

压缩

此属性仅可用于一个骨骼IK。

当与目标骨骼的距离小于受约束骨骼的长度时,压缩会使受约束骨骼缩放得更小。

压缩属性可以设置关键帧

拉伸

当到目标骨骼的距离大于受约束骨骼的长度时,拉伸会使受约束骨骼缩放得更大。

拉伸属性可以设置关键帧

与双骨骼IK一起使用时的限制:

  • 子骨骼的本地Y平移设置为0。
  • 柔和度大于0时不应用拉伸。
  • 当父骨骼具有本地非均匀比例时,不会应用拉伸。

均匀

选中并使用压缩拉伸时,骨骼在X轴和Y轴上的缩放比例相同。

柔和度

此属性仅可用于双骨骼IK。

柔和度会在受约束的骨骼拉直时减慢骨骼的速度。柔和度为0时,IK骨骼可能会在目标超出范围之前快速移动,这通常是不需要的。

柔和度值是目标骨骼与骨骼最大伸展之间的距离,骨骼在伸直时开始减慢速度。除非目标移动到超过骨骼的最大伸展范围,否则骨骼不会完全伸直。

柔和度属性可以设置关键帧

混合

请参见约束混合。混合属性可以设置关键帧

通常,混合FK和IK只在动画期间过渡到0(仅FK)和100(仅IK)或反向过渡时短暂需要。但是,某些情况下可以利用混合FK和IK来实现难以设置关键帧的组合运动。例如,手臂使用IK微微上下挥动,同时还使用FK执行另一个动画。

当混合值大于0且小于100时,移动目标骨骼可能会导致旋转突然使用另一个方向。这是因为骨骼旋转和约束旋转之间的插值使用最短的旋转方向。

对于双骨骼IK,当混合大于0并且父骨骼具有本地非均匀比例时,子骨骼的本地Y平移将设置为0。

限制

由于IK和骨骼变换的相互作用,存在一些小限制:

  • 目标骨骼不能是受约束骨骼的子对象。
  • 对于双骨骼IK:
    • 子骨骼必须是父骨骼的直接子骨骼。
    • 任何受约束的骨骼都不能禁用继承旋转、缩放和剪切。
    • 父IK骨骼的本地剪切设置为0。
    • 当混合大于0并且父骨骼具有本地非均匀比例时,子骨骼的本地Y平移设置为0。
    • 拉伸使子骨骼的本地Y平移设置为0。
    • 如果柔和度大于0,则不应用拉伸。
    • 当父骨骼具有本地非均匀比例时,不会应用拉伸。

视频

Bilibili

下一节: 路径约束 上一节: 约束