使用滚动提取

HumanIK 将滚动旋转应用于角色的肩部、肘部、髋部或膝部时,您可以提取该旋转的一定百分比并应用于关节链中的下一个节点。根据角色蒙皮的设置方式,以此方式平滑多个关节的滚动旋转可以提高角色网格在 HumanIK 解算后的逼真度。此类型的滚动提取通常不会影响 IK 解决方案中肢体的最终放置。相反,它是一种控制沿手臂和腿部对滚动旋转进行平滑或插值的可选方法。

例如,在以下各图中,角色左腕的效应器已向前滚动 90 度,且其到达旋转值已设置为 1。为使腕部节点达到所需的旋转,HumanIK 将滚动旋转应用于肘部节点。绿线显示肩部、肘部和腕部节点的局部 Y 轴的近似方向。

下图显示未使用任何滚动提取时的结果。由于所有滚动旋转在肘部已局部化,因此该区域的蒙皮已严重变形。

但是,从肘部提取滚动的 60% 并应用于链下方的下一个关节(本例中为腕部),结果将是一个更平滑、更逼真的网格:

请注意,在上述两图中,腕部在全局空间中的最终旋转是相同的。但是,在局部空间中,肘部和腕部的旋转已相对于其父对象进行了更改。

如果已角色化角色手臂和腿部中的可选滚动节点,则滚动提取引擎会将旋转应用于被旋转节点的子滚动节点。例如,在旋转 LeftShoulderNodeId 时,任何提取的滚动旋转都将应用于 LeftShoulderRollNodeId(如果已角色化),或应用于 LeftElbowNodeId(如果未角色化)。同样,在旋转 LeftElbowNodeId 时,任何提取的滚动旋转都将应用于 LeftElbowRollNodeId(如果已角色化),或应用于 LeftWristNodeId(如果未角色化)。

有关 HumanIK 支持的滚动节点的概述及其在骨架层次中的放置,请参见将关节映射到 HumanIK 节点和效应器

滚动提取和自由度

如果已使用自由度角色化子节点,则无法提取滚动旋转并应用于非滚动子节点。

例如,如果未角色化 LeftElbowRollNodeId,则将提取应用于 LeftElbowNodeId 的滚动旋转,并应用于 LeftWristNodeId。在本例中,如果已为 LeftWristNodeId 角色化任何自由度,则不会从父对象提取滚动旋转。

如果 LeftElbowRollNodeId 已角色化,则始终可以从 LeftElbowNodeId 提取滚动旋转并对其应用该旋转,而不管为 LeftWristNodeId 指定的自由度是多少。

传播滚动提取

将滚动提取与滚动节点结合使用时,您也可以提取滚动提取引擎应用于滚动节点的旋转的一定百分比,并将提取的旋转再次应用于关节链下方的下一个节点。这样可能会使旋转的插值更平滑。

例如,在下图中,滚动提取引擎提取应用于肘部的滚动旋转的 60% 并应用于相应的滚动节点。虽然生成的肘部网格比如上所示的未进行任何滚动提取操作的第一张图像好得多,但在本例中,结果仍导致滚动节点周围的蒙皮中有明显的偏差。

但是,在下图中,会再次提取应用于滚动节点的滚动旋转的 50%,并应用于腕部。总而言之,会首先提取应用于肘部的原始旋转的 60%,并应用于滚动节点。然后,从滚动节点提取该旋转的 50% 并应用于腕部。旋转在整个前臂上分布地更加均匀,这样就产生了更逼真的最终网格效果。

滚动传播和自由度

如果已使用任何自由度角色化子节点,则无法从滚动节点提取滚动旋转并应用于其子节点。