Lesson 3: 高解像度メッシュをラップしてアニメーション時にズボンをシミュレートする
 
 
 

このレッスンでは、以下の操作を行います。

レッスンの設定

説明どおりにレッスンを進めるために、レッスンを開始する前に次の手順を実行します。

  1. nCloth の高度なテクニックのフォルダを次の場所からコピーします(まだコピーしていない場合)。http://www.autodesk.co.jp/maya-advancedtechniquesその後、nCloth のAdvancedTechniques ディレクトリを Maya プロジェクトとして設定します。

    このレッスンでは、レッスンのシーン ファイルに加えて、Maya ジオメトリのキャッシュ ファイルにアクセスする必要があります。

  2. Character_LowRes_3.mb という名前のシーン ファイルを開きます。

    このファイルは、Maya プロジェクトとして設定した AdvancedTechniques ディレクトリにあります。

高解像度メッシュをラップする

このセクションでは、ラップ デフォーマを使用して高解像度メッシュをシミュレートされた低解像度メッシュのように動作させるインフルエンス オブジェクトを作成します。詳細については、 デフォーマとは」を参照してください。

高解像度メッシュをラップするには

  1. シーン ビューで、アウトライナ(Outliner)から Pants_HighRes オブジェクトを選択して表示し、それからディスプレイ > 表示 > 選択項目の表示(Display > Show >Show Selection)を選択します。

  2. キーを押しながら nCloth ズボンを選択します。
  3. アニメーション(Animation)メニュー セットから デフォーマの作成 > ラップ(Create Deformers > Wrap)を選択します。

    アトリビュート エディタ(Attribute Editor)にラップ ノードが表示され、アウトライナ Pants_LowResBase オブジェクトが表示されます。

  4. アトリビュート エディタで、wrap1 タブをクリックします。
  5. ラップ アトリビュート(Wrap Attributes)セクションで、排他バインド(Exclusive Bind)をオンにします。

    これをオンにすると、Pants_HighRes オブジェクト上の各サーフェス ポイント(頂点)が Pants_LowRes オブジェクトの頂点によってコンストレインされるか作用されます。これにより、Pants_HighRes オブジェクトはシミュレートされる nCloth ズボンのプロパティを確実に継承します。

  6. Pants_LowRes オブジェクトを非表示(Hide)にして、シミュレーションを再生します。

シミュレーションを再生すると、次のことがわかります。

ポリゴン数の多い 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 ズボン オブジェクトのシミュレートを開始します。

レッスンのセットアップ

このセクションを説明どおりに進めるために、レッスンを開始する前に次の手順を実行します。

  1. Pants_HighRes オブジェクトがシーン ビューに表示されている場合は、アウトライナ(Outliner)で Pants_HighRes を選択して非表示にし、それからディスプレイ > 非表示 > 選択項目の非表示(Display > Hide > Hide selection)を選択します。
  2. Pants_LowRes オブジェクトがシーン ビューに表示されない場合は、アウトライナ(Outliner)Pants_LowRes を選択して表示し、それからディスプレイ > 表示 > 選択項目の表示(Display > Show > Show Selection)を選択します。

ジオメトリ キャッシュをインポートして胴体と靴のメッシュをアニメートするには

  1. シーン ビューで nRigid_Body オブジェクトを選択します。
  2. アニメーション メニュー セットから ジオメトリ キャッシュ > キャッシュのインポート(Geometry Cache > Import Cache)を選択します。
  3. 表示されるインポート(Import)ウィンドウで、Maya プロジェクト フォルダを参照して Body_Animation.mc を選択します。
  4. シーン ビューで nRigid_Shoes オブジェクトを選択します。
  5. アニメーション メニュー セットから ジオメトリ キャッシュ > キャッシュのインポート(Geometry Cache > Import Cache)を選択します。
  6. 表示されるインポート ウィンドウで、Maya プロジェクト フォルダを参照して Shoe_Animation.mc を選択します。

シミュレーションを再生し、アニメートされたキャラクタと一緒にシミュレートされたときの nCloth ズボンの動作を確認できます。ただし、タイムラインをスクラブできないとシミュレーションを詳細に検査することは困難です。シミュレーションの問題をより簡単に特定するには、nCloth ズボン オブジェクトのキャッシュを作成します。nCache の詳細については、 nCaching 概要を参照してください。

nCloth ズボンのシミュレーションをキャッシュするには

  1. シーン ビューで、nCloth ズボンを選択します。
  2. nDynamics メニュー セットで、 nCache > 新規キャッシュの作成(nCache > Create New Cache) を選択します。

    nCache の作成オプション(Create nCache Options)ウィンドウが表示されます。

  3. nCache の作成オプションウィンドウで、以下を実行します。
    • キャッシュ ディレクトリ(Cache Directory)に、キャッシュを保存するフォルダを設定します。
    • キャッシュ名(Cache Name)に nCloth_PantsShape を設定します。
    • ファイル配分(File distribution)の項目にある 1 ファイル(One File)を選択します。
    • 作成(Create) ボタンをクリックします。
  4. シミュレーションを再生します。

シミュレートされた nCloth で問題領域を特定する

シミュレーションを再生すると、nCloth ズボン オブジェクトに次の問題があることがわかります。

タイムラインをスクラブしながらシーンをドリーおよびタンブルし、各問題領域に接近して観察できるようにします。

サブステップ(Substeps)を編集する

シミュレーションの問題の修正に役立つ最初の手順は、nucleus ソルバのサブステップコリジョン最大反復回数(Max Collision Iterations)の数を増やすことです。サブステップは、nCloth とパッシブ コリジョン オブジェクト間のコリジョンの検出からダイナミック プロパティ(Dynamic Properties)アトリビュートとダイナミック コンストレインのエフェクトまで、Maya Nucleus ソルバがシミュレーションに含まれるすべてを計算するフレームごとの回数を指定します。サブステップを調整すれば、シミュレーション時間をどのように分割して計算セグメントにするかをコントロールできます。一般的にはシミュレーション精度とコリジョン精度は、サブステップ値を増やすと向上します。コリジョン最大反復回数は、Maya Nucleus ソルバのフレームごとのコリジョン反復の最大回数を指定します。サブステップまたはコリジョン最大反復回数が多いと、ソルバが遅くなる可能性があります。

シーンの複雑さによっては、重力と風のみが nCloth オブジェクトに作用する静止シーンをシミュレートする場合には、デフォルト値であるサブステップを 3、コリジョン最大反復回数 を 4 に設定するとうまくいくこともあります。nCloth が移動し始めてセルフ コリジョンする場合は、特に高速に移動するオブジェクトでコリジョンを正確に検出できるように、サブステップ値を大きくする必要があります。nCloth コリジョンの数が増加した場合や、ダイナミック コンストレインがオブジェクトに追加された場合には、コリジョン最大反復回数を増やすことが重要になります。詳細については、 サブステップ(Substeps)および コリジョン最大反復回数(Max Collision Iterations)を参照してください。

サブステップコリジョン最大反復回数を編集するには

  1. アトリビュート エディタ(Attribute Editor)で、nucleus1 タブを選択します。
  2. ソルバ アトリビュート(Solver Attributes)で、以下を実行します。
    • サブステップ(Substeps)を 7 に設定します。
    • コリジョン最大反復回数(Max Collision Iterations)を 8 に設定します。

  3. シミュレーションを再生してこの新しい設定の結果を確認する前に、シミュレーションの前の nCache を削除してください。そうしないと、変更内容がシミュレーションに表示されません。前の nCloth キャッシュを削除するには、nCloth オブジェクトを選択してから、 nCache > キャッシュの削除(nCache > Delete Cache)を選択します。
  4. シミュレーションをキャッシュし、それから再生します。

シミュレーションを再生すると、フレーム 1030 以降で、ひざの領域のポリゴン フェースがよりリアルになっているのがわかります。 クロスのデフォメーションがより多くのフェース上に広がり、よりリアルに見えるようになりました。ただし、シミュレーションの問題がすべて解決されたわけではありません。サブステップコリジョン最大反復回数により大きい値を設定する必要がある場合もあります。

サブステップコリジョン最大反復回数を増やすと、nucleus ソルバはシミュレートされる各ステップでより多くの計算を実行することになるため、結果としてシミュレーション速度が遅くなります。シミュレーションの精度とパフォーマンスのバランスをとるために、より高いサブステップコリジョン最大反復回数が必要なシミュレーションの特定の領域やフレームを特定するのに役立ちます。 キーフレームを設定して、シミュレーションの存続中にサブステップコリジョン最大反復回数の値をアニメートできます。

サブステップコリジョン最大反復回数にキーフレームを設定するには

  1. タイムライン(Timeline)で、フレーム 1000 に進みます。
  2. アトリビュート エディタ(Attribute Editor)で、nucleus1 タブを選択します。
  3. ソルバ アトリビュート(Solver Attributes)セクションで、以下を実行します。
    • サブステップ(Substeps)を 5 に設定します。
    • サブステップ アトリビュート フィールドをクリックして、表示される状況に応じたメニューからキーの設定(Set Key)を選択します。

    • コリジョン最大反復回数(Max Collision Iterations)を 6 に設定します。
    • コリジョン最大反復回数 アトリビュート フィールドをクリックして、表示される状況に応じたメニューからキーの設定を選択します。
  4. 次の表の値を使用して、シミュレーションでのキーフレームの設定を続けます。
    フレーム(Frame) サブステップ(Substeps) コリジョン最大反復回数(Max Collision Iterations)
    1019 5 6
    1020 7 8
    1022 9 12
    1025 15 20
    1060 9 12
  5. シミュレーションをキャッシュしてから再生します。

nCloth アトリビュートを微調整する

キャッシュを再生すると、シミュレーションの全体的な精度が改良されていることがわかります。ただし、問題領域はまだ確認でき、特にウエストと股部分で目立っています。たとえば、フレーム 1030 では、股領域の質の悪いセルフ コリジョンの結果、望ましくないポリゴン デフォメーションが作成されています。シミュレーションの精度を向上させるために、ダイナミック プロパティ(Dynamic Properties)アトリビュートの微調整を開始できます。

ダイナミック プロパティ アトリビュートなどの nCloth アトリビュートを細かく調整する場合は、シミュレーションのさまざまなフレームで nCloth メッシュの複製を作成しておくと役立ちます。シミュレーションを再生するときに、現在シミュレート中の nCloth を複製メッシュと比較して、次の項目について評価できます。

股領域の問題を解決するために、ベンドの抵抗(Bend Resistance)を大きくしてポリゴンのエッジが形状をより良く保持できるようします。詳細については、 ベンドの抵抗(Bend Resistance)を参照してください。

複製メッシュを作成してベンドの抵抗を編集するには

  1. タイムライン(Timeline)で、フレーム 1030 に進みます。
  2. シーン ビューで、nCloth ズボンを選択して編集 > 複製(Edit > Duplicate)を選択します。
  3. アウトライナ(Outliner)で Pants_LowRes1 を選択し、シーン ビューでメッシュ オブジェクトをキャラクタの右に移動します。

  4. アトリビュート エディタで、nCloth_PantsShape タブをクリックします。
  5. ダイナミック プロパティ(Dynamic Properties)セクションで、ベンドの抵抗(Bend Resistance)を 5 に設定します。

  6. シミュレーションをキャッシュしてから再生します。

シミュレーションを再生すると、股領域のクロスがよりリアルにカーブしているのがわかります。タイムラインでフレーム 1030 に進み、シミュレートされた nCloth を複製メッシュと比較します。シーンをドリーおよびタンブルして問題領域に接近して観察できるようにします。

精度設定を編集して相互貫通を解決する

シミュレーションを再生して問題領域を複製メッシュと比較すると、フレーム 1030 と 1035 の間にまだ問題領域が残っていることがわかります。

シミュレーション精度を向上させるもう 1 つの方法として、セルフ コリジョン フラグ(Self Collision Flag)精度設定(Quality Settings)アトリビュートの編集があります。これはnCloth コンポーネントのコリジョンとセルフ コリジョンに作用します。デフォルトでは、セルフ コリジョン フラグ(Self Collision Flag)頂点フェース(VertexFace)に設定されています。つまり nCloth オブジェクトの頂点とフェースが互いに衝突します。セルフ コリジョン フラグ完全なサーフェス(Full Surface)に設定すると、すべてのオブジェクト コンポーネント(頂点、エッジ、フェース)がセルフ コリジョンの対象として設定されます。低解像度メッシュをシミュレートする場合は、メッシュの頂点、エッジ、およびフェースの数が少ないため、nCloth オブジェクトの潜在的なセルフ コリジョン領域の数を増やすことが重要です。高解像度の nCloth メッシュでセルフ コリジョン フラグ完全なサーフェスに設定すると、シミュレーション時間が長くなります。この問題は低解像度メッシュでは軽減されるため、反復シミュレーション テストではこの代替が非常に有用です。詳細については、 コリジョン(Collisions)を参照してください。

セルフ コリジョン フラグ アトリビュートを編集するには

  1. タイムラインで、フレーム 1033 に進みます。
  2. シーン ビューで、nCloth ズボンを選択して編集 > 複製(Edit > Duplicate)を選択します。
  3. アウトライナ(Outliner)で Pants_LowRes2 を選択し、シーン ビューでメッシュ オブジェクトをキャラクタの左に移動します。

  4. アトリビュート エディタ(Attribute Editor)で、nCloth_PantsShape タブをクリックします。
  5. コリジョン(Collisions)セクションで、セルフ コリジョン フラグ(Self Collision Flag)完全なサーフェス(Full Surface)に設定します。

セルフ コリジョン(Self Collision)アトリビュートの初期の微調整後に、精度設定(Quality Settings)を編集してシミュレーションのコリジョンとセルフ コリジョンを改良します。これにより、nCloth のズボン オブジェクトと nRigid の靴との間の残りの相互貫通が解決します。また、厚み(Thickness)を増やすか、厚みマップ(Thickness Map)を作成してコリジョン検出を改良することもできます。

精度設定(Quality Settings)を編集するには

  1. アトリビュート エディタ(Attribute Editor)で、nCloth_PantsShape タブを選択します。
  2. 精度設定セクションで、次の操作を実行します。
    • 最大反復回数(Max Iterations)が 10000 に設定されていることを確認します。
    • トラップ チェック(Trapped Check)をオンにします。
    • 自己トラップのチェック(Self Trapped Check)をオンにします。

  3. シミュレーションをキャッシュしてから再生します。

タイムラインで、フレーム 1033 に進み、シミュレートされた nCloth を複製メッシュと比較します。タイムラインをスクラブしながらシーンをドリーおよびタンブルし、問題領域に接近して観察できるようにします。

ラップされた nCloth シミュレーションをシミュレートされた高解像度メッシュと比較する

nCloth ズボン オブジェクトのアトリビュート調整を完了するには、ラップされた nCloth シミュレーションをリファレンス キャラクタ オブジェクト(オリジナルのシミュレートされた高解像度メッシュ)と比較します。

低解像度と高解像度の nCloth メッシュを比較するには

  1. アウトライナ(Outliner)で Pants_LowRes オブジェクトを選択して非表示にし、それからディスプレイ > 非表示 > 選択項目の非表示(Display > Hide > Hide Selection)を選択します。
  2. アウトライナ(Outliner)で Pants_HighRes オブジェクトを選択してこれを表示し、それからディスプレイ > 表示 > 選択項目の表示(Display > Show >Show Selection)を選択します。
  3. ディスプレイ レイヤ エディタ(Display Layer Editor)を使用して可視(Visible)をオンにし、シーン ビューに Reference_Character オブジェクトを表示します。
  4. タイムラインをスクラブしてアニメーションで nCloth メッシュの動作を比較します。シーンをドリーおよびタンブルし、問題領域に接近して観察できるようにします。

観察

シミュレーションを再生またはスクラブすると、次のことを確認できます。

nCloth ズボンの脚をフォースして、リファレンス キャラクタ オブジェクトのズボンの脚と同じ方法でシミュレートするには、摩擦(Friction)アトリビュートを調整します。