简介#

反向动力学(IK)简化了动画过程,并使得以更少的工作量制作更高级的动画成为可能。

反向动力学允许您将骨骼链中的最后一个骨骼定位,其他骨骼会自动定位。这就像移动某人的手指会导致他们的手臂跟随它一样。根据正常的姿势技术,您必须从根骨开始,并按顺序设置骨骼,直到到达尖端骨骼:当移动每个父骨时,其子骨将继承其位置和旋转。因此,在链条的更远处进行微小的精确姿势更改变得更加困难,因为您可能必须首先调整所有父骨骼。

IK就是解决这一问题的有效办法。

IK大多在骨骼约束下完成,尽管在姿势模式中还有一个简单的 自动 IK 功能。它们的工作方法相同,但约束提供了更多的选择和控制。有关这些限制的详细信息,请参阅以下页面:

Armature IK Panel 骨架IK面板#

参考

模式:

姿态模式

面板:

属性 ‣ 骨架 ‣ 反向动力学

该面板用于为骨架选择IK解算器类型。标准iTaSC 。大多数时候,人们会使用 标准 IK解算。

标准#

待完善。

iTaSC#

iTaSC代表使用约束的即时任务规范。

iTaSC使用不同的方法来计算雅可比矩阵,这使得它能够处理除了末端效应器位置和方向之外的其他约束:iTaSC是一个通用的多约束IK解算器。但是,在当前实现中尚未充分利用此功能,只能处理两种其他类型的约束:笛卡尔空间中的距离和关节空间中的联合旋转。第一个允许将末端执行器保持在以目标位置为中心的球体内部,内部或外部,第二个是能够直接控制骨骼相对于其父体的旋转。那些对数学感兴趣的人可以在这里找到用于构建雅可比矩阵方法的简短描述。

iTaSC接受混合约束和每个骨骼的多个约束:求解器根据每个约束的相应权重计算最佳姿势。这是对当前约束系统的重大改进,其中约束按照定义的顺序逐个求解,使得冲突约束彼此重写。

精度

两个连续迭代之间的末端执行器的最大变化,其中获得足够稳定的姿势并且求解器应该停止迭代。值越小意味着末端执行器位置的精度越高。

迭代

迭代次数的上限。

解算器

选择iTaSC将使用的逆向雅可比解算器。

SDLS

通过估计骨架运动学中的 "取消" 水平自动计算阻尼。这种方法适用于复制姿势约束,但缺点是在单一姿势周围阻尼超过必要,这意味着移动较慢。当然,这仅在模拟模式下才会显着。

DLS

手动计算阻尼,可提供更高的反应性和更高的精度。

最大阻尼

最大阻尼量。值越小意味着阻尼越小,因此速度越快,精度越高,但在单一姿态下抖动的风险也越大。0表示根本没有阻尼。

Damping Epsilon 小量阻尼

单一姿态周围的阻尼区域范围。较小的值意味着较小的控制区域和更大通过单一姿势的风险,这意味着抖动。

Note

必须针对每个骨架调整 阻尼小量。您应该使用保持稳定性的最小值。

Note

  • SDLS解算器不能和 "距离" 约束一起使用。如果要使用 "距离" 约束在动画中使用单一姿势,则必须使用DLS解算器。

  • 如果你没有单一姿势,两个解算器都能使用。

动画#

在动画模式下,iTaSC 的操作类似于 IK 求解器:它是无状态的,并使用 F 曲线插值中的姿态作为 IK 收敛之前的起始姿势。目标速度将被忽略,求解器会收敛,直到获得给定的精度。尽管如此,新的求解器通常比旧的求解器更快,并提供iTaSC固有的功能:每个骨骼有多个目标和多种类型的约束。

模拟#

模拟模式是求解器的有状态模式:它估计目标的速度,在 "真实时间" 上下文中操作,忽略关键帧的旋转(通过关节旋转约束除外)并自动构建状态缓存。

重复
从不

求解器从静止姿势开始,即使对于第一帧也不重复(收敛)。这意味着在动画开始时需要几帧才能到达目标。

初始

求解器从静止姿势开始并重新迭代直到达到给定精度,但仅在第一帧(即,在高速缓存中没有任何先前帧的帧)上。此选项基本上允许您选择与其余姿势不同的开始姿势,它是默认值。对于后续帧,解算器将通过在帧表示的时间间隔内对雅可比解算器计算的关节速度进行积分来跟踪目标。跟踪精度取决于反馈系数,步数和目标速度。

总是

求解器在每个帧上重新迭代,直到达到给定的精度。此选项省略了大部分iTaSC动态行为:不再保证最大关节速度和帧之间的连续性,以补偿末端执行器位置的更好精度。它是 动画模拟 真实时间之间的中间模式。

自动步长

如果要让解算器设置每帧应执行的子步数,请使用此选项。子步骤是两个帧之间时间的细分,求解器为此计算IK方程并更新关节位置。更多子步骤意味着更多处理,但跟踪目标的精度更高。自动步进算法估计最佳步数,以在处理和精度之间获得最佳折衷。它通过估计姿势的非线性和通过限制子步骤期间关节变化的幅度来工作。它可以配置下两个参数:

最小值

建议的最小子步持续时间(秒)。自动步进算法可以进一步基于关节速度减少子步骤。

最大值

最大子步持续时间(秒)。自动步进算法不允许子步长超过此值。

步数 (阶梯)

如果禁用 "自动步进",则可以使用此参数选择固定数量的子步骤。子步不应超过10毫秒,这意味着25 fps动画的步数为4 。如果骨架在帧之间看起来不稳定(振动),则可以通过增加步数来提高稳定性。

反馈

末端执行器位置误差的系数,用于设定矫正关节速度。纠错的时间常数是该值的倒数。然而,该参数对骨架的动作几乎没有影响,因为算法在任何情况下都评估目标速度。将此参数设置为0意味着 "打开循环":求解器跟踪速度而不是位置;错误会迅速累积。将此值设置得太高意味着过度的校正和不稳定的风险。该值应在20-100范围内。默认值为20,这意味着在100-200ms的典型时间内纠正跟踪错误。反馈系数是即使目标已经停止移动,骨架在模拟模式下继续轻微移动的原因:残余误差逐帧被逐步抑制。

最大速度

指示性最大关节速度,以弧度/秒为单位。该参数对骨架动作有重要影响。如果目标快速移动,较小的值将导致骨架缓慢移动并滞后。您可以通过将此参数设置为较低值来模拟惯性。

骨骼 IK 面板#

参考

模式:

姿态模式

面板:

属性 ‣ 骨骼 ‣ 反向动力学

该面板用于控制 姿势骨骼 在IK链中的工作方式。

IK拉伸

拉伸影响到IK目标。

锁定

不允许围绕轴运动。

Stiffness 硬度

绕轴的硬度。如果使用了 锁定,则禁用影响 。

限制

围绕轴限制运动。

iTaSC 解算器#

如果使用 iTaSC IK解算器 则骨骼IK面板会更改以添加这些附加参数。

控制旋转

激活该骨骼上的关节旋转约束。从Action或UI交互计算的姿势旋转将转换为关节值,并作为关节的目标传递给解算器。这将使您可以控制关节,同时解算器仍然跟踪其他IK目标。您可以使用此功能为关节(例如静置姿势)提供首选姿势,或通过对关节角度进行动作来设置关节角度的动画。

权重

在不能同时实现所有约束的情况下,基于约束权重联合旋转约束的重要性。例如,如果要强制执行关节旋转,请在关节旋转约束上设置较高的权重,在IK约束上设置较低的权重。

Arm Rig Example 手臂绑定示例#

这个手臂使用两根骨骼来克服前臂的扭曲问题。IK锁定用于阻止前臂弯曲,但是在 姿态模式 前臂仍然可以通过按 R Y Y 手动扭转,或通过使用其他约束扭转。

../../../../../_images/animation_armatures_posing_bone-constraints_inverse-kinematics_introduction_example.png

手臂 IK 示例#

请注意,如果使用了 极向目标,则 IK 锁定将不适用于根骨骼。