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