On this page | |
Since | 20.5 |
概要 ¶
MPM Solverは、マルチフィジックスコンテキスト内でたくさんのマテリアルタイプをシミュレーションすることができます。
MPMとはFLIPを固体力学に拡張したものであり、当初は雪のシミュレーションをするために導入されました。
雪や土のように塊が引っ付いて大きな塊になっていくような弾塑性の“塊状”のマテリアルを計算するのが特に効果的です。
また、水が土やコンクリートの大きな塊を運ぶといった複雑な相互作用をシミュレーションすることもできます。
異なるマテリアルはMPM Sourceを使用して定義するのに対して、コライダーは
MPM Colliderから取得することを想定しています。
また、ソルバでは、グローバル解像度と開始フレームが
MPM Containerで定義されていることが必須です。
このソルバは、Sparse(疎)バックグラウンドグリッドを使用し、ドメインを指定する必要がありませんが、実際にはドメインが最適化の上で役に立つ場合がよくあります。
このソルバは、たいていのワークステーションで利用できる強力なGPUを活用できるように完全にOpenCLで書かれています。
入力 ¶
MPM Sources
単一ジオメトリとしてマージされたすべてのMPM Sources。
MPM Colliders
単一ジオメトリとしてマージされたすべてのMPM Colliders。
MPM Container
開始フレーム、グローバル解像度、必要に応じてシミュレーションのドメイン境界を定義したMPM Container。
Note
このMPM Containerは、シミュレーションで使用されるすべての
MPM Sourcesと
MPM Collidersから参照または接続されていなければなりません。
パラメータ ¶
Reset Simulation
シミュレーションキャッシュ全体をクリアします。
Solver ¶
Iterations ¶
Time Scale
ソルバで使用されるタイムステップに適用する乗数。
Global Substeps
各シミュレーションフレームのDOPサブステップの数。
パフォーマンス上の理由で、通常ではこれを1
のままにすべきですが、断続的に滑らかな放出を実現したいのであれば、この値を増やすと良いでしょう。
CFL Condition
単一タイムステップ内でパーティクルが移動できるボクセル幅の割合。
Material Condition
シミュレーションするマテリアル特性に基づいて許容される最大タイムステップの乗数。 硬いマテリアルの完全性を維持するには、Impulse(力積)がそのマテリアルを非常に高速に通過する必要があります。 これは、最大許容タイムステップに対して CFL Condition に似た制約を課します。 この値を上げるか、または、シミュレーションするマテリアルの剛性を下げると、この制約が緩和され、シミュレーションを高速化することができます。
Substeps Min/Max
サブステップの最小数と最大数を制限します。
ソルバは、マテリアルのタイプと速度に基づいて、最も低いサブステップ数を動的に選択します。 デフォルトでは最大値が10,000に設定されていますが、必ずしも10,000が使用されるわけではありません。 出力されたジオメトリの実際のサブステップ数はDetailアトリビュートで確認することができます。 そのデフォルト値が高いのは、コンクリートや金属などの硬いマテリアルを考慮しているためです。そのようなマテリアルでは、より多くのサブステップが必要で、処理が遅くなることが予想されます。
Tip
不安定な場面に直面した場合、MPM SolverのDetailアトリビュートを見て、各フレームで実際に計算されているサブステップ数を確認することをお勧めします。
この情報を参考に、最小サブステップ数を上げたり、 CFL / Material Condition を減らすことで、簡単に特定のサプステップ数を下回らないようにすることができる場合が多く、それによって問題が解決することが多いです。
Note
CFL と Material Conditions はどちらとも、許容される最大タイムステップに対してそれぞれ独立した制約を課します。 その最も厳しい制約がその最大タイムステップを駆動し、反対に緩い制約ほど、ほとんど影響を与えません。 つまり、非常に硬いマテリアルをシミュレーションする時(金属やコンクリートなどの Material Condition で制限されている時)、 CFL Condition で必要なサブステップ数に顕著な変更を入れなくても、オブジェクトを比較的高速に動かすことができます。
Forces ¶
Gravity
重力加速度。
Air Drag
マテリアルが風のVelocityに合わせて運ばれるようにするための空気抵抗の度合い。
Wind Velocity
均一な風のVelocity。
Ground Plane ¶
Enable
地面を作成します。
Response
地面がマテリアルと接触した時の挙動を定義します。
Bounce
構成モデルに応じてマテリアルを跳ね返らせたり、停止させます。
Delete
マテリアルポイントを削除します。
Position
地面の空間内の位置。
Up Direction
地面の法線ベクトルまたは向き。
Rotate
地面の法線ベクトルに適用される回転。
Uniform Scale
ビューポート内で無限大の地面表示に適用されるスケール係数。
Friction
マテリアルが地面と接触した時に適用される摩擦量。
Sticky
マテリアルが地面から離れた時であっても、そのマテリアルのVelocityが投影できるようにします。 これによって、そのマテリアルが地面から離れないようになり、摩擦が十分に大きければ、そのマテリアルは粘着っぽくなります。 地面の法線ベクトルとマテリアルのVelocityの内積がこの値より小さい場合、そのマテリアルのVelocityがその地面に投影されます。
Advanced ¶
Simulation ¶
Cache Memory (MB)
シミュレーションのキャッシュ化に使用されるメモリ量。
Enable Automatic Resimulation
DOPシミュレーション内のどれかのパラメータが変更された時、または、参照しているどれかの外部ノードが変更された時、 シミュレーションのキャッシュが無効とマークされます。 このパラメータを有効にすると、次回から、再生バーをシミュレーション時間0まで移動させると、キャッシュがクリアされ、最初のシミュレーションタイムステップが再計算されます。 シミュレーション時間0の時にキャッシュが無効だった場合、即座に初期状態が再計算されます。 現行時間が0を越えている場合、直近のタイムステップが再クックされ、その現行時間を越えたキャッシュはクリアされます。 しかし、それ以前のすべてのタイムステップは、無効としてマークされだけで、そのまま残されます。 このパラメータがオフの場合、キャッシュはまったく同様に無効としてマークされるものの、キャッシュが自動的にクリアされることはありません。 このモードでシミュレーションを再クックするには、このパラメータダイアログまたはビューポートの上部にあるRecook Simulationボタンを使用する必要があります。
Deterministic Particle-to-Grid Transfer
パーティクルからグリッドへの転送が決定論的な方法で実行されるようにします。 つまり、シミュレーションを何回実行しても、常にまったく同じ結果が得られます。 この機能を無効にすると、シミュレーションを同じ結果で再現できなくなります。 一般的には、決定論的アルゴリズムは、パーティクルが密集している時に優れたパフォーマンスを発揮します。 その一方で、雨滴や爆発物の破片のように空間内を疎らに分散している孤立したパーティクルは、再現性を必要としない場合、非決定論的バージョンの転送アルゴリズムの恩恵が受けられます。
Rebuild Background Grids with OpenCL
ホスト(CPU)の代わりにOpenCLデバイス(GPU)上でVDB Sparseバックグラウンドグリッドを再構築します。 この機能は、メモリ消費量が多く、標準的なGPUでシミュレーション可能な最大解像度にかなり厳しい上限を課すことになるので、デフォルトでは無効になっています。
Assume Unchanging Material Properties
マテリアル特性がシミュレーション全体で一定であると想定します。 これは、ソルバがフレーム毎に Material Condition を再計算してしまわないようにするための最適化です。 異なるマテリアルが異なるフレームで注入される場合、または、シミュレーションを実行する時にソルバのDive Target内で動的にマテリアル特性が修正されている場合、これを無効にしてください。 これを無効にすると、シミュレーションは遅くなりますが、 Material Condition を一定に保つことで安定性が確保されます。
Enable Particle-Level Collisions
2回目のコリジョンステップをマテリアルポイント上で直接実行することができます。 これによって幾分計算量が増えますが、より精度の高いコリジョンが得られます。 一般的には、薄いコライダーなどの非常に正確な衝突が必要でない限り、これは無効にした方が良いです。
Move Outside Colliders
コライダーに潜り込むパーティクルの扱い方を指定します。
Don’t Move Outside Colliders
衝突応答をパーティクルのVelocityに適用するだけです。 これによって、精度が良くなりますが、パーティクルがコライダーに潜り込むのを回避することはできません。
Position-Based Move Outside Colliders
衝突応答をパーティクルのVelocityに適用し、位置に直接関与しているコライダーの外側へパーティクルを移動させます。 これによって体積が失われてしまう可能性があります。
Velocity-Based Move Outside Colliders
衝突応答をパーティクルのVelocityに適用し、さらに、次のインテグレートステップ(積分工程)時にパーティクルがコライダーの外側で移動するようにVelocityを調整します。 これは、パーティクルがコライダーに潜り込まないようにする最も正確な方法ですが、不安定になってしまう可能性があります。
Enable Affine Velocity (C) Clamping
Affine Velocity マトリックスC
の行列式の大きさを制限します。
これによって、C
が不当に大きくなってinf
やnan
のVelocityが頻繁に発生してしまう問題が回避されます。
不安定性は、サブステップを増やすか、マテリアル特性を修正することで常に解決すべきですが、このパラメータによって、シミュレーションのエネルギー量に影響を与えることなくいくつかの問題を回避することができます。
Min/Max Voxel Dilation
ボクセルの観点から、SparseバックグラウンドグリッドのDilation(拡張)に対して制約を課します。 Sparseバックグラウンドグリッドは、DOPサブステップ単位でのみ再構築されます(デフォルトでは、フレーム毎に1回しか再構築されません)。 マテリアルポイントがグリッドの非アクティブ領域に配置されないようにするために、連続する2つのDOPサブステップ間で発生する動きを考慮して、ボクセルが拡張されます。
Tip
アクティブ領域の外側に出ようとするパーティクルは、境界で停止します。 この最大拡張量を上げることで、この問題が解決します。
Note
この拡張量は、ボクセル単位ではなくてワールド単位で定義することに注意してください。 シミュレーションの解像度を2倍にすると、ワールド単位のこの最小/最大の余裕代は実質的に半分に減ることになります。
OpenCL ¶
Finish Kernels
Finish Kernelsが無効な時、次のソルバを続行する前にOpenCLカーネルが完了するのを待つ必要はありません。 これによって、OpenCLカーネルの実行結果が実際に必要になるまではバックグラウンドでOpenCLカーネルを走らせることができます。 ただ、デバッグを簡単にするには、必ず正しい箇所でエラーが検出できるようにFinish Kernelsを有効にした方が役立ちます。
Recompile Kernel
ディスクからカーネルを読み込んだ時、そのカーネルは、計算の度に再生成されないようにキャッシュ化されます。 これを有効にすると、そのカーネルが強制的に再読み込みされて再コンパイルされます。 これは、#includeファイルが変更されたコードを参照していたり、カーネルファイルが外部テキストエディタで変更されている場合に役立ちます。
プロトタイプが完成したら、これを常に無効にしてください。
Kernel Options
カーネルで必要なコンパイルフラグを指定します。 よくある使い方は、-Dフラグを使ってプリプロセッサ用の#defineディレクティブを定義することです。
Note
Apple OSX OpenCLコンパイラは、カーネルオプション間に1個のスペースだけを必要とします!
Houdiniは、カーネルをコンパイルする時にOpenCLデバイスに応じて追加フラグを定義します。
H_GPU
またはH_CPU
のフラグは、GPUとCPUのデバイスを区別し、H_NVIDIA
、H_AMD
、H_INTEL
、H_APPLE
のフラグはハードウェアベンダーを意味します。
Houdiniを起動する前にHOUDINI_OCL_REPORT_BUILD_LOGS
環境変数を1に設定することで、プリプロセッサフラグと一緒にコンパイルされたすべてのカーネルのダンプを取得することができます。
Visualize ¶
Show Container
MPM Containerのガイドジオメトリを表示します。
Show Colliders
MPM Collidersのガイドジオメトリを表示します。
Show Colliders
MPM Collidersのジオメトリの表示カラーを定義します。
Show Ground Plane
MPM Solverの地面のガイドジオメトリを表示します。
Show Ground Plane
MPM Solverの地面ジオメトリの表示カラーを定義します。
Show Background Grid
VDBバックグラウンドグリッドのジオメトリを表示します。
Show BG Grid
VDBバックグラウンドグリッドのジオメトリの表示カラーを定義します。
Particles Color From Attribute ¶
Point Attribute Name
ビューポート内のビジュアライゼーションのカラーにリマップするPointアトリビュート。
Min
カラーランプの0
にマッピングするPointアトリビュートの最小値。
Max
カラーランプの1
にマッピングするPointアトリビュートの最大値。
Remap to Color
フィットしたPointアトリビュート値をカラーにリマップします。
Enable Display as Sphere
ビューポート内でパーティクルを球で表示します。
MPM Sourcesで定義されているパーティクルのレンダリング方法を上書きします。
Display Particles as Spheres
ビューポート内でパーティクルを球で表示します。
Enable Point Scale
MPM Sourcesで定義されているポイントスケールを上書きします。
Point Scale
pscale
アトリビュートを乗算します。
これは、シミュレーション後の視覚化とメッシュ化にのみ使用されます。
各パーティクルの体積は、常にグローバルのParticle Separation(パーティクル間隔)の3乗で計算されます。
Display Pinned-to-Animation Guide
ピン留めされたパーティクルを中心に青いワイヤーフレームの球を表示します。
Output ¶
Point Attributes ¶
Deformation Gradient (F
)
3×3 Deformation Gradient マトリックスF
をPointアトリビュートとしてエクスポートします。
Tip
このアトリビュートは、ローカル回転とすべてのローカル弾性変形(scale
、shear
)を追跡します。
これを使用することで、シミュレーションされたマテリアルポイント上にジオメトリをコピーすることができます。
Affine Velocity (C
)
3×3 Affine Velocity マトリックスC
をPointアトリビュートとしてエクスポートします。
Velocity (v
)
パーティクルVelocityのv
をPointアトリビュートとしてエクスポートします。
Plastic Compression/Stretching (Jp
)
Deformation Gradient の塑性成分Jp
の行列式をPointアトリビュートとしてエクスポートします。
Tip
このアトリビュートは、塑性変形としてマテリアルに適用された圧縮と伸張の度合いを追跡します。
1.0
未満の値は圧縮を、1.0
より大きい値は伸張を意味します。
この伸張の情報は、割れや引裂が発生している箇所を強く示しているので、この情報を使って簡単に埃や破片の二次放出を駆動させることができます。
Elastic Compression/Stretching (Je
)
Deformation Gradient の弾性成分Je
の行列式をPointアトリビュートとしてエクスポートします。
Radius (pscale
)
パーティクル半径のpscale
を浮動小数点Pointアトリビュートとしてエクスポートします。
Unique Identifier (id
)
固有のパーティクル識別子のid
をPointアトリビュートとしてエクスポートします。
Pinned (pintotanimation
)
ピン留めされたパーティクルのフラグをpintoanimation
整数Pointアトリビュートとしてエクスポートします。
Age (age
)
パーティクルの年齢をage
浮動小数点Pointアトリビュートとしてエクスポートします。
Source Name (source_name
)
パーティクルのソース名をsourcename
文字列Pointアトリビュートとしてエクスポートします。
このアトリビュートは、シミュレーション後で操作できるようにMPM Sourcesで定義されています。
Extra Attributes
name
などの追加Pointアトリビュートをエクスポートします。
Detail Attributes ¶
Substep Count (substepcount
)
計算されたサブステップの実際の数のsubstepcount
を整数Detailアトリビュートとしてエクスポートします。
Voxel Size (dx
)
バックグラウンドグリッドのボクセル幅のdx
を浮動小数点Detailアトリビュートとしてエクスポートします。
Grid Scale (gridscale
)
Particle Separation(パーティクル間隔)に基づいてバックグラウンドグリッドのボクセルサイズを定義したgridscale
浮動小数点Detailアトリビュートをエクスポートします。
Particle Separation (particlesep
)
Particle Separation(パーティクル間隔)のparticlesep
を浮動小数点Detailアトリビュートとしてエクスポートします。
Extra Attributes
追加Detailアトリビュートをエクスポートします。
See also |