特定のゴールの回転や移動を取得するための特定のマーカーのセットで使用するために、3 つの抽出タイプ(マーカーの位置と回転のジョイント、マーカーの回転ジョイント、およびマーカーでのエイムジョイント)が用意されています。
抽出タイプ
マーカーの位置と回転のジョイント抽出タイプには、指定されたジョイントに割り当てられるように少なくとも 3 つのマーカーが必要です。 3 つ未満のマーカーが割り当てられている場合、「マーカーでのエイム ジョイント」抽出タイプが使用されます。 移動ベクトルは、平均を計算して 3 つのマーカーのセットから簡単に抽出することができます。 回転の抽出は、異なる方法(MotionBuilder が 3 つのマーカーから回転したリファレンスを作成して行う方法)で行うこともできます。 最初に、ベクトルが 1 番目から 2 番目のマーカーに定義され、2 番目のベクトルは、1 番目のマーカーから 3 番目に定義されます。 これらのベクトルの外積は回転したリファレンスの Z 軸になります。 これらの 2 つのベクトルの和は、(クロス積のプロパティによって) Z 軸に対して垂直で、回転したリファレンスの X 軸として使用されます。 Y 軸の残りは、Z 軸と X 軸のクロス積として簡単に計算することができます。 この回転したリファレンスは、3 つのマーカーから抽出した回転を構成します。
この回転は、ゴールの回転として直接使用されません。 スナップ時に、つまり、マーカーがジョイントに割り当てられたときに、「スナップ オフセット」はジョイントの回転と移動とスナップ時に抽出された回転と移動の間の差分として計算されました。 これらのオフセットは、抽出された回転と移動からそれらを簡単に削除することにより、いつでもゴール位置と回転の計算ができます。 3 つ以上のマーカーがこの抽出タイプで使用できる場合、抽出された位置と回転は、3 つのマーカーの可能な組み合わせすべての間で平均化されて、最終的に抽出された値を取得します。
マーカーの回転ジョイント抽出タイプは、マーカーの位置と回転のジョイント抽出タイプとまったく同じ方法でゴールの回転を計算します。 ただし、マーカーを使用してゴール位置を計算するのではなく、キャラクタからの階層情報を使用して、それに関連付けられたジョイントと同じ場所にあるゴールに位置付けます。したがって、マーカーはこの抽出タイプの回転を抽出するためにだけ使用されます。 「スナップ オフセット」は、前と同じ方法で使用されて実際のゴールの回転を計算します。
マーカーでのエイム ジョイント抽出タイプは、回転を抽出するために 2 つのマーカーのみを使用できます。 階層からくるジョイント位置(つまり、前の抽出タイプの位置で使用された位置)は、マーカーの位置と回転のジョイント抽出タイプおよびマーカーの回転ジョイント抽出タイプと同じ回転の抽出を実行するために 3 番目のポイントとして使用されます。他の抽出タイプと同様に、「スナップ オフセット」は、実際のゴールの回転を計算するために使用されます。
マーカーでのエイム ジョイント抽出タイプがマーカーの位置と回転のジョイントとマーカーの回転ジョイントの抽出が選択されたために使用されるけれどもマーカーは 2 つしか使用できない場合、2 つのマーカーによって構成されるポイントのセットから抽出される位置と階層からのジョイント位置が抽出される位置として使用されます。これは、3 つのポイントが完全にリジッド ボディ コンストレインを適用しない場合、階層からのジョイント位置と異なる可能性があります。
抽出は階層のルート(つまりヒップ)から実行されて、階層を下に進みます。 このため、ヒップ ジョイントでは、正しく配置されるように、階層のルートで、常にマーカーの位置と回転のジョイント抽出タイプを使用する必要があります。 ヒップが配置されると、階層下のものはすべて抽出からの位置情報を使用(つまり、マーカーの位置と回転のジョイント抽出タイプを使用)するか、階層からくる位置を使用(つまり、マーカーの回転ジョイントかマーカーでのエイム ジョイント抽出タイプを使用)することができます。これは、ヒップの位置が既知のもので階層下でプロパゲートできるからです。