简介¶
IK simplifies the animation process, and makes it possible to make more advanced animations with lesser effort.
IK allows you to position the last bone in a bone chain and the other bones are positioned automatically. This is like how moving someone's finger would cause their arm to follow it. By normal posing techniques, you would have to start from the root bone, and set bones sequentially until you reach the tip bone: When each parent bone is moved, its child bone would inherit its location and rotation. Thus making tiny precise changes in poses becomes harder farther down the chain, as you may have to adjust all the parent bones first.
IK就是解决这一问题的有效办法。
Automatic IK¶
参考
- 模式
姿态模式
- 面板
Automatic IK is a tool for quick posing, it can be enabled in the Toolbar in the 3D Viewport, when in Pose Mode. When the Auto IK option is enabled, translating a bone will activate inverse kinematics and rotate the parent bone, and the parent's parent, and so on, to follow the selected bone. The IK chain can only extend from a child to a parent bone if the child is connected to it.
The length of the chain is increased (if there is a connected parent available to add to it) with Ctrl-PageUp or Ctrl-WheelDown, and decreased with Ctrl-PageDown or Ctrl-WheelUp. However, the initial chain length is 0, which effectively means follow the connections to parent bones as far as possible, with no length limit. So pressing Ctrl-PageUp the first time sets the chain length to 1 (move only the selected bone), and pressing Ctrl-PageDown at this point sets it back to 0 (unlimited) again. Thus, you have to press Ctrl-PageUp more than once from the initial state to set a finite chain length greater than 1.
这是比起可以配置的IK约束有更多受限的功能,但它可以用于快速摆放姿态。
IK Constraints¶
IK is mostly done with bone constraints. They work by the same method but offer more choices and settings. Please refer to these pages for detail about the settings for the constraints:
Armature IK Panel 骨架IK面板¶
参考
- 模式
姿态模式
- 面板
该面板用于为骨架选择IK解算器类型。 标准 或 iTaSC 。大多数时候,人们会使用 标准 IK解算。
标准¶
TODO。
iTaSC¶
iTaSC代表使用约束的即时任务规范。
iTaSC使用不同的方法来计算雅可比矩阵,这使得它能够处理除了末端效应器位置和方向之外的其他约束:iTaSC是一个通用的多约束IK解算器。 但是,在当前实现中尚未充分利用此功能,只能处理两种其他类型的约束:笛卡尔空间中的距离和关节空间中的联合旋转。 第一个允许将末端执行器保持在以目标位置为中心的球体内部,内部或外部,第二个是能够直接控制骨骼相对于其父体的旋转。 那些对数学感兴趣的人可以在这里找到用于构建雅可比矩阵方法的简短描述。
iTaSC接受混合约束和每个骨骼的多个约束:求解器根据每个约束的相应权重计算最佳姿势。 这是对当前约束系统的重大改进,其中约束按照定义的顺序逐个求解,使得冲突约束彼此重写。
- 精度
两个连续迭代之间的末端执行器的最大变化,其中获得足够稳定的姿势并且求解器应该停止迭代。 值越小意味着末端执行器位置的精度越高。
- 迭代
迭代次数的上限。
- 解算器
选择iTaSC将使用的逆向雅可比解算器。
- SDLS
通过估计骨架运动学中的 "取消" 水平自动计算阻尼。 这种方法适用于复制姿势约束,但缺点是在单一姿势周围阻尼超过必要,这意味着移动较慢。 当然,这仅在模拟模式下才会显着。
- DLS
手动计算阻尼,可提供更高的反应性和更高的精度。
- 最大阻尼
最大阻尼量。值越小意味着阻尼越小,因此速度越快,精度越高,但在单一姿态下抖动的风险也越大。 0表示根本没有阻尼。
- Damping Epsilon 小量阻尼
单一姿态周围的阻尼区域范围。 较小的值意味着较小的控制区域和更大通过单一姿势的风险,这意味着抖动。
Note
必须针对每个骨架调整 阻尼 和 小量 。 您应该使用保持稳定性的最小值。
Note
SDLS解算器不能和 "距离" 约束一起使用。 如果要使用 "距离" 约束在动画中使用单一姿势,则必须使用DLS解算器。
如果你没有单一姿势,两个解算器都能使用。
动画¶
In Animation mode, iTaSC operates like an IK solver: it is stateless and uses the pose from F-curves interpolation as the start pose before the IK convergence. The target velocity is ignored and the solver converges until the given precision is obtained. Still the new solver is usually faster than the old one and provides features that are inherent to iTaSC: multiple targets per bone and multiple types of constraints.
模拟¶
模拟模式是求解器的有状态模式:它估计目标的速度,在 "真实时间" 上下文中操作,忽略关键帧的旋转(通过关节旋转约束除外)并自动构建状态缓存。
- 重复
- 从不
求解器从静止姿势开始,即使对于第一帧也不重复(收敛)。 这意味着在动画开始时需要几帧才能到达目标。
- 初始
求解器从静止姿势开始并重新迭代直到达到给定精度,但仅在第一帧(即,在高速缓存中没有任何先前帧的帧)上。 此选项基本上允许您选择与其余姿势不同的开始姿势,它是默认值。 对于后续帧,解算器将通过在帧表示的时间间隔内对雅可比解算器计算的关节速度进行积分来跟踪目标。 跟踪精度取决于反馈系数,步数和目标速度。
- 总是
求解器在每个帧上重新迭代,直到达到给定的精度。 此选项省略了大部分iTaSC动态行为:不再保证最大关节速度和帧之间的连续性,以补偿末端执行器位置的更好精度。 它是 动画 和 模拟 真实时间之间的中间模式。
- 自动步长
如果要让解算器设置每帧应执行的子步数,请使用此选项。 子步骤是两个帧之间时间的细分,求解器为此计算IK方程并更新关节位置。 更多子步骤意味着更多处理,但跟踪目标的精度更高。 自动步进算法估计最佳步数,以在处理和精度之间获得最佳折衷。 它通过估计姿势的非线性和通过限制子步骤期间关节变化的幅度来工作。 它可以配置下两个参数:
- 最小值
建议的最小子步持续时间(秒)。 自动步进算法可以进一步基于关节速度减少子步骤。
- 最大值
最大子步持续时间(秒)。 自动步进算法不允许子步长超过此值。
- 步数(阶梯)
如果禁用 "自动步进" ,则可以使用此参数选择固定数量的子步骤。 子步不应超过10毫秒,这意味着25 fps动画的步数为4。 如果骨架在帧之间看起来不稳定(振动),则可以通过增加步数来提高稳定性。
- 反馈
末端执行器位置误差的系数,用于设定矫正关节速度。 纠错的时间常数是该值的倒数。 然而,该参数对骨架的动作几乎没有影响,因为算法在任何情况下都评估目标速度。 将此参数设置为0意味着 "打开循环" :求解器跟踪速度而不是位置; 错误会迅速累积。 将此值设置得太高意味着过度的校正和不稳定的风险。 该值应在20-100范围内。 默认值为20,这意味着在100-200ms的典型时间内纠正跟踪错误。 反馈系数是即使目标已经停止移动,骨架在模拟模式下继续轻微移动的原因:残余误差逐帧被逐步抑制。
- 最大速度
指示性最大关节速度,以弧度/秒为单位。 该参数对骨架动作有重要影响。 如果目标快速移动,较小的值将导致骨架缓慢移动并滞后。 您可以通过将此参数设置为较低值来模拟惯性。
骨骼 IK 面板¶
参考
- 模式
姿态模式
- 面板
该面板用于控制 姿势骨骼 在IK链中的工作方式。
- IK拉伸
拉伸影响到IK目标。
- 锁定
不允许围绕轴运动。
- Stiffness 硬度
绕轴的硬度。如果使用了 锁定,则禁用影响 。
- Limit 限制
围绕轴限制运动。
iTaSC 解算器¶
如果使用 iTaSC IK解算器 则骨骼IK面板会更改以添加这些附加参数。
- 控制旋转
激活该骨骼上的关节旋转约束。 从Action或UI交互计算的姿势旋转将转换为关节值,并作为关节的目标传递给解算器。 这将使您可以控制关节,同时解算器仍然跟踪其他IK目标。 您可以使用此功能为关节(例如静置姿势)提供首选姿势,或通过对关节角度进行动作来设置关节角度的动画。
- 权重
在不能同时实现所有约束的情况下,基于约束权重联合旋转约束的重要性。 例如,如果要强制执行关节旋转,请在关节旋转约束上设置较高的权重,在IK约束上设置较低的权重。
Arm Rig Example 手臂绑定示例¶
这个手臂使用两根骨骼来克服前臂的扭曲问题。IK锁定用于阻止前臂弯曲,但是在 姿态模式 前臂仍然可以通过按 R Y Y 手动扭转,或通过使用其他约束扭转。
Note that, if a Pole Target is used, IK locking will not work on the root boot.