Pull を使用すると、ターゲット位置に達するために、ジョイントでキャラクタのスケルトン内の他のジョイント チェーンを移動させることができます。
ノードに適用される Reach Translation がゼロでない場合、Pull だけが適用されることに注意してください。エフェクタの Reach Translation がゼロである場合、そのエフェクタの Pull 値は考慮されません。
インバース キネマティクス ソルバは、キャラクタのターゲット ポーズを定義するすべてのエフェクタに適用される Pull 設定を満足させようとします。ただし、すべての Pull 値を完全に満たすことができない場合、ソルバでは階層を使用してさまざまなジョイント チェーンの優先度が決定されます。この階層では、ヒップは最も重要なジョイントと見なされます。このヒップに適用する Pull 値は、常に最初に満たされます。その他のジョイントは、キャラクタのスケルトンでのヒップからの距離に従って優先度が決定されます。すなわち、胸の優先度は肩より高く、肩の優先度は肘などより高くなります。
HumanIK によって使用される Pull の優先度のシステムは、次のルールによってまとめることができます。
これにより、ターゲットに達するために必要な場合、手は残りのボディの引き寄せに影響を及ぼすことができます。ただし、ターゲットが遠すぎる場合、Pull によってキャラクタがスケルトン全体に寄りかかり、結果として生じるポーズが不安定で不自然になる場合があります。ヒップに対して最大の Reach と Pull コンストレインを設定することにより、これを回避することができます。ヒップは手首より優先度が高いため、キャラクタは上半身だけを使用して可能な範囲でドアのノブに寄りかかり、手首によって適用される Pull ではキャラクタのヒップや足が移動されません。
代わりに、SetHandPullHips()関数を呼び出して、手首がヒップで Pull を実行する機能を無効にすることもできます。
上で概要を説明した優先度のシステムを利用する以外にも多くの方法があり、HumanIK Pull エンジンを微調整して、キャラクタのボディの不自然なデフォーメーションを防止することができます。たとえば、キャラクタのプロパティを設定し、キャラクタの重心のバランスがとれていない足の間にヒップの位置を制限することができます。詳細については、「キャラクタ プロパティ」と「全般プロパティ」を参照してください。