MassFX mCloth を使用する

MassFX リジット ボディの経験を積んだところで、mCloth を試してみましょう。mCloth は、MassFX シミュレーションで動作する標準 Cloth モディファイヤです。ダイナミック mCloth オブジェクトは、シミュレーションで布地オブジェクトやリジット ボディなどの他のオブジェクトと相互に影響し合うようにできます。

このレッスンでは、風に揺れる窓辺のカーテンという簡単なセットアップを作成します。カーテンがそよ風にはためき、窓の下枠にある瓶を倒します。また、適切にシミュレーションされるようにリジット ボディを設定する方法についても説明します。

この演習では、MassFX におけるリジット ボディと mCloth の使用について、次の項目を中心に学習します。

スキル レベル: 初級から中級

所要時間: 30 分

このチュートリアルの準備

レッスンの準備:

瓶の設定を行います。

    フロント ビューポートまたはレフト ビューポートでよく見ると、瓶がテーブルのサーフェスに直接乗っておらず、わずかに浮いていることが分かります。

    物理シミュレーションでは、シミュレーション エンジンがダイナミック オブジェクトに使用する物理的シェイプは一般に、3ds Max がオブジェクトのレンダリングに使用するグラフィカル メッシュと同一ではありません。概して物理的シェイプはシンプルです。シミュレーション エンジンの負荷を減らしつつ、シミュレーションでオブジェクトの存在を示すには、通常は物理的シェイプで十分です。

    しかし、シェイプが一致しないことで、オブジェクトを別のオブジェクト上に目測で直接配置するのが難しくなる場合があります。これを容易にするために、MassFX はキャプチャ変換機能を備えています。この機能を使用するには、まず、最終シミュレーションの開始時にオブジェクトが乗るべきサーフェスの上方にオブジェクトを配置します。次に、オブジェクトが落下して所定の位置に収まるように、テスト シミュレーションを実行します。オブジェクトが所定の位置に置かれたら、シミュレーションをリセットせずに停止し、オブジェクトに対してキャプチャ変換を使用します。すると、シミュレーションをリセットしても、オブジェクトは所定の位置に留まります。

  1. 必要に応じて、[MassFX]ツールバーを開き、瓶をダイナミック リジット ボディとして設定し、テーブル面を静止リジット ボディとして設定します。
    注: 方法が分からない場合は、先に「MassFX によるリジット ボディ物理的要素」のレッスンを受けてください。本レッスンは、このレッスンで学習した知識をベースにしています。
  2. [MassFX]ツールバーで、 をクリックしてシミュレーションを開始します。

    瓶がテーブル面に落下し始めますが、倒れてしまいます。これは望ましい動作ではありません。

    原因を特定して修正します。

  3. [MassFX]ツールバーで、 をクリックしてシミュレーションをリセットします。そして、フロント ビューポートまたはレフト ビューポートで瓶の底を見直します。

    底は平らで、テーブル面と平行になっています。したがって、グラフィカル メッシュに問題はありません。そのため、問題はおそらく物理的シェイプにあります。とはいえ、物理的シェイプはグラフィカル メッシュと同じ場所にあるため、これを調べるのは容易ではありません。しかし、この 2 つを分離して物理的シェイプがよく見えるようにすることは簡単です。

  4. 瓶を選択して右クリックし、[選択以外を非表示](Hide Unselected)を選択します。

    テーブル面が非表示になります。

  5. モディファイヤ スタックの上部で、[MassFX リジット ボディ](MassFX Rigid Body)エントリを展開し、[メッシュ変換](Mesh Transform)項目をクリックします。
  6. グラフィカル メッシュから物理的シェイプを離し、物理的シェイプの底を調べながらビューポートをオービットします。

    左: グラフィカル メッシュ

    .

    右: 凸型物理的シェイプ

    明らかに物理的シェイプの底がでこぼこしています。これが原因で、テーブル面で瓶が不安定になっています。これは、物理的シェイプが、使用する頂点が非常に少ないグラフィカル メッシュの「ベスト フィット」の近似であるために起こります。[物理的メッシュ パラメータ](Physical Mesh Parameters)ロールアウトのコントロールを使用したサーフェスの代わりに、物理的シェイプの頂点の数を増やして、グラフィカル メッシュの頂点から生成することもできます。しかし、これでは物理的シェイプが持つ単純化という効果がなくなってしまいます。より簡単で効率的な方法は、[カスタム シェイプ](Custom Shape)オプションを使用することです。

  7. 移動した物理的シェイプを元に戻して、またグラフィカル メッシュと同じ場所になるようにし、モディファイヤ スタックの[MassFX リジット ボディ](MassFX Rigid Body)項目をクリックします。
  8. アクティブなビューポートを右クリックし、[すべて表示](Unhide All)を選択します。
  9. [物理的シェイプ](Physical Shapes)ロールアウトで、[カスタム シェイプに変換](Convert To Custom Shape)をクリックします。

    これにより、[シェイプ タイプ](Shape Type)設定が[カスタム](Custom)に変更され、瓶と同じ名前を持つ新しい編集可能メッシュ オブジェクトが作成されて、オリジナルの瓶の上に重ねて配置されます。この新しいオブジェクトは、[凸型](Convex)シェイプ タイプによって作成された物理的シェイプのジオメトリ コピーであり、メッシュのソースと呼ばれます。

    オリジナル オブジェクトに重ねて配置されたメッシュのソース

    メッシュのソースの名前は、[物理的メッシュ パラメータ](Physical Mesh Parameters)ロールアウトに反映されます。今は、[カスタム](Custom)物理的シェイプ タイプのコントロールが示されています。この場合、コントロールはすべてボタンです。

  10. [物理的メッシュ パラメータ](Physical Mesh Parameters)ロールアウトで、[メッシュのソースを選択](Select Mesh Source)をクリックします。

    これにより、編集可能メッシュ オブジェクトが選択されます。このオブジェクトを編集して底を平らにし、メッシュのソースから物理的シェイプを更新します。

  11. [修正](Modify)パネルで、 [頂点](Vertex)サブオブジェクト レベルをアクティブにし、フロント ビューポート領域で、最も下にある頂点を選択します。頂点は 5 つほどあるはずです。
    ヒント: 頂点が見えにくい場合は、ステータス バーの ([分離ツールの切り替え](Isolate Selection Toggle))をオンにします。[分離ツール](Isolate Selection)がアクティブになると、現在選択されているものだけが表示され、他はすべて非表示になります。このオプションを使用したときは、頂点の選択後、[分離ツール](Isolate Selection)をオフにしてください。
  12. トップ ビューポートをアクティブにし、[ジオメトリを編集](Edit Geometry)ロールアウトの下部にある[位置合わせビュー](View Align)をクリックします。

    これにより、選択した頂点が Z 軸方向の平均位置に移動し、すべて同じ高さになります。しかし、これだと瓶の底よりわずかに高くなります。

  13. フロント ビューポートまたはレフト ビューポートで、頂点が瓶の底の高さに合うように垂直に移動させます。これは比較的細かな調整になります。
  14. [頂点](Vertex)サブオブジェクト レベルを終了し、オリジナルの瓶オブジェクトを([MassFX リジット ボディ](MassFX Rigid Body)モディファイヤは適用したままで)選択します。
  15. [物理的メッシュ パラメータ](Physical Mesh Parameters)ロールアウトで、[ソース オブジェクトから更新](Update From Source Object)をクリックします。

    これにより、編集されたカスタム メッシュ ソース オブジェクトの構造が瓶の物理的シェイプにコピーされます。

  16. [物理的メッシュ パラメータ](Physical Mesh Parameters)ロールアウトで、[メッシュのソースを選択](Select Mesh Source)をクリックし、 を押して、メッシュのソースを削除します。もう一度、瓶オブジェクトを選択します。

    差し当たりメッシュのソースは必要なくなりましたが、[物理的メッシュ パラメータ](Physical Mesh Parameters)ロールアウトの[メッシュ オブジェクトを抽出](Extract Mesh Object)機能を使用して、物理的シェイプからまた簡単に取得することができます。

  17. シミュレーションを開始します。

    瓶がひっくり返ることなく床に落ち、まっすぐに立って静止するはずです。

    ヒント: 所定の位置で瓶がはずむなど、安定しなかった場合は、[MassFX]ツールバーの をクリックして[MassFX ツール](MassFX Tools)ダイアログを開き、[ワールド パラメータ](World Parameters)パネルを開きます。[シーン設定](Scene Settings)ロールアウトで、[リジット ボディ](Rigid Bodies) [サブステップ](Substeps)を 2 以上に設定します。
  18. 瓶がフレーム 40 あたりで少しの間安定したら、もう一度[シミュレーションを開始](Start Simulation)をクリックしてシミュレーションを停止します。

    現在の位置でタイム スライダが止まります。

  19. [MassFX ツール](MassFX Tools)ダイアログの [シミュレーション ツール](Simulation Tools)パネルを開き、[シミュレーション](Simulation)ロールアウトで、[キャプチャ変換](Capture Transform)ボタンをクリックします。

    これにより、瓶の最初の変換(シミュレーションの開始位置)が現在の位置に設定されます。

  20. [MassFX]ツールバーで、 をクリックしてシミュレーションをリセットします。

    瓶が静止します。

カーテンの設定を行います。

  1. レフト ビューポートで、高さと幅が瓶の約 2 倍の平面プリミティブを作成します。これがカーテンになります。必要に応じて、トップ ビューポートを使用して、瓶の右側から 1 グリッド四方程度離れるようにカーテンを移動します。また、カーテンのすそは、床より少し高くします。

    左: レフト ビューポート

    .

    右: トップ ビューポート

  2. [修正](Modify)パネルで、[長さ](Length)を 84.0 に設定し、[幅](Width)を 72.0 に設定します。

    これらの設定は、前出の図に示してあります。

  3. [長さセグメント](Length Segs)と[幅セグメント](Width Segs)はどちらも 20 に設定します。

    これにより、メッシュの解像度が高くなり、布地が一層リアルに曲がったり折り重なったりするようになります。

  4. カーテン オブジェクトを選択し、[MassFX]ツールバーの ([選択を mCloth オブジェクトとして設定](Set Selected As mCloth Object))をクリックします。

    これで、平面がシミュレーションで 1 枚の布のように動作します。

  5. シミュレーションを開始し、カーテンが床に衝突する際に折り畳まれることを確認して、シミュレーションをリセットします。

    カーテン マテリアルの動きは、あまり滑らかではありませんでした。

  6. [生地の物理プロパティ](Physical Fabric Properties)ロールアウトで、[オルト ベンドを使用](Use Ortho Bending)をオフにして、再度シミュレーションを実行します。

    今度は布地の動きがもう少し自然になりました。

    ヒント: [生地の物理プロパティ](Physical Fabric Properties)ロールアウトには、これ以外にも布地の動きに影響するさまざまな設定があります。それぞれの設定には説明ツールチップが表示されます。mCloth がどのように機能するか具体的に知りたい場合は、ツールチップに目を通し、設定を変更して、その都度シミュレーションを実行します。試行が済んだら、[オルト ベンドを使用](Use Ortho Bending)以外のすべての設定を既定に戻します。

    次に、カーテン レールを作成し、そこにカーテンをアタッチします。

  7. シミュレーションをリセットします。フロント ビューポートで、カーテンの上に円柱プリミティブを作成します。[半径](Radius)を 1.0 に設定し、[高さ](Height)を 75.0 に設定します。そして、カーテンの上端の真上にくるように円柱を移動します。接触させる必要はありません。
  8. カーテンを選択し、[修正](Modify)パネル モディファイヤ スタックで[mCloth]エントリを展開して、[頂点](Vertex)サブオブジェクト レベルを表示します。[頂点](Vertex)エントリをクリックします。

    [修正](Modify)パネルが変わり、[ソフト選択](Soft Selection)ロールアウトと[グループ](Group)ロールアウトが表示されます。そして、ビューポートにカーテンの頂点が表示されます。

  9. レフト ビューポートで、頂点の最上行を選択します。次に、[グループ](Group)ロールアウトで、[グループを作成](Make Group)をクリックします。[グループを作成](Make Group)ダイアログが表示されたら、[OK]をクリックして続行します。

    メイン画像: 頂点の最上行が選択された、レフト ビューポート内のカーテン

    .

    インセット: [修正](Modify)パネルの[グループ](Group)リスト

    [グループ](Group)ロールアウトのリストには、たった今作成したグループ(Group001)とその未割り当てステータスが表示されています。グループにノード コンストレイントを割り当てます。これにより、シミュレーション時にこれらの頂点がカーテン レールに「くっつく」ようになります。

  10. [グループ](Group)ロールアウト [コンストレイント](Constraint)グループで、[ノード](Node)ボタンをクリックし、ビューポートのカーテン レールを選択します。

    リストの Group001 項目に、ノードとして Cylinder001、つまりカーテン レールにコンストレイントされると表示されます。

    注: カーテン レールをシミュレーションに含める必要はありません。
  11. 再度シミュレーションを実行し、リセットします。

    今度はカーテンが所定の位置に留まります。

[風](Wind)フォースを追加します。

  1. レフト ビューポートの任意の場所に、[風](Wind)スペース ワープを作成します。矢印は、負の X 軸方向に向ける必要があります。つまり、カーテンから瓶に向かうベクトルと同じ方向にします。

    パース ビューポートで選択された[風](Wind)スペース ワープ

    注: スペース ワープの追加方法が分からない場合は、次のステップに従ってください。
    1. [作成](Create)パネルで、 ([スペース ワープ](Space Warps))をクリックします。
    2. [オブジェクト タイプ](Object Type)ロールアウトで、[風](Wind)をクリックします。
    3. レフト ビューポートで、カーテン オブジェクトの右側にマウスを置き、そこからドラッグして、およそ 2 x 2 グリッド四方の正方形を作成します。サイズと位置は、それほど重要ではありません。
  2. カーテンを選択します。[修正](Modify)パネル [フォース](Forces)ロールアウトで、[追加](Add)をクリックし、[風](Wind)スペース ワープを選択します。

    スペース ワープの名前が[シーン フォース適用](Scene Forces Applied)リストに表示されます。

    これで、カーテンがシミュレーションで風の影響を受けるようになります。しかし、他のオブジェクトは影響を受けません。

  3. シミュレーションを実行し、リセットします。

    カーテンは少し動きます。しかし、既定の[強さ](Strength)設定(1.0)の風では、カーテンに大きな影響を与えるには力が足りません。

  4. ビューポートで[風](Wind)スペース ワープを選択します。[修正](Modify)パネル [パラメータ](Parameters)ロールアウトで、[強さ](Strength)を 50.0 に設定します。
  5. 再度シミュレーションを確認します。

    今度はカーテンが瓶に向かって力強くはためくようになりました。しかし、押す力が十分ではないため瓶は動きません。

  6. カーテンを再度選択します。[相互作用](Interaction)ロールアウトで、[リジッド オブジェクトをプッシュ](Push Rigid Objects)がオンになっていることを確認し、[プッシュ](Push)の値を 100.0 に設定します。
  7. シミュレーションを実行してください。

    [プッシュ](Push)の値を増やせば、カーテンがはためいて瓶が倒れるようになります。

    ヒント: [プッシュ](Push)の値を変更する代わりに、瓶の[密度](Density)を調整して、瓶を軽くすることもできます。しかし、ここでは役に立ちません。なぜなら、[密度](Density)に最も低い値(0.01)を設定しても、1.0 の値で押すカーテンでは、瓶を倒すのに十分な強さがないからです。これは、瓶が比較的大きくて重いためです。

    カーテンで一部のアイテムだけ倒し、他のアイテムは倒さないようにする必要がある場合は、一部のアイテムを倒すのに十分な値を[プッシュ](Push)に設定し、重いアイテムの[密度](Density)を増やすことができます。

  8. 試しに、カーテンの[プッシュ](Push)の値は 100 のまま、瓶の[密度](Density)を 0.01 に設定してみます。それには、瓶を選択し、 [修正](Modify)パネルで[物理的マテリアル](Physical Material)ロールアウトに移動して、[密度](Density)の値を調整します。これを最も簡単な方法で行うには、スピナーを右クリックします。

    これでシミュレーションを実行すると、瓶が[風](Wind)スペース ワープの力を直接受けなくても、カーテンによって瓶がはね飛ばされるようになります。

  9. シミュレーションをベイク処理して、アニメーションとしてレンダリングしてもよいでしょう。

    ご覧のとおり、このような簡単なシミュレーションでも、遊ぶことのできる変数がたくさん存在します。さまざまな設定を試し、調整を重ねれば、MassFX と mCloth を使って比較的簡単にリアルなアニメーションやシュールなアニメーションを実現できるようになります。

作業を保存する:

概要

シミュレーションの開始時に、最も効率的にサーフェスにダイナミック リジット ボディを配置するには、キャプチャ変換機能を使用します。

リジット ボディを安定させるため、場合によっては、カスタム シェイプ タイプ ツールを使用して物理的シェイプを微調整する必要があります。

布地オブジェクトをシミュレーションに全面的に参加させ、他のオブジェクトと相互に影響し合うようにできます。また、[風](Wind)などの[フォース](Force)スペース ワープの影響を受けるようにすることもできます。