nDynamic コリジョン
 
 
 

コリジョンとは、シーン内の nucleus オブジェクト(nCloth、nParticle、またはパッシブ オブジェクト)間で発生する相互作用です。nCloth オブジェクトと nParticle オブジェクトは自分自身とも衝突でき、これをセルフ コリジョンと呼びます。nucleus オブジェクトのコリジョンやセルフ コリジョンが発生するとき、オブジェクトの動作に作用するエネルギーの交換や変換が行われます。たとえば、移動するパッシブ オブジェクトの球が nCloth の枕に接触した場合、球のフォースと衝撃によって枕は変形します。

一部の nucleus オブジェクト プロパティは nDynamic コリジョンの強さと精度に作用します。たとえば、衝突の強さ(Collide Strength)では、nucleus オブジェクトの衝突によって生成されるフォースの量を調整することや、nCloth とパッシブ コリジョン オブジェクトで選択した頂点を衝突させないように除外することができます。nClothShape ノードの厚み(Thickness)は、nCloth とそのコリジョン ボリューム間の距離を定義します。nParticleShape ノードのセルフ コリジョンの幅スケール(Self Collide Width Scale)は、同じ nParticle オブジェクトから放出されるパーティクル間のコリジョン距離を定義します。nucleus ノードのコリジョン最大反復回数(Max Collision Iterations)は、Maya Nucleus ソルバが nucleus オブジェクトのコリジョンを解決しようとするシミュレーション ステップ単位の最大回数を定義します。押し出し(Push Out)トラップ チェック(Trapped Check)重複部分の押し込み(Crossover Push)の各 nClothShape アトリビュートも、相互貫通の解消によって nCloth コリジョンを改良しようとします。

関連項目

パッシブ オブジェクトとのコリジョン

シーンのポリゴン メッシュからパッシブ オブジェクトを作成し、相互作用させる nCloth や nParticle と同じ Maya Nucleus ソルバに割り当てることができます。パッシブ オブジェクトは nucleus オブジェクト と相互に作用できますが、内部の Maya Nucleus ソルバのプロパティと外部フォースはこれらに影響しません。パッシブ オブジェクトを作成すると、シーン ビューでメッシュにパッシブ オブジェクト ハンドルが表示され、nRigidShape タブがアトリビュート エディタに表示されます。パッシブ オブジェクト ハンドルを使用すると、パッシブ オブジェクトの nRigidShape ノードをすばやく選択でき、これがアトリビュート エディタのカレント タブの選択項目になります。

パッシブ オブジェクトを使用すると、クロス オブジェクトがクロス以外のオブジェクトと接触するときのリアルな動作を作成できます。たとえば、nCloth シャツを着ているキャラクタの場合は、キャラクタの胴体をパッシブ オブジェクトにすることができます。アニメーション時にキャラクタが肘を曲げると、nCloth はキャラクタの腕と接触したように、リアルに動作します。nParticle では、パッシブ オブジェクトを使用すると、飛び散る火花やしぶきを上げる液体など、放出されるパーティクルを偏向させるサーフェスを作成できます。凹領域のあるモデリングしたパッシブ オブジェクトは、nParticle のボリュームで埋めることができます。

パッシブ オブジェクトと他の nucleus オブジェクト間でコリジョンを発生させるには、それぞれのノードのコリジョン(Collisions)プロパティで衝突(Collide)アトリビュートをオンにする必要があります。さらに、各ノードのコリジョン(Collisions)セクションのコリジョン フラグ(Collision Flag)プルダウン リストを使用して、衝突する nCloth オブジェクトとパッシブ オブジェクトのコンポーネント(頂点、エッジ、またはフェース)を設定できます。

パッシブ オブジェクト コリジョンをより詳細に制御する場合は、コリジョンの無効化(Disable Collision)または衝突ペアを除外(Exclude Collide Pairs)コンストレインを使用して、コリジョンにコンポーネントを追加、またはコリジョンからコンポーネントの除外が可能です。nConstraint > コリジョンの無効化(nConstraint > Disable Collision)nConstraint > 衝突ペアを除外(nConstraint > Exclude Collide Pairs)を参照してください。押し出し(Push Out)トラップ チェック(Trapped Check)重複部分の押し込み(Crossover Push)の各nClothShape または nRigidShape アトリビュートを使用すると、パッシブ オブジェクトの相互貫通を解決できます。

コリジョン作成の詳細については、nCloth コリジョンを作成および編集するnParticle コリジョン プロパティを設定するを参照してください。

nCloth と nParticle 間のコリジョン

nCloth オブジェクトと nParticle オブジェクトが同じ Maya Nucleus ソルバに割り当てられている場合は、そのオブジェクト間にコリジョンと相互作用を作成できます。同じソルバに割り当てられた nucleus オブジェクトは、同じようにそのソルバのプロパティの作用を受けます。たとえば、ソルバによって風のフォースが生成されると、nCloth オブジェクトと nParticle オブジェクトは風のフォースと同じ方向にアニメートされます。ただし、質量(Mass)揚力(Lift)などオブジェクトの個々のアトリビュートによって、これらのオブジェクトは異なった反応を示し、そしてこれが nCloth オブジェクトと nParticle オブジェクトが相互に衝突する方法にも作用します。

nParticle オブジェクトと nCloth オブジェクト間に発生するコリジョンでは、個々のノードの衝突(Collide)アトリビュートをオンにしておく必要があります。さらに、nCloth では、コリジョン(Collisions)セクションのコリジョン フラグ(Collision Flag)プルダウン リストで、nParticle と衝突させる nCloth オブジェクトのコンポーネント(頂点、エッジ、またはフェース)を設定できます。

デフォルトでは、同じ nucleus ソルバに属するすべての nParticle、nCloth、パッシブ コリジョン オブジェクトは互いに衝突します。シーン内のすべての nucleus オブジェクトを衝突させないようにするには、オブジェクトを作成する前か後に異なる nucleus ソルバに割り当てます。また、コリジョンの無効化(Disable Collision)衝突ペアを除外(Exclude Collision Pairs)を使用して、nucleus オブジェクトが互いに衝突しないようにすることもできます。詳細については、コリジョンの無効化(Disable Collision)コンストレインと衝突ペアを除外(Exclude Collide Pairs)コンストレインを参照してください。

セルフ コリジョン

nCloth では、頂点やフェースなどの nCloth オブジェクトのコンポーネント間でコリジョンが発生します。セルフ コリジョンは、アニメートされた nCloth が nCloth 自身に接触するときの、クロスの相互作用をシミュレートする場合に必要です。たとえば、nCloth カーテンのパネルをカーテン レールに沿って開く場合、パネルは揺れながら折り畳まれていき、それに連れてクロスが変形します。ほかにも、風が静まったときに旗がしなだれる様子や、ダンサーが向きを変えるときに、ゆったりしたスカートが触れ合う様子を想像してみてください。

nParticle では、セルフ コリジョンは、同じ nParticle オブジェクトに属する個々のパーティクル間で発生します。nParticle と他の nucleus オブジェクト間のコリジョンと同様に、セルフ コリジョンもエネルギーの交換や移動を伴います。nParticle のセルフ コリジョンは、リジッド オブジェクト間の相互作用の概算に使用できます。たとえば、nParticle を含むジオメトリをインスタンス化して、ジオメトリを互いに衝突させることができます。

セルフ コリジョンを発生させるには、nClothShape または nParticle のアトリビュート エディタ(Attribute Editor)タブのコリジョン(Collisions)セクションでセルフ コリジョン(Self Collide)アトリビュートをオンにする必要があります。さらに、nClothShape タブの コリジョン(Collisions)セクションのセルフ コリジョン フラグ(Self Collision Flag)プルダウン リストで、セルフ コリジョンで使用される nCloth のコンポーネント(頂点(Vertex)頂点エッジ(VertexEdge)頂点フェース(VertexFace)完全なサーフェス(Full Surface))を設定できます。セルフ コリジョン最大反復回数(Max Self Collide Iterations)アトリビュートとセルフ コリジョンの幅スケール(Self Collide Width Scale)アトリビュートを使用して、nCloth オブジェクトと nParticle オブジェクトのセルフ コリジョンの精度も調整できます。

コリジョンと nucleus ノード

Maya Nucleus ソルバは、反復によって nucleus オブジェクト コリジョンの適切な動作を取得します。反復回数を増やすと、オブジェクト コリジョンの精度は向上し、シミュレーションのスピードは低下します。nucleus オブジェクト コリジョンとセルフ コリジョンに対して、Maya Nucleus ソルバが実行できる反復回数をクランプするには、nucleus ノードのコリジョン最大反復回数(Max Collision Iterations)アトリビュートまたは nClothShape ノードと nParticleShape ノードのセルフ コリジョン最大反復回数(Max Self Collide Iterations)アトリビュートを設定します。

nucleus オブジェクトの精度を上げるには、Maya Nucleus ソルバが使用するサブステップ数を増やします。サブステップは、Maya Nucleus ソルバがシミュレーションを解決して、オブジェクトのコリジョンをフレーム単位で計算する回数を定義します。サブステップを調整して、シミュレーション時間を分割して計算セグメントにする方法をコントロールできます。複数のソルバ反復をサブステップ単位、フレーム単位に実行できます。サブステップは、高速で移動するオブジェクトのすばやいコリジョンなど、フレーム単位で 1 回の計算だと失敗してまうような場合に最も便利です。nucleus のアトリビュート エディタ タブのソルバ アトリビュート(Solver Attributes)セクションにあるサブステップ(Substeps)アトリビュートを使用して、Maya Nucleus ソルバが使用するサブステップ数を設定できます。

これらのアトリビュートの詳細については、ソルバ アトリビュート(Solver Attributes)精度設定(Quality Settings)を参照してください。

衝突の強さ(Collide Strength)

衝突の強さ(Collide Strength)アトリビュートを使用すると、nucleus オブジェクトが互いに衝突したときに発生する力の強さを指定できます。衝突の強さで、nCloth、nParticle、パッシブ オブジェクトが互いに完全に衝突するのか、部分的に衝突するのかを制御できます。デフォルト値の 1 ではオブジェクトが完全に衝突し、0 ~ 1 の間の値では完全な衝突状態が緩和されます。衝突の強さの値が 0 の場合、オブジェクトのコリジョンを無効にしたときと同じ結果になります。

nCloth アトリビュート ペイント ツール(Paint nCloth Attributes Tool)を使用すると、 nCloth やパッシブ コリジョン オブジェクトに頂点単位で衝突の強さの値をペイントできます。衝突の強さの値をペイントすると、コリジョンの無効化(Disable Collision)コンストレインを作成しなくても、選択した頂点のコリジョンのフォースを無効化または抑制できます。

注:

nCloth を衝突させない領域(衝突の強さ: 0)をペイントする場合、ペイントにソリッド ブラシ(Solid brush) またはスクエア ブラシ(Square brush)を使用します。これにより、ペイントした領域が完全に黒くなり、衝突の強さの値を確実に 0 にできます。ガウス ブラシ(Gaussian brush)またはソフト ブラシ(Soft brush)を使用すると、サーフェスが完全に黒くなりません。完全に黒くなっていない領域では衝突の強さの値が 0 より大きくなってしまい、衝突が生じます。

詳細については、衝突の強さ(Collide Strength)を参照してください。

nParticle には衝突の強さのスケール(Collide Strength Scale)ランプがあり、パーティクル単位で衝突の強さをマップできます。内部のパーティクル単位のランプを使用すると、半径(Radius)質量(Mass)または存在時間(Age)などのプロパティに衝突の強さをマップできます。これにより、個々の nParticle のサイズ、質量または存在時間によって nParticle コリジョンの強さが変わるエフェクトを作成できます。詳細については、衝突の強さのスケール(Collide Strength Scale)nParticle 内部ランプとパーティクル単位のアトリビュートを参照してください。

コリジョン レイヤ

コリジョン レイヤを使用して、同じ Maya Nucleus ソルバを共有する複数のオブジェクト間のコリジョンを整理できます。アトリビュート エディタ(Attribute Editor)の nClothShape と nParticleshape タブのコリジョン レイヤ(Collision Layer)アトリビュートを使用して、nCloth オブジェクトまたは nParticle オブジェクトが属するコリジョン レイヤを指定できます。同じコリジョン レイヤ上にある nCloth オブジェクトと nParticle オブジェクトは正常に衝突します。ただし nucleus オブジェクトが異なるレイヤにある場合、小さい値のレイヤにあるオブジェクトは大きい値のレイヤのオブジェクトよりも優先順位が高くなります。

たとえば、コリジョン レイヤ 0.0 上の nCloth オブジェクトはコリジョン レイヤ 1.0 上の nCloth オブジェクトを押し込み、次にコリジョン レイヤ 2.0 上の nCloth オブジェクトを押し込みます。このコリジョンの優先順位は、アトリビュート エディタ(Attribute Editor)タブ上のコリジョン レイヤ範囲(Collision Layer Range)アトリビュートで設定した範囲内で発生します。

コリジョン レイヤ範囲では、2 つの nucleus オブジェクトを衝突させるための距離を指定できます。2 つのオブジェクトのコリジョン レイヤ値の差がコリジョン レイヤ範囲よりも小さい場合、オブジェクトは衝突できます。たとえば、オブジェクト A のコリジョン レイヤ値が 2、オブジェクト B が 5 の場合、コリジョン レイヤ値の差は 3 です。したがって、コリジョン レイヤ範囲値が 3 より小さい場合のみ、衝突を発生させることができます。

コリジョン レイヤの使用の詳細については、コリジョン レイヤを設定するにはを参照してください。

注:

nucleus オブジェクトは、同じコリジョン レイヤまたはより値の大きいレイヤにあるその他の nucleus オブジェクトのみと衝突します。