Cloth モディファイヤ

[布地](Cloth)モディファイヤは、Cloth システムの中核であり、Cloth シミュレーションに含める必要のあるシーン内のオブジェクトすべてに適用されます。このモディファイヤで、布および衝突オブジェクトの定義、プロパティの割り当て、シミュレーションの実行を行います。その他にも、コンストレイントの作成、布の対話的なドラッグ、シミュレーションの一部の消去などの制御機能が含まれます。

左: [布地](Cloth)モディファイヤが適用される前

右: [布地](Cloth)モディファイヤが適用され、シミュレーションが実行された後

基本概念

布地のシミュレーションでは、どのオブジェクトがシミュレーションに含まれ、どのオブジェクトがシミュレーションに含まれないかを布地に指示します。その後で、オブジェクトの素材を定義します。どのオブジェクトが布で構成され、どのオブジェクトがソリッドな衝突オブジェクトであるかを指定できます。

布地はモディファイヤであるため、そのインスタンスは布地のシミュレーションに含められる各オブジェクトに割り当てられます。これには、すべての布オブジェクトおよび衝突オブジェクトが含まれます。[布地](Cloth)モディファイヤの異なる 2 つのアプリケーションで使用される 2 つの布オブジェクトは、互いにやりとりをしないことに留意してください。オブジェクトをシミュレーションに含めるには、次の 2 つの方法があります。

測定単位

重要: 以下の情報は、[布地](Cloth)モディファイヤの適用後にシステム単位を変更する場合にのみ必要です。[布地](Cloth)を適用する前にシステム単位を変更した場合、[cm/単位](cm/unit)の設定は自動的に調整されます。

衣服のシミュレーションを行う場合、サイズを考慮することは重要です。非常に大きな旗とハンカチとでは、動作が異なります。スケールがオフの場合、シミュレーションはオフになります。布地は現実世界の物理現象をシミュレートするため、現実世界の単位で動作します。これは、布地が、3ds Max の単位と独自世界の単位との関係を理解する必要があることを意味します。

例として、10 x 10 の 3ds Max 単位の平面を作成する場合を考えましょう。 この平面を 10 インチ x 10 インチのハンカチとして動作させる場合、1 3ds Max 単位 = 1 インチであることを布地に通知する必要があります。 この平面を 10 フィート x 10 フィートのベッド シーツとして動作させる場合は、1 3ds Max 単位 = 1 フィートであることを布地に通知します。

このセクションの冒頭で述べた場合を除き、布地は 3ds Max システム単位設定([カスタマイズ](Customize)メニュー [単位設定](Units Setup) [システム単位設定](System Units Setup))を無視します。 布地が保持する独自の単位設定は、布地の[シミュレーション パラメータ](Simulation Parameters)ロールアウトの[cm/単位](cm/unit)パラメータで設定します。これは、各 3ds Max 単位に対応する長さをセンチメートル(cm)で布地に伝達します。 1 インチは 2.54 cm です。このため既定値の 2.54 は 1 3ds Max 単位が 1 インチに相当することを意味します。

使用する設定値を決定する手順について、以下に説明します。

  1. 計測ユーティリティまたはテープ ヘルパーを使って、使用する布(またはキャラクタ)の寸法を 3ds Max 単位で計測します(この数値を x と呼びます)。
  2. このオブジェクトを現実世界でどの程度の大きさにするかを決定し、この数値を cm に変換します。寸法がインチになっている場合は、単に 2.54 を掛けてください(この数値を y とします)。
  3. cm/単位 = y/x を計算します。

以下に簡単な例を示します。man.obj ファイルを 3ds Max に読み込み、それにシャツを着せます。

  1. [計測](Measure)ユーティリティを使用すると、この男性が 170 3ds Max 単位の高さであることがわかります。 このため、y = 170 になります。
  2. この男性の身長を、約 6 フィートに決めます。
    • 6 フィート = 72 インチです。
    • 72 インチ = 72 x 2.54 = 182.88 cm になります。この結果、x = 182.88 です。
  3. これで、シャツが正しく動作する値がわかりました。[cm/単位](Cm/unit) = y/x = 170/182.88 = 0.929 です。ここではピンポイントの精度は必要ないため、値を切り上げて編集ボックスを 1.0 に設定してもかまいません。

布地の動作

Cloth では、さまざまな方法で布地の動作を設定できます。布の動作を皮革、絹、黄麻、およびこれらの中間にある任意の素材に設定できます。

シミュレーション

すべてのパラメータの設定が完了したら、次の段階はシミュレーションの実行です。多くの場合、最初にローカルのシミュレーションを実行して、布地をキャラクタに適合させます。布地が所定の位置に配置されたら、時間の経過に合わせてシミュレーションを実行できます。

Cloth では、非常に自由な形式でシミュレーションを実行できます。シミュレーションには、多くの変更や編集を加えることができます。これは、クリックするだけで後は「最善の結果になることを期待する」ようなシナリオとは異なり、多くの作業がユーザの手に委ねられることを意味します。

コンストレイント

布地にさまざまな方法で制限を加えて、異なる布地の効果をシミュレーションで作成できます。布地を使って制限を加えると、空中をはためく布に特別な抵抗力を加えたり、シーン内のスペース ワープの影響を布に及ぼしたりできます。布地の一部をアニメートするオブジェクトにリンクしたり、サーフェスにアタッチするのも、一般的なコンストレイントです。パンツを作成する場合、パンツの最上部の動きをキャラクタの腰に制限したり、カーテンの動きをカーテンレールに制限したりできます。コンストレイントは、布地の非常に重要で堅牢な部分です。布地では、制限を加えられた複数の頂点グループに非常に大きな柔軟性を持たせることができます。衣服のさまざまな部分を、それぞれ異なるノードのサーフェスまたはその他の布オブジェクトに制限できます。

モディファイヤのグループ サブオブジェクト レベルで、布地内にコンストレイントを作成します。このレベルでは、選択したすべてのオブジェクト(布と衝突の両方)の頂点を表示できます。次に、これらを選択して、グループ内に配置します。グループの定義が完了したら、次に選択セットを別のオブジェクトにアタッチ(制限)したり、外部フォースの影響を受けるようにできます。

布を裂く

布を裂くことができます。手順の一例については、こちらの手順を参照してください。

布は、次のような状況においてシミュレーションの過程で裂かれます。

  • 布に影響を与えているフォースに引っ張られることによって裂かれる場合。

    [強度](Strength)または[裂けしきい値](Tear Threshold)の値(同じです)によって、布がどれほど簡単に裂けるかを設定できます。

  • 布が[布を切断](Cuts Cloth)に設定されている衝突オブジェクトと衝突する場合。「衝突プロパティ」を参照してください。

シミュレーションを実行する前に、布が裂ける場所を指定する必要があります。その方法はいくつかあります。

布の引き裂きと[ポイント キャッシュ](Point Cache)モディファイヤ

[ポイント キャッシュ](Point Cache)モディファイヤを使用して Cloth のアニメーションを最適化する場合は、裂ける前に前に裂け目が正しくスムージングされない可能性があります。この問題を修正するには、Welder モディファイヤをスタックに追加します。[連結化](Welder)を[ポイント キャッシュ](Point Cache)モディファイヤの上に配置します。

手順

例: [シェイプを保持](Keep Shape)オプションを使用するには:

    布オブジェクトが 3D シェイプであり、シミュレーション時にその状態を維持する場合、[シェイプを保持](Keep Shape)オプションおよび設定を使って、このシェイプを保存したり反転したりできます。ここでは、[シェイプを保持](Keep Shape)の単純な使用例を示します。

  1. トップ ビューポートまたはパース ビューポートで、90 x 90 単位、20 x 20 セグメントの平面プリミティブ オブジェクトを作成します。
  2. [ベンド](Bend)モディファイヤを適用し、[角度](Angle)を 250.0 に、[ベンド軸](Bend Axis)を X に設定します。

    これにより、初期状態のチューブ状シェイプが生成されます。

  3. ベンド平面を 2 度コピーして、3 つの平面を 1 列に並べます。平面の名前を、次のように変更します。
    • don't keep shape
    • keep shape
    • reverse shape
  4. 3 つの平面をすべて 選択して、[布地](Cloth)モディファイヤを適用します。
  5. [シミュレーション パラメータ](Simulation Parameters)ロールアウトで、[重力](Gravity)をオフにし、[cm/単位](cm/unit)を 0.5 に設定します。

    [重力](Gravity)をオフにすると、布オブジェクトがシミュレーション時に落下することを防いで、視界にとどめておくことができます。また、[cm/単位](cm/unit)の設定により、比較的大きな平面サイズも補正できます。

  6. [オブジェクト](Object)ロールアウトで、[オブジェクト プロパティ](Object Properties)をクリックします。

    [オブジェクト プロパティ](Object Properties)ダイアログ ボックスが表示されます。

  7. [シミュレーションにあるオブジェクト](Objects In Simulation)リストで、3 つの平面すべてを(ドラッグして)ハイライト表示し、[布地 プロパティ](Cloth Properties)領域で[布地](Cloth)を選択します。また、[U ベンド](U Bend)を 500.0 に設定します。

    これにより、[V ベンド](V Bend)も自動的に 500.0 に設定されます。

    ベンドに大きな値を使用すると、シミュレーションが高速に処理されます。

    次に、オブジェクトごとに異なる[シェイプを保持](Keep Shape)プロパティを設定します。

  8. リスト内の reverse shape オブジェクトをハイライト表示し、[ベンド %](Bend %)の値を -100.0 に設定します。
    注: 既定値は 100.0 です。
  9. [OK]をクリックして、ダイアログ ボックスを終了します。
  10. don't keep shape を選択し、[オブジェクト](Object)ロールアウト [選択したオブジェクト操作](Selected Objects Manip)領域 [ターゲットの状態を使用](Use Target State)をオフにします。
  11. reverse shape オブジェクトと keep shape オブジェクトを 選択し(don't keep shape オブジェクトは選択しない)、[ターゲットの状態を使用](Use Target State)をオンにします。
  12. [オブジェクト](Object)ロールアウトで、[ローカル シミュレーション](Simulate Local)をクリックします。

    数秒後に、don't keep shape オブジェクトは平らになり始め、keep shape オブジェクトには変化がなく、reverse shape オブジェクトはシェイプが反転して、ベンド角度が負になります。

    ヒント: また、[ターゲットの状態を使用](Use Target State)をオンして[状態を確保](Grab State)を使用することで、前の布地シミュレーションまたはシェイプ変更モディファイヤで作成したシェイプを維持したり、反転させたりすることもできます。

例: 一枚の布を裂く:

  1. トップ ビューポートで、 平面を作成します。各辺を約 150 単位にしてください。[長さセグメント](Length Segments)と[幅セグメント](Width Segments)をいずれも 7 に設定します。
  2. トップ ビューポートで、平面の両側にダミー オブジェクトを 1 つずつ 作成します。

    2 つのダミー オブジェクトを平面に配置

  3. をオンにします。フレーム 100 に移動し、左側のダミーを左へ、右側のダミーを右側へ、それぞれ X 軸に沿って 300 単位だけ平面から離します。
  4. をオフにします。
  5. フレーム 0 に戻ります。
  6. 平面を 選択します。 [修正](Modify)パネルに移動して、平面に[布地](Cloth)モディファイヤを適用します。
  7. [オブジェクト](Object)ロールアウトで、[オブジェクト プロパティ](Object Properties)をクリックします。3ds Max は布地の[オブジェクト プロパティ](Object Properties)ダイアログ ボックスを開きます。 オブジェクトのリストで[Plane01]をクリックしてハイライト表示し、[布地](Cloth)ラジオ ボタンを選択して[Plane01]を布地として動作させ、[OK]をクリックします([布地 プロパティ](Cloth Propert)はすべて既定値の設定のままにしておきます)。
  8. モディファイヤ スタック内で、[グループ](Group)サブオブジェクト レベルに移動します。
  9. 平面の左側の頂点を 選択していき、[グループ](Group)ロールアウトで[グループを作成](Make Group)をクリックします。[OK]をクリックして既定値の名前 Group01 を受け入れます。[グループ](Group)リストで[Group01]がハイライトされた状態のままで[ノード](Node)をクリックし、ビューポートで左側にあるダミー オブジェクトをクリックして、このオブジェクトをグループに割り当てます。
  10. 右側の頂点の列と右側のダミー オブジェクトについても手順 9 を繰り返します。
  11. 平面の中央にある 2 列の頂点を 選択していき、[グループ](Group)ロールアウトで[裂け目を作成](Make Tear)をクリックします。[OK]をクリックして既定の名前を受け入れます。

    布地の裂け目を作成するために選択された中央の頂点

    3ds Maxで布地の平面の中央にある頂点で構成された新しい連結コンストレイントが作成されます。

    [裂け目を作成](Make Tear)をクリックした後

  12. モディファイヤ スタックで、[布地](Cloth)をクリックしてトップ レベルに戻ります。
  13. [オブジェクト](Object)ロールアウト [シミュレーション](Simulation)領域で、[シミュレート](Simulate)をクリックします。

    3ds Max によって布地を引っ張るダミーがアニメートされます。 このとき、裂け目として設定した頂点に沿って布地が裂けます。

    両端が引っ張られて中央で裂けた布地

    ダミー オブジェクトの位置によっては、実際に表示される裂け目はこの図と異なる場合があります。

ネットワーク上のレンダリング ファームを使用して布のシミュレーションを実行するには:

    複雑な布のシミュレーションには、大量の計算および長い時間が必要になる場合があります。布地には、ネットワーク上のマシン(レンダリング ファームの一部)でシミュレーションを簡単に実行可能にするコマンドが含まれています。これらのコマンドを使って自分のマシンの処理能力を確保し、シーンの別の部分の作業を行うことができます。

  1. シミュレーションの設定を行います。
  2. シミュレーション内の布オブジェクトごとに、そのオブジェクトを 選択して、[選択されたオブジェクト](Selected Object)ロールアウトで[設定](Set)をクリックし、キャッシュ用のパスおよびファイル名を指定します。

    最良の結果を得るために、マッピングされたドライブを指定し、[フォース UNC パス](Force UNC Path)をオンにします。これにより、ユニバーサル命名規則を使ってパスが指定され、ネットワーク上のすべてのコンピュータから検出できるようになります。また、すべてのキャッシュ ファイルを同じディレクトリ内に格納するのも良い方法です。

  3. [シミュレーション](Simulation)ロールアウトで、[レンダリング時のシミュレーション](Sim On Render)をオンにします。
  4. シーン ファイルを 保存します。
  5. [レンダリング設定](Render Setup)ダイアログ ボックスを開きます。
  6. [レンダリング設定](Render Setup)ダイアログ ボックス[ターゲット](Target)ドロップダウン リストから、[ネットワーク レンダリングにサブミット](Submit To Network Rendering)を選択します。
  7. 3ds Max の[ネットワーク ジョブの割り当て](Network Job Assignment)ダイアログ ボックスが開きます。ジョブを単一のサーバにサブミットします。

    レンダリングとは異なり、ネットワークでの布地のシミュレーションを、複数のサーバ マシン間で分割することはできません。

    注: キャッシュの作成をトリガーするために、アニメーション全体をレンダリングする必要はありません。1 つのフレームだけで十分です。

    サーバ マシンがレンダリングを始めると、すぐにシミュレーションの計算が開始されて、ディスクに保存されます。任意の時点で[ロード](Load)ボタンをクリックすることで、現状のシミュレーションをキャッシュ ファイルからロードして、進捗状況を確認できます。