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

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

レッスンのセットアップ

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

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

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

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

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

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

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

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

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

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

    アトリビュート エディタ(Attribute Editor)にラップ ノードが表示され、アウトライナ(Outliner)ではPants_LowResBase オブジェクトが Character_LowRes グループに追加されるのを確認できます。

    注:必要に応じて Character_LowRes を展開し、アウトライナ(Outliner) Pant_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 オブジェクトの影響を受けます。

Pants_LowResBase オブジェクトは Pants_HighRes オブジェクトのデフォメーションに対するベースのシェイプで、これがラップ インフルエンス オブジェクトです。すべてのラップ デフォーマと同様に、ベースのシェイプとラップ インフルエンス オブジェクト間の位置、方向、またはシェイプの差に基づいて、ラップ デフォーマによるインフルエンスを受けているサーフェスが変形します。

アニメートされたキャラクタの nCloth ズボンをシミュレートする

このセクションでは、nRigid の胴体オブジェクトと nRigid の靴オブジェクトに対するジオメトリ キャッシュをインポートし、胴体と靴をアニメートしながら nCloth ズボン オブジェクトのシミュレートを開始します。

レッスンのセットアップ

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

  1. アウトライナ(Outliner)で Pants_HighRes オブジェクトを選択して非表示にし、それからディスプレイ > 非表示 > 選択項目の非表示(Display > Hide > Hide Selection)を選択します。
  2. アウトライナ(Outliner)Pants_LowRes オブジェクトを選択して表示し、それからディスプレイ > 表示 > 選択項目の表示(Display > Show >Show Selection)を選択します。
  3. nCloth AdvancedTechniques ディレクトリを Maya プロジェクトとして設定します(まだ設定していない場合)。

ジオメトリ キャッシュをインポートする

アニメートされたキャラクタ上で nCloth ズボンをシミュレートする前に、キャラクタの胴体と靴をアニメートするジオメトリ キャッシュをインポートする必要があります。

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

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

シミュレーションを再生し、アニメートされたキャラクタと一緒にシミュレートされたときの nCloth ズボンの動作を確認できます。ただし、タイム スライダ(Time Slider)をスクラブできないとシミュレーションを詳細に検査することは困難です。シミュレーションの問題をより簡単に特定するには、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 ズボン オブジェクトに次の問題があることがわかります。

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

サブステップ(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 を置き換えるか、新規 nCache を作成する必要があります。そうしないと、変更内容がシミュレーションに表示されません。

    キャッシュ ファイルを置き換えると、既存の nCache は新規ファイルで上書きされます。レッスンではシミュレーションを何度もキャッシュするため、キャッシュの置き換え(Replace Cache)を使用してハード ディスクに保存されるキャッシュ ファイルの数を少なくするのが最適です。前の nCache を置き換えるには、 nCache > キャッシュの置き換え(nCache > Replace Cache)を選択します。

  4. キャッシュの作成の警告(Create Cache Warning)が表示されたら、既存の置き換え(Replace Existing)をクリックします。
  5. シミュレーションを再生します。

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

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

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

  1. タイム スライダ(Time Slider)で、フレーム 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. シミュレーションをキャッシュ( nCache > キャッシュの置き換え(nCache > Replace Cache))してから再生します。

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

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

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

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

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

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

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

  6. シミュレーションをキャッシュして( nCache > キャッシュの置き換え(nCache > Replace Cache))、再生します。

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

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

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

シミュレーション精度を向上させるもう 1 つの方法として、セルフ コリジョン フラグ(Self Collision Flag)精度設定(Quality Settings)アトリビュートの編集があります。これは nCloth コンポーネントのコリジョンとセルフ コリジョンに作用します。デフォルトでは、セルフ コリジョン フラグ(Self Collision Flag)頂点フェース(VertexFace)に設定されています。つまり nCloth オブジェクトの頂点とフェースが互いに衝突します。セルフ コリジョン フラグ完全なサーフェス(Full Surface)に設定すると、すべてのオブジェクト コンポーネント(頂点、エッジ、フェース)がセルフ コリジョンの対象として設定されます。

低解像度メッシュをシミュレートする場合は、メッシュの頂点、エッジ、およびフェースの数が少ないため、nCloth オブジェクトの潜在的なセルフ コリジョン領域の数を増やすことが重要です。高解像度の nCloth メッシュでセルフ コリジョン フラグ完全なサーフェスに設定すると、シミュレーション時間が長くなります。この問題は低解像度メッシュでは軽減されるため、反復シミュレーション テストではこの代替が非常に有用です。詳細については、 コリジョン(Collisions)を参照してください。

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

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

  4. シーン ビューでオリジナルの nCloth ズボン オブジェクトを選択し、アトリビュート エディタ(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. シミュレーションをキャッシュしてから再生します。

タイム スライダ(Time Slider)で、フレーム 1033 に進み、シミュレートされた nCloth を複製メッシュと比較します。タイムラインをスクラブしながらシーンをドリー、タンブルし、問題領域に接近して観察できるようにします。満足な結果が得られたら、Pants_LowRes1Pants_LowRes2 の複製メッシュを削除します。

ラップされた 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. アウトライナ(Outliner)で Reference_Shirt オブジェクトを選択して非表示にし、それからディスプレイ > 非表示 > 選択項目の非表示(Display > Hide > Hide Selection)を選択します。
  5. シェーディング(Shading)メニューで、ワイヤフレーム付きシェード(Wireframe on Shaded)をオンにします。
  6. タイム スライダ(Time Slider)をスクラブして、アニメーションでの nCloth メッシュの動作を比較します。タイムラインをスクラブしながらシーンをドリーおよびタンブルし、問題領域に接近して観察できるようにします。
    注:シミュレーションを再生またはスクラブしたときにシーン ビューで Reference_Character がアニメートされない場合は、必要に応じてリファレンス キャラクタのキャッシュをその個々のオブジェクトに再コネクトしてください。詳細については、 既存のキャッシュにオブジェクトを再コネクトするを参照してください。

既存のキャッシュにオブジェクトを再コネクトする

  1. アウトライナ(Outliner)で、キャッシュを再コネクトするオブジェクトを選択します。
  2. アトリビュート エディタ(Attribute Editor)で、オブジェクトのキャッシュ ノードを選択します。

    たとえば、キャラクタの胴体のキャッシュを再コネクトする場合は、Body_AnimationCache1 タブを選択します。

  3. キャッシュ ファイル(Cache File)セクションで アイコンをクリックして、ベース ディレクトリ(Base Directory)AdvancedTechniques プロジェクトの data フォルダに設定されていることを確認します。
  4. フォルダの参照(Browse for Folder) ウィンドウで、OK をクリックします。

観察

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

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