説明どおりにレッスンを進めるために、レッスンを開始する前に次の手順を実行します。
このレッスンでは、レッスンのシーン ファイルに加えて、Maya ジオメトリのキャッシュ ファイルにアクセスする必要があります。
このセクションでは、ラップ デフォーマを使用して高解像度メッシュをシミュレートされた低解像度メッシュのように動作させるインフルエンス オブジェクトを作成します。詳細については、「 デフォーマとは」を参照してください。
アトリビュート エディタ(Attribute Editor)にラップ ノードが表示され、アウトライナに Pants_LowResBase オブジェクトが表示されます。
これをオンにすると、Pants_HighRes オブジェクト上の各サーフェス ポイント(頂点)が Pants_LowRes オブジェクトの頂点によってコンストレインされるか作用されます。これにより、Pants_HighRes オブジェクトはシミュレートされる nCloth ズボンのプロパティを確実に継承します。
ポリゴン数の多い Pants_HighRes オブジェクトでは、シミュレーション速度は遅くなると思われるかもしれません。ところが、実際には速度が遅くなることはありません。これは nucleus ソルバが Pants_HighRes オブジェクトにコネクトされたデータをシミュレートしないためです。シミュレーションに含まれる nucleus 計算はすべて、引き続き低解像度の nCloth ズボン上で実行されます。Pants_HighRes オブジェクトの動作は、シミュレートされる nCloth の新しいインスタンスである Pants_LowResBase オブジェクトの影響を受けます。アウトライナ(Outliner)では、Pants_LowResBase オブジェクトが Character_LowRes グループに追加されるのを確認できます。
Pants_LowResBase オブジェクトは Pants_HighRes オブジェクトのデフォメーションに対するベースのシェイプで、これがラップ インフルエンス オブジェクトです。すべてのラップ デフォーマと同様に、ベースのシェイプとラップ インフルエンス オブジェクト間の位置、方向、またはシェイプの差に基づいて、ラップ デフォーマによるインフルエンスを受けているサーフェスが変形します。
アニメートされたキャラクタの nCloth ズボンをシミュレートする
レッスンのこのセクションでは、nRigid の胴体オブジェクトと nRigid の靴オブジェクトに対するジオメトリ キャッシュをインポートし、胴体と靴をアニメートしながら nCloth ズボン オブジェクトのシミュレートを開始します。
このセクションを説明どおりに進めるために、レッスンを開始する前に次の手順を実行します。
ジオメトリ キャッシュをインポートして胴体と靴のメッシュをアニメートするには
シミュレーションを再生し、アニメートされたキャラクタと一緒にシミュレートされたときの nCloth ズボンの動作を確認できます。ただし、タイムラインをスクラブできないとシミュレーションを詳細に検査することは困難です。シミュレーションの問題をより簡単に特定するには、nCloth ズボン オブジェクトのキャッシュを作成します。nCache の詳細については、 nCaching 概要を参照してください。
nCache の作成オプション(Create nCache Options)ウィンドウが表示されます。
シミュレーションを再生すると、nCloth ズボン オブジェクトに次の問題があることがわかります。
タイムラインをスクラブしながらシーンをドリーおよびタンブルし、各問題領域に接近して観察できるようにします。
シミュレーションの問題の修正に役立つ最初の手順は、nucleus ソルバのサブステップとコリジョン最大反復回数(Max Collision Iterations)の数を増やすことです。サブステップは、nCloth とパッシブ コリジョン オブジェクト間のコリジョンの検出からダイナミック プロパティ(Dynamic Properties)アトリビュートとダイナミック コンストレインのエフェクトまで、Maya Nucleus ソルバがシミュレーションに含まれるすべてを計算するフレームごとの回数を指定します。サブステップを調整すれば、シミュレーション時間をどのように分割して計算セグメントにするかをコントロールできます。一般的にはシミュレーション精度とコリジョン精度は、サブステップ値を増やすと向上します。コリジョン最大反復回数は、Maya Nucleus ソルバのフレームごとのコリジョン反復の最大回数を指定します。サブステップまたはコリジョン最大反復回数が多いと、ソルバが遅くなる可能性があります。
シーンの複雑さによっては、重力と風のみが nCloth オブジェクトに作用する静止シーンをシミュレートする場合には、デフォルト値であるサブステップを 3、コリジョン最大反復回数 を 4 に設定するとうまくいくこともあります。nCloth が移動し始めてセルフ コリジョンする場合は、特に高速に移動するオブジェクトでコリジョンを正確に検出できるように、サブステップ値を大きくする必要があります。nCloth コリジョンの数が増加した場合や、ダイナミック コンストレインがオブジェクトに追加された場合には、コリジョン最大反復回数を増やすことが重要になります。詳細については、 サブステップ(Substeps)および コリジョン最大反復回数(Max Collision Iterations)を参照してください。
シミュレーションを再生すると、フレーム 1030 以降で、ひざの領域のポリゴン フェースがよりリアルになっているのがわかります。 クロスのデフォメーションがより多くのフェース上に広がり、よりリアルに見えるようになりました。ただし、シミュレーションの問題がすべて解決されたわけではありません。サブステップとコリジョン最大反復回数により大きい値を設定する必要がある場合もあります。
サブステップとコリジョン最大反復回数を増やすと、nucleus ソルバはシミュレートされる各ステップでより多くの計算を実行することになるため、結果としてシミュレーション速度が遅くなります。シミュレーションの精度とパフォーマンスのバランスをとるために、より高いサブステップとコリジョン最大反復回数が必要なシミュレーションの特定の領域やフレームを特定するのに役立ちます。 キーフレームを設定して、シミュレーションの存続中にサブステップとコリジョン最大反復回数の値をアニメートできます。
サブステップとコリジョン最大反復回数にキーフレームを設定するには
フレーム(Frame) | サブステップ(Substeps) | コリジョン最大反復回数(Max Collision Iterations) |
---|---|---|
1019 | 5 | 6 |
1020 | 7 | 8 |
1022 | 9 | 12 |
1025 | 15 | 20 |
1060 | 9 | 12 |
キャッシュを再生すると、シミュレーションの全体的な精度が改良されていることがわかります。ただし、問題領域はまだ確認でき、特にウエストと股部分で目立っています。たとえば、フレーム 1030 では、股領域の質の悪いセルフ コリジョンの結果、望ましくないポリゴン デフォメーションが作成されています。シミュレーションの精度を向上させるために、ダイナミック プロパティ(Dynamic Properties)アトリビュートの微調整を開始できます。
ダイナミック プロパティ アトリビュートなどの nCloth アトリビュートを細かく調整する場合は、シミュレーションのさまざまなフレームで nCloth メッシュの複製を作成しておくと役立ちます。シミュレーションを再生するときに、現在シミュレート中の nCloth を複製メッシュと比較して、次の項目について評価できます。
股領域の問題を解決するために、ベンドの抵抗(Bend Resistance)を大きくしてポリゴンのエッジが形状をより良く保持できるようします。詳細については、 ベンドの抵抗(Bend Resistance)を参照してください。
シミュレーションを再生すると、股領域のクロスがよりリアルにカーブしているのがわかります。タイムラインでフレーム 1030 に進み、シミュレートされた nCloth を複製メッシュと比較します。シーンをドリーおよびタンブルして問題領域に接近して観察できるようにします。
シミュレーションを再生して問題領域を複製メッシュと比較すると、フレーム 1030 と 1035 の間にまだ問題領域が残っていることがわかります。
シミュレーション精度を向上させるもう 1 つの方法として、セルフ コリジョン フラグ(Self Collision Flag)と精度設定(Quality Settings)アトリビュートの編集があります。これはnCloth コンポーネントのコリジョンとセルフ コリジョンに作用します。デフォルトでは、セルフ コリジョン フラグ(Self Collision Flag)は頂点フェース(VertexFace)に設定されています。つまり nCloth オブジェクトの頂点とフェースが互いに衝突します。セルフ コリジョン フラグを完全なサーフェス(Full Surface)に設定すると、すべてのオブジェクト コンポーネント(頂点、エッジ、フェース)がセルフ コリジョンの対象として設定されます。低解像度メッシュをシミュレートする場合は、メッシュの頂点、エッジ、およびフェースの数が少ないため、nCloth オブジェクトの潜在的なセルフ コリジョン領域の数を増やすことが重要です。高解像度の nCloth メッシュでセルフ コリジョン フラグを完全なサーフェスに設定すると、シミュレーション時間が長くなります。この問題は低解像度メッシュでは軽減されるため、反復シミュレーション テストではこの代替が非常に有用です。詳細については、 コリジョン(Collisions)を参照してください。
セルフ コリジョン(Self Collision)アトリビュートの初期の微調整後に、精度設定(Quality Settings)を編集してシミュレーションのコリジョンとセルフ コリジョンを改良します。これにより、nCloth のズボン オブジェクトと nRigid の靴との間の残りの相互貫通が解決します。また、厚み(Thickness)を増やすか、厚みマップ(Thickness Map)を作成してコリジョン検出を改良することもできます。
タイムラインで、フレーム 1033 に進み、シミュレートされた nCloth を複製メッシュと比較します。タイムラインをスクラブしながらシーンをドリーおよびタンブルし、問題領域に接近して観察できるようにします。
ラップされた nCloth シミュレーションをシミュレートされた高解像度メッシュと比較する
nCloth ズボン オブジェクトのアトリビュート調整を完了するには、ラップされた nCloth シミュレーションをリファレンス キャラクタ オブジェクト(オリジナルのシミュレートされた高解像度メッシュ)と比較します。
シミュレーションを再生またはスクラブすると、次のことを確認できます。
nCloth ズボンの脚をフォースして、リファレンス キャラクタ オブジェクトのズボンの脚と同じ方法でシミュレートするには、摩擦(Friction)アトリビュートを調整します。