コンストレイントとは

コンストレイントを使用すると、オブジェクトの位置、方向、スケールなどを他のオブジェクトに対して制約(コンストレイント)することができます。さらに、コンストレイントを使用すれば、オブジェクトに特定の制限を課して、アニメーションのプロセスを自動化することもできます。

たとえば、でこぼこの丘を滑り降りる「そり」をすばやくアニメートするには、最初にジオメトリ コンストレイントを使用してそりがサーフェスに沿って動くように制約します。このように法線コンストレイントを使用してそりとサーフェスを平行に保つことができます。これらのコンストレイントを作成した後、丘の頂上とふもとのそりの位置にキーを設定します。これでアニメーションが完成します。

Maya では、次のコンストレイントを使用してキャラクタの設定とアニメーションを行うことができます。

他のソフトウェア パッケージでは、「コンストレイント」に代わって「アニメーション コントローラ」という用語を使用している場合があります。

コンストレイントのノードの動作(Node Behavior)アトリビュート

コンストレイントを効果的に使用するためにコンストレイントのノード動作アトリビュートを理解する必要はありません。コンストレイントについて初めて学ぶのであれば、このセクションを省略しても構いません。しかし、コンストレイントのノード動作アトリビュートについて知識があれば、コンストレイントの操作およびパフォーマンスをより自在に操作することができます。

シーン内の各オブジェクトに対し、そのノードまたはそのヒストリ内のノード(その入力または出力ノード)に何らかの変更があった場合、Maya はそのノードのノードの動作(Node Behavior)アトリビュートに基づいてノードを評価し、表示を更新します。コンストレイント ノードのノード動作アトリビュートは、コンストレイント エフェクトの演算と表示に影響します。

コンストレイント対象オブジェクトとターゲット オブジェクト

コンストレイント対象オブジェクトとは、最も近いサーフェスの位置、ターゲット ベクトルの方向、1 つまたは複数のターゲット オブジェクトの位置によって位置や方向などが駆動されるオブジェクトのことです。1 つまたは複数のターゲット オブジェクトの位置をターゲット ポイントと呼びます。1 つまたは複数のターゲット オブジェクトの方向をターゲット方向と呼びます。

ターゲット ポイント

ターゲット ポイントとは、ターゲット オブジェクトの回転ピボットの位置です。複数のターゲット オブジェクトがある場合は、すべてのターゲット オブジェクトの回転ピボットの平均位置がターゲット ポイントになります。複数のターゲット オブジェクトを使用している場合は、各ターゲット オブジェクトがターゲット ポイントの算出時のインフルエンスの度合いを制御することができます。ターゲット ポイントは複数のターゲット オブジェクトの加重平均位置でもあります。その場合は、あるオブジェクトが他のオブジェクトよりも大きく作用することになります。加重平均位置に対するターゲット オブジェクトのインフルエンスは、ターゲット オブジェクトのウェイト値によって指定することができます。各ターゲット オブジェクトの回転ピボットを移動することによって、ターゲット ポイントを変更することができます。

ターゲット方向

ターゲット方向とは、ターゲット オブジェクトの方向(回転 X (Rotate X)YZ アトリビュート)です。複数のターゲット オブジェクトがある場合は、すべてのターゲット オブジェクトの平均方向がターゲット方向になります。しかし、複数のターゲット オブジェクトを使用している場合は、ターゲット方向の算出時に各ターゲット オブジェクトのインフルエンスの度合いを制御することができます。ターゲット方向は、複数のターゲット オブジェクトの加重平均方向でもあります。その場合は、あるオブジェクトが他のオブジェクトよりも大きく作用することになります。加重平均位置に対するターゲット オブジェクトのインフルエンスは、ターゲット オブジェクトのウェイト値によって指定することができます。

ターゲット スケール

ターゲット スケールとは、ターゲット オブジェクトのスケーリング(スケール X (Scale X)YZ アトリビュート)です。複数のターゲット オブジェクトがある場合は、すべてのターゲット オブジェクトの平均スケーリングがターゲット スケールになります。しかし、複数のターゲット オブジェクトを使用している場合は、各ターゲット オブジェクトがターゲット スケールの算出時のインフルエンスの度合いを制御することができます。ターゲット スケールは複数のターゲット オブジェクトの加重平均スケールでもあります。その場合はあるオブジェクトが他のオブジェクトよりも大きく作用することになります。加重平均位置に対するターゲット オブジェクトのインフルエンスは、ターゲット オブジェクトのウェイト値によって指定することができます。

ターゲット ベクトル

ターゲット ベクトルまたは加重平均ベクトルは、コンストレイント対象オブジェクトの位置における法線ベクトルを表します。Maya はターゲット ベクトルをサーフェスまたはメッシュ上にある近接する法線ベクトルの加重平均ベクトルとして算出します。

ターゲット オブジェクトのウェイト値

各ターゲット オブジェクトごとにウェイト値を設定し、それによってターゲット ポイント、方向、スケール、ベクトルなどの算出時にオブジェクトが受けるインフルエンスの度合いを制御することができます。加重平均の結果により、コンストレイント対象オブジェクトの位置、方向などが駆動されます。ターゲット オブジェクトのウェイト値が 0 の場合、コンストレイント対象オブジェクトにインフルエンスを及ぼしません。ターゲット オブジェクトのウェイト値が 1 の場合、コンストレイント対象オブジェクトに最大限のインフルエンスを及ぼします。

注:
  • コンストレイントのウェイト値は、複数のターゲット オブジェクトがある場合には便利です。
  • ターゲット オブジェクトが 1 つのみの場合は、いかなるウェイト値も 1 として解釈されます。したがって、単一のターゲット オブジェクトの場合はコンストレイント対象オブジェクトに 100% 影響するよう解釈されます。

コンストレイント対象オブジェクトの位置

コンストレイント対象オブジェクトの位置はターゲット ポイントによって駆動されます。しかし、コンストレイント対象オブジェクトの位置をターゲット ポイントからオフセットすることもできます。コンストレイント対象オブジェクトの位置をターゲット ポイントからオフセットすることは、コンストレイント対象オブジェクトのローカル座標軸をターゲット ポイントと完全に一致させたくない場合などに便利です。たとえば、キャラクタの手が球を持っているように球を手のジョイントにコンストレイントした場合、球をジョイントからオフセットする必要があります。オフセットすることによって、球が手の中心に置かれるのではなく手のひらの中に収まるようにすることができます。

コンストレイント対象オブジェクトの方向

コンストレイント対象オブジェクトの向きはターゲット方向によって駆動されます。

コンストレイント対象オブジェクトのスケーリング

コンストレイント対象オブジェクトのスケーリングはターゲット スケールによって駆動されます。

ワークフローのまとめ

コンストレイントの設定は簡単です。コンストレイント元のオブジェクトを選択して、コンストレイント対象オブジェクトを選択し、最後にコンストレイント(Constrain)メニューから適切なコンストレイント タイプを選択します。コンストレイントの使用は、コンストレイントの既定のオプションからさらに踏み込んだ使用方法を模索するのに伴って複雑になります。

いくつかのコンストレイントは、コンストレイント対象オブジェクトの一部のチャネルをロックします。たとえば、エイム コンストレイントは、コンストレイント対象オブジェクトの方向チャネル(回転 X (Rotate X)YZ )をロックします。どのチャネルがロックされるかによって、1 つのオブジェクトに対する複数のコンストレイントの使用方法が決定されます。エイム コンストレイント、法線コンストレイント、および接線コンストレイントは、それぞれコンストレイント対象オブジェクトの方向チャネルをロックするため、特定のオブジェクトに対してどれか 1 つしか使用することができません。

コンストレイントによってロックされているアトリビュートには、エクスプレッションを使用できません。また、ロックされたアトリビュートがジョイント上にあると、スケルトンをバインド ポーズに戻すことはできません。