HumanIK には、キャラクタの足、足指、手、指が、フロア、壁、傾斜板など方向付けされたプレーンを突き抜けないようにする、高度なフロア コンタクト エンジンが用意されています。
フロア コンタクト エンジンは効果的にキャラクタの四肢のローカルな偏差を防止し、方向付けされた指定のプレーンのサーフェスにスナップします。
次のセクションでは、足および手のコンタクト エンジンが内部的に動作する方法に関する全般的な情報を示します。足および手のコンタクトをセットアップする方法を示す完全な手順は、「足および手のコンタクトを設定する」を参照してください。
HumanIK では、キャラクタの足と手がフロア コンタクトに関して同等であると見なされます。両方のタイプのジョイントで同じソルビング プロセスが使用され、両方のタイプで同じ設定オプションを使用できます。関連するボディ パーツを反映するため、設定プロパティの名前のみが異なります。ただし、HumanIK がキャラクタのジョイントを内部的に扱う方法は類似していますが、各スケルトンの要求により、通常は足と手の設定は異なる結果になります。
足または手のコンタクトをセットアップするときに、足首/手首のジョイントまたは足/手のジョイントのいずれかに対して相対的な計測セットを提供して、キャラクタの足または手のシェイプの大まかなアウトラインを HumanIK に指定します。HumanIK は、これらの計測からアウトライン周囲のマーカー セットを計算します。足および手のコンタクトを有効にすると、HumanIK はこれらすべてのマーカーを常にプレーンの上に保持し、必要に応じて足首/手首のジョイントと、キャラクタの残りのスケルトンを適切な状態にします。
HumanIK にキャラクタの足と手の寸法を指定するために使用できる手法の詳細は、「コンタクト タイプ」を参照してください。
キャラクタの両足は同じ寸法と設定プロパティを共有し、キャラクタの両手は別の寸法と設定プロパティのセットを共有します。キャラクタの左足と右足、または左手と右手に別の設定を指定することはできません。ただし、各四肢にフロアの異なる向きを設定することができます。たとえば、キャラクタの左足を傾斜板にかけ、右足を水平なサーフェスにかけたり、それぞれの手を 2 つの異なる壁に接触させることができます。
キャラクタのスケルトンに個別の指と足指が含まれている場合は、キャラクタに対して足指と指のコンタクトを有効にすることができます。足指または指のコンタクトが有効になっている場合、HumanIK は各足指または指の端に球形マーカーを維持します。このマーカーのサイズは、各足指または指に対して個別に設定できます。これらの球形マーカーのいずれの部分も、プレーンを突き抜けることは許可されません。
足指および指のコンタクトは、足および手のコンタクトに対して任意に指定する拡張機能です。足のコンタクトを有効にせずに足指のコンタクトのみを有効にしたり、手のコンタクトを有効にせずに指のコンタクトを有効にすることはできません。さらに、各足指または指ごとに足指と指のコンタクトを有効または無効にすることはできません。足指または指のコンタクトを有効または無効にする操作は、キャラクタのすべての足指または指に対して同時に適用されます。
足および指のコンタクト エンジンにより、キャラクタのスケルトンのその他のジョイントがプレーンを突き抜けることは防止できないという点に注意してください。エフェクタをフロアのレベルよりもかなり下に配置したり、壁のサーフェスの背後に配置しないようにします。このような操作を行うと、足や手がプレーンを突き抜けなくても、肘や膝などその他のジョイントが突き抜ける場合があります。極端な場合、これにより、フロア コンタクト エンジンがキャラクタの足と手をサーフェスの間違った側にスナップすることもあります。
HumanIK インバース キネマティクス ソルバは、2 つのパスで足および手のコンタクトを実行します。ソルビング プロセスの開始時点で、Pull エンジンを呼び出す前に、コンタクトに対して望まれる最終結果の高速な近似が実行されます。この初期パスにより、Pull エンジンは、足および手のコンタクト用に定義されたプレーンを他のボディ パーツが通過させないようにできます。ソルビング プロセスの最後に、キャラクタのすべての四肢に対して新しい位置を作成後、インバース キネマティクス ソルバはフロア コンタクト エンジンを再度呼び出し、キャラクタと足および手のコンタクト用に定義されたプレーンとの間のコンタクトを微調整します。