On this page |
紹介 ¶
MPMとは、 M aterial P oint M ethodの略で、FLIP Solverを固体力学に拡張したものです。 これによって、雪、土、泥、コンクリート、金属、ゼリー、ゴム、水、蜂蜜、砂などの複数のマテリアルのシミュレーションが可能です。 このTwo-Way Coupling(双方向連成)によって、同じ環境内でどちらのマテリアルもお互いに影響を与え合うことができます。
この実装は、たいていのマシンに搭載されている強力なGPUを活用するOpenCLがベースになっています。 バックグラウンドグリッドには、デフォルトでSparseのNanoVDBが使用されています。 このバックグラウンドグリッドの再構築は、GPUにはできるだけ多くのメモリを解放するために、CPU上で行なわれます。
MPMは、力学的な粉砕をリアル且つ簡単に行なうことができますが、結局のところすべてをバラバラにすることができます。 MPMは、(すべてがMPMである場合に)マルチフィジックスを使用することができ、塊状/肉厚なマテリアルのシミュレーションが本当に得意です。 MPMはSOPベースのワークフローを使用し、Dive Targeによって(ノードの中に入って)ユーザ定義のフォースを追加することができます。 典型的なノードツリーは、以下のパーツで構成されています。
Note
OpenCLカーネルは、初回でMPMシミュレーションを実行する際にコンパイルが必要になるため、動作が遅くなります。 コンパイル後は、大幅に高速に実行されます。
MPMコンポーネント ¶
MPMシミュレーションに注入されるマテリアルポイントを定義します。
このノードは、ポイントを生成し、MPM Solverに進む前にポイント単位でバリエーションを加えるのに制御可能なマテリアルポイント系アトリビュートを設定します。
入力にはメッシュまたはボリュームが必要で、そのオブジェクトにはそのマテリアルポイント系アトリビュートを含んだパーティクルが充填されます。
たくさんのMPM Sourceノードは、MPM Solverに渡す前にマージすることができます。
シミュレーションで使用されるコライダーを定義します。 VDBコライダーのみがサポートされています。 このノードは、メッシュからVDB表現を生成したり、直接VDBを接続することができます。 3つのタイプのコライダーがサポートされています: Static、Animated(Rigid)、Animated(Deforming)。 たくさんのMPM Colliderノードは、MPM Solverに渡す前にマージすることができます。
MPMシミュレーションの解像度と開始フレームを定義します。
こういった理由で、MPM Containerは、MPM計算に関係するすべてのMPMノードに接続しなければなりません。
MPM Source、
MPM Collider、
MPM Solverには、どれもこのノードに接続するための入力が用意されています。
別の手段として、それらのノードの MPM Container パラメータ内に依存関係リンクを使うことでもMPMコンテナに接続することができます。
この方法を採用する場合、ネットワークエディタの View メニューの Dependency Link セクションにある Show for Selected Nodes を有効にすることで、依存関係が視覚的に分かります。
必要に応じて、シミュレーションコンテナに境界を追加することができます。
デフォルトでは、コンテナには境界がありませんが、境界を定義することで、マテリアルパーティクルがその境界に接触した時に跳ね返ったり削除されるようにすることができて便利です。
1番目の入力と2番目の入力のそれぞれに渡されたソースとコライダーに基づいて、シーンを計算する実作業を行ないます。 マルチフィジックスコンテキスト内でたくさんのマテリアルタイプをシミュレーションすることができます。 MPMとはFLIPを固体力学に拡張したものであり、当初は雪のシミュレーションをするために導入されました。 雪や土のように塊が引っ付いて大きな塊になっていくような弾塑性の“塊状”のマテリアルを計算するのが特に効果的です。 また、水が土やコンクリートの大きな塊を運ぶといった複雑な相互作用をシミュレーションすることもできます。 他にも、サブステップや地面を制御することができます。
詳細は、MPMワークフローを参照してください。
MPMネットワークのレイアウト ¶
Tabメニューから MPM Configure なんちゃらを選択すると、単純なセットアップのサンプルを配置することができます。 1つ目のブランチはMPM Sourceで、シミュレーションするマテリアルを定義します。 2つ目のブランチはMPM Colliderで、コライダーをアニメーションまたは静的にすることができます。 3つ目のブランチはMPM Containerで、シミュレーションの解像度を定義し、マテリアルパーティクルが接触した時に削除または跳ね返すようにできる境界を設定します。
これら3つのコンポーネントすべてをMPM Solverに渡すことで、シーンの計算処理が行なわれます。


必要に応じて、複数のソースまたはコライダーをMPM Solverに渡す前にそれらを1本のストリームにマージすることができます。 以下の例では、土と水が2つの静的ジオメトリと1つのアニメーションジオメトリに衝突している様子を示しています。



Note
コンテナは、すべてのMPM SourceノードとMPM Colliderノードの MPM Container パラメータから参照されていなければなりません。
Operation Chooser ドロップダウンメニューを使用するか、または、ネットワーク内のコンテナノードをそのパラメータフィールドまでドラッグすることで、これを行なうことができます。
別の手段として、コンテナノードを各ノードの2番目の入力に接続することができます。しかし、この方法だとネットワークの見た目がごちゃごちゃしてしまいます。
他にも、色々なマテリアルタイプを使用したもっと複雑なネットワークを作成することができるMPM Configureサンプルがあります。 詳細は、MPM Configureサンプルを参照してください。