コリジョンとは、シーン内の nucleus オブジェクト(nCloth、nParticle、またはパッシブ オブジェクト)間で発生する相互作用です。nCloth オブジェクトと nParticle オブジェクトは自分自身とも衝突でき、これをセルフ コリジョンと呼びます。nucleus オブジェクトのコリジョンやセルフ コリジョンが発生するとき、オブジェクトの動作に作用するエネルギーの交換や変換が行われます。たとえば、移動するパッシブ オブジェクトの球が nCloth の枕に接触した場合、球のフォースと衝撃によって枕は変形します。
一部の nucleus オブジェクト プロパティは nDynamic コリジョンの精度に作用します。たとえば、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 のボリュームで埋めることができます。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 コリジョン(Collisions)プロパティを設定します。を参照してください。
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 オブジェクトのセルフ コリジョンの精度も調整できます。
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)を参照してください。
コリジョン レイヤを使用して、同じ 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 より小さい場合のみ、衝突を発生させることができます。
コリジョン レイヤの使用の詳細については、 コリジョン レイヤを設定するにはを参照してください。