Pull 允许关节移动角色骨骼中的其他关节链,以到达其目标位置。
![]() |
例如,在左侧的图像中,绿色定位器表示与左腕部关节对应的效应器。 |
![]() |
即使效应器的到达平移设置为最大值,角色的手臂太短也无法伸到效应器的位置。 |
![]() |
对效应器另外应用一个 Pull 约束可使身体的其他关节链(在这种情况下,为脊椎、髋部,甚至可能是腿部)旋转和平移,这样手腕便可以到达其效应器的位置。 |
请务必注意,仅当应用于节点的到达平移为非零值时才应用 Pull。如果效应器的到达平移值为零,则不会考虑该效应器的 Pull 值。
反向运动学解算器尝试满足应用于定义角色目标姿势的所有效应器的 Pull 设置。但是,当所有 Pull 值无法完全满足时,该解算器会使用层次来确定不同关节链的优先级。在该层次中,髋部被认为是最重要的关节,应用于髋部的 Pull 值总是先得到满足。其他关节的优先级将根据这些关节距离角色骨骼中髋部的距离而定:即胸部的优先级高于肩部,而肩部的优先级高于肘部,等等。
HumanIK 使用的 Pull 优先级系统可通过以下规则进行概括:
这样,手就可以在需要时对身体的其他部位施加拉力以到达某个目标位置。但是,如果目标位置太远,Pull 可能会使角色的整个骨骼发生倾斜,从而导致姿势不平衡或失真。您可以通过为髋部设置最大到达和 Pull 约束来避免发生此情形。因为髋部的优先级高于腕部,角色将仅用上半身尽可能远地朝门把倾靠,腕部应用的 Pull 将不会移动角色的髋部或腿部。
除了利用上述的优先级系统,还有许多其他方法可以微调 HumanIK 拉力引擎来避免角色的身体出现失真变形。例如,可以设置角色特性,将髋部的位置限制在两脚之间,从而不会破坏重心。请参见角色特性和常规特性。