Houdini 20.5 MPM

MPMのワークフロー

On this page

MPMネットワークは次の4個のコンポーネントで構成します: MPM SourceMPM ColliderMPM ContainerMPM Solver。 その最初の3個のノードをそれぞれMPMソルバに接続すれば良いので、セットアップはとても簡単です。

MPM Source

MPM Sourceは、ジオメトリメッシュまたはボリュームからMPMパーティクルを生成し、シミュレーションで使用するマテリアルタイプを定義します。 Material Preset パラメータは、このノードを配置した時にまず最初に注目すべき重要なパラメータです。 このパラメータには、新しいシミュレーションをセットアップする際にすぐにでも開始できるプリセットマテリアルの選択肢が用意されています。 この選択肢には、次のマテリアルタイプが含まれています: Snow(雪)、Soil(土)、Mud(泥)、Concrete(コンクリート)、Metal(金属)、Jello(ゼリー)、Rubber(ゴム)、Water(水)、Honey(蜂蜜)、Sand(砂)。 マテリアルタイプによってシミュレーションが遅かったり速かったりします。 例えば、コンクリートは雪や水よりもはるかに硬いので、より多くのサブステップが必要で、シミュレーションに時間がかかります。 同じシミュレーション内にソースマテリアルが複数存在する場合、そのサブステップ数は、最も硬いマテリアルによって決まります。

次に設定すべきことは、放出を1回だけそれとも断続的に放出するのかです。 これは、 Emission Type ドロップダウンメニューを使用して Once または Continuous のどちらかに設定します。

MPM Collider

MPM Colliderには3つのタイプのコライダーがあります: Static、Animated(Rigid)、Animated(Deforming)。 また、マテリアルがコライダーに当たった時に跳ね返るのか、それとも、削除されるのか選択することができます。 VDBコライダーのみがサポートされていることに注意してください。 このノードは、メッシュからVDB表現を生成したり、直接VDBを接続することができます。

To...Do this

静的コライダーをセットアップする

Collider Type パラメータを Static に設定します。

これが最も効率が良いので、デフォルトのMPMコライダーになっています。 このコライダーは、シミュレーション中にメモリ内で単一surfaceVDBで表現されます。

トランスフォームコライダーをセットアップする

  1. オブジェクトとMPMコライダーの間にTransform SOPを使用して、いくつかのトランスフォームのキーフレームを追加します。 例えば、 Rotate パラメータのY値に$FF*10エクスプレッションを入力することで、Y軸でコライダーを回転させることができます。

  2. Collider Type パラメータを Animated (Rigid) に設定します。

これは、アニメーションするコライダーに対して最も効率が良く、サブステップ毎にフレーム間でトランスフォームが補間されるので非常に精度が良いです。 このコライダーは、単一surfaceVDBとトランスフォーム行列によって表現されます。 surfaceVDBは決して変更されず、フレーム毎にリジッドトランスフォームのみが更新されます。

変形コライダーをセットアップする

  1. 変形ジオメトリをMPM Colliderノードに接続します。

  2. Collider Type パラメータを Animated (Deforming) に設定します。

このコライダータイプは Animated (Rigid) よりも処理が重いので、実際に変形が行なわれている場合にのみ、これを使用してください。 このコライダーは、surfaceVDBとvelVDBのペアで表現され、フレーム毎にそれらのフィールドを更新する必要があります。 また、これらのフィールドは、より良い結果が得られるようにフレーム間で補間されます。それには、フレーム毎にOpenCL上でそれらのVDBを更新する必要があります。

マテリアルをコライダーに引っ付ける

Material セクションには、 Friction パラメータと Sticky パラメータがあります。 その Sticky パラメータの値を1に上げると、物体が動いた時にコライダーに引っ付くようになります。

このサンプルは、TabメニューからMPM Configure Rolling Snowballサンプルを配置することで確認することができます。

MPM Container

MPM Containerは、MPMシミュレーションの解像度と開始フレームを定義します。 つまり、このMPM Containerは、MPM計算に関係するすべてのMPMノードに接続しなければなりません。 MPM SourceMPM ColliderMPM Solverには、どれもこのノードに接続するための入力が用意されています。 別の手段として、それらのノードの MPM Container パラメータ内に依存関係リンクを使うことでもMPMコンテナに接続することができます。 この方法を採用する場合、ネットワークエディタの View メニューの Dependency Link セクションにある Show for Selected Nodes を有効にすることで、依存関係が視覚的に分かります。

Resolution セクションはシミュレーション全体の解像度を決めるのに使用されるグローバルのパーティクル間隔を設定する場所なので、そのセクション内のパラメータは非常に重要です。 Particle Separation パラメータは、ソースの詳細レベルだけでなくコライダーの詳細レベルまでも設定します。 Grid Scale パラメータは、その Particle Separation に乗算して、バックグラウンドグリッドのボクセル幅dxを定義します。 デフォルト値の2は、平均して1ボクセルあたり8個のパーティクルを詰めます。

必要に応じて、シミュレーションコンテナに境界を追加することができます。 デフォルトでは、コンテナには境界がありませんが、境界を定義することで、マテリアルパーティクルがその境界に接触した時に跳ね返ったり削除されるようにすることができて便利です。 このノードの Boundaries セクションで、その境界を定義することができます。

MPM Solver

MPM Solverは、1番目の入力と2番目の入力のそれぞれに渡されたソースとコライダーに基づいて、シーンを計算する実作業を行ないます。

このノードには2つのタイプのサブステップがあります: Global SubstepsSubsteps Min/MaxGlobal Substeps は、各シミュレーションフレームのDOPサブステップの数です。 パフォーマンス上の理由で、通常ではこれを1のままにすべきですが、断続的に滑らかな放出を実現したいのであれば、この値を増やすと良いでしょう。 Substeps Min/Max は、サブステップの最小数と最大数の制限を設定します。 MPMソルバは、マテリアルのタイプと速度に基づいて、最も低いサブステップ数を動的に選択します。 デフォルトでは最大値が10,000に設定されていますが、必ずしも10,000が使用されるわけではありません。 出力されたジオメトリの実際のサブステップ数はDetailアトリビュートで確認することができます。 そのデフォルト値が高いのは、コンクリートや金属などの硬いマテリアルを考慮しているためです。そのようなマテリアルでは、より多くのサブステップが必要で、処理が遅くなることが予想されます。

必要に応じて、 Forces セクションで重力、空気抵抗、風などのフォースを適用することができます。 摩擦や粘着性を制御する追加パラメータを持った地面を有効にすることもできます。これは、斜面を滑り落ちる雪などのシミュレーションをしたい場合に役に立ちます。

Visualize タブのパラメータでは、コンテナ、コライダー、地面、バックグラウンドグリッドを表示することができます。

MPM Solverの中に入ってカスタムフォースを追加することもできます。 このネットワークは、フレーム毎に1回評価されます。 可能であれば、Gas OpenCLノードを使用した方がホストからOpenCLデバイスに不要なコピーが回避されるので、VEXノードよりもパフォーマンスが向上します。

詳細は、トラブルシューティングのページを参照してください。

MPM

はじめよう

MPM Configureサンプル

次のステップ

上級者