| 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
シミュレーションキャッシュ全体をクリアします。 ⌃ Ctrlクリックすると、さらに開始フレームにジャンプします。
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。
Surface Tension ¶
Enable Surface Tension
液体マテリアルと粘性マテリアルのどちらのタイプにも表面張力を有効にします。
Method
表面張力の計算に使用されるメソッド。
Point Based
精度と安定性が良いですが遅いです。 これは、葉っぱの上の水滴のような小さな効果に使用します。 表面張力の値が強いほど、予測不可能な結果になります。
Grid Based
精度と安定性が悪いですが速いです。 これは、たくさんのポイントを使った大規模シミュレーションに使用します。 適度な表面張力の値で正しい結果になります。
Strength
表面張力効果の強度。
Kernel Width
Point Based メソッドを使用した場合、ここには、表面張力を算出する際に使用する各パーティクルの隣接パーティクルが検索される範囲を指定します。
この値は、パーティクルのpscaleアトリビュートのスケールです。
External Forces Only
Grid Based メソッドを使用した場合、表面張力の値が高いと液体の塊が物理法則に反した方向に移動してしまう“ゴーストフォース”に遭遇する可能性があります。 表面張力をマテリアルの表面のみに影響するように制限して内部の力を無視することで、そのような不具合を軽減することができます。
Sleeping ¶
Enable Auto Sleep
パーティクルが動かなくなった時にシミュレーションの一部を無視するように指示します。 この仕組みによって、特にシーケンスの大部分でほとんどのパーティクルが静止しているような場合には、シミュレーションを高速化することができます。
Initial State
放出時のパーティクルのデフォルトの初期状態。
Passive
マテリアルがSleep(非アクティブ)として放出されます。
Active
マテリアルがAwake(アクティブ)として放出されます。
Note
MPM Sourceで定義された状態は、このデフォルト設定よりも優先されます。
Velocity Threshold
パーティクルの瞬間的な再アクティブ化を発動させる最小速度。
Sleep Delay
非アクティブ化を発動するためにパーティクルが Velocity Threshold 未満のままでいる必要が秒数。
各パーティクルには、0までカウントダウンされるsleep_delayPointアトリビュートがあります。
パーティクルのVelocityが Velocity Threshold を超えると、この値はリセットされます。
このカウントダウンが0に達すると、そのパーティクルは非アクティブになります。
Collision ¶
Detection Distance
衝突検出距離(デフォルトでパーティクルの半径)をスケールします。 マテリアルをコライダーにより強く密着させたい場合は、この値を大きくすると効果的です。
Prune Interior Points
放出時にコライダー、地面、境界壁の内部にあるポイントを削除します。
Surface Offset
Pruning(ポイント削除)を行なう前に、コライダーの表面を拡張または収縮させます。
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を調整します。 これは、パーティクルがコライダーに潜り込まないようにする最も正確な方法ですが、不安定になってしまう可能性があります。
Assume Uniform Collider Scaling
X軸のスケールを全軸における真のボクセルサイズとして採用することで、ボクセルサイズを常に均一なものとして扱います。
Tip
VDBボクセルサイズは、グリッドのトランスフォームから抽出されるため、常に暗黙で定義されています。 グリッドが回転すると、ボクセルサイズが非均一で近似されることがよくあります。 ソルバはこれらの不正確なスケール評価で補間を行なうことになるため、これが原因でフレーム間で振動が発生してしまいます。 コライダーのスケールが均一であると仮定することで、こうした問題を軽減することができます。
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ボタンを使用する必要があります。
Assume Unchanging Material Properties
マテリアル特性がシミュレーション全体で一定であると想定します。 これは、ソルバがフレーム毎に Material Condition を再計算してしまわないようにするための最適化です。 異なるマテリアルが異なるフレームで注入される場合、または、シミュレーションを実行する時にソルバのDive Target内で動的にマテリアル特性が修正されている場合、これを無効にしてください。 これを無効にすると、シミュレーションは遅くなりますが、 Material Condition を一定に保つことで安定性が確保されます。
Enable Affine Velocity (C) Clamping
Affine Velocity マトリックスCの行列式の大きさを制限します。
これによって、Cが不当に大きくなってinfやnanのVelocityが頻繁に発生してしまう問題が回避されます。
不安定性は、サブステップを増やすか、マテリアル特性を修正することで常に解決すべきですが、このパラメータによって、シミュレーションのエネルギー量に影響を与えることなくいくつかの問題を回避することができます。
Background Grids ¶
Deterministic Particle-to-Grid Transfer
パーティクルからグリッドへの転送が決定論的な方法で実行されるようにします。 つまり、シミュレーションを何回実行しても、常にまったく同じ結果が得られます。 この機能を無効にすると、シミュレーションを同じ結果で再現できなくなります。 一般的には、決定論的アルゴリズムは、パーティクルが密集している時(ボクセルあたり8ポイント、これがデフォルトです)に優れたパフォーマンスを発揮します。 その一方で、非常に薄い材料、または、雨滴や爆発物の破片のように空間内を疎らに分散している孤立したパーティクルは、再現性を必要としない場合、非決定論的バージョンの転送アルゴリズムの恩恵が受けられます。
Rebuild Background Grids with OpenCL
ホスト(CPU)の代わりにOpenCLデバイス(GPU)上でVDB Sparseバックグラウンドグリッドを再構築します。 この機能は、メモリ消費量が多く、標準的なGPUでシミュレーション可能な最大解像度にかなり厳しい上限を課すことになるので、デフォルトでは無効になっています。
Velocity Driven Grid Activation
Velocityベクトルを使用して、Sparseバックグラウンドグリッドをその方向に沿ってアクティブ化します。 この実験的な機能によって、アクティブ化するボクセル数がより控え目に抑えられて、メモリを大幅に節約することができます。 ただし、これはパーティクルがフレーム間を直線的に移動していることを前提にしており、実際にはそのようなケースは稀です。 そういった理由で、アーティファクトを回避するために、デフォルトではSparseバックグラウンドグリッドは一定方向にアクティブ化されるようになっています。
Min/Max Voxel Dilation
ボクセルの観点から、SparseバックグラウンドグリッドのDilation(拡張)に対して制約を課します。 Sparseバックグラウンドグリッドは、DOPサブステップ単位でのみ再構築されます(デフォルトでは、フレーム毎に1回しか再構築されません)。 マテリアルポイントがグリッドの非アクティブ領域に配置されないようにするために、連続する2つのDOPサブステップ間で発生する動きを考慮して、ボクセルが拡張されます。
Tip
アクティブ領域の外側に出ようとするパーティクルは、境界で停止します。 この最大拡張量を上げることで、この問題が解決します。
Note
この拡張量は、ボクセル単位ではなくてワールド単位で定義することに注意してください。 シミュレーションの解像度を2倍にすると、ワールド単位のこの最小/最大の余裕代は実質的に半分に減ることになります。
Dilation Units
拡張量をボクセル単位またはワールド空間単位で表現します。
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に設定することで、プリプロセッサフラグと一緒にコンパイルされたすべてのカーネルのダンプを取得することができます。
Checkpoints ¶
Save Checkpoints
クラッシュしたシミュレーションを再開できるようにしたり、ショット間でシミュレーションの連続性を維持できるようにDOPチェックポイントを保存します。
Base Name
ディスク上のチェックポイントファイルの名前。
Base Folder
ディスク上のチェックポイントディレクトリの場所。
Version
ディスク上のチェックポイントファイルのバージョン。
Checkpoint Trail Length
チェックポイントファイルが削除される前にどれだけの量の履歴が保存されるか。 値が0では、キャッシュファイルは削除されません。 そうでなければ、この値よりも古いフレームはディスクから消去されます。
Note
削除されるのは、Houdiniのこのセッションで作成されたチェックポイントファイルのみです。 もし存在するキャッシュファイルでHoudiniを再スタートする場合、削除されません。 クラッシュした位置から再スタートしたいでしょうし、もしまたクラッシュした場合にまた同じ位置から 再スタートできることを保証したかったので、このような仕様にしました。
Checkpoint Interval
チェックポイント間のフレーム間隔。これを1に設定すると、フレーム毎にチェックポイントを保存します。 これを高い値に設定すると、指定したフレームおきにチェックポイントを保存します。 例えば、これを5に設定すると、5フレームおきにチェックポイントを保存します。
大きなシミュレーションを走らせる場合は、これによってディスク容量を節約することができます。
Visualize ¶
Show Container
MPM Containerのガイドジオメトリを表示します。
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
ビューポート内のビジュアライゼーションのカラーにリマップするPointアトリビュート。
Min
カラーランプの0にマッピングするPointアトリビュートの最小値。
Max
カラーランプの1にマッピングするPointアトリビュートの最大値。
Compute Range from Data
現在のデータに基づいて、選択したアトリビュートが[0, 1]範囲にリマップされるように Min パラメータと Max パラメータを調整します。
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)を追跡します。
これを使用することで、シミュレーションされたマテリアルポイント上にジオメトリをコピーすることができます。
Warning
破壊のワークフローでは、変形勾配Fを有効にする必要があります。
Orientation (orient)
クォータニオンのorientをPointアトリビュートとしてエクスポートします。
このアトリビュートは、変形勾配Fから抽出されます。
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アトリビュートとしてエクスポートします。
State (state)
Auto Sleep機能で使用されるstate整数Pointアトリビュートをエクスポートします。
Sleep Delay (sleep_delay)
Auto Sleep機能で使用されるsleep_delay浮動小数点Pointアトリビュートをエクスポートします。
Age (age)
パーティクルの年齢をage浮動小数点Pointアトリビュートとしてエクスポートします。
Source Name (source_name)
パーティクルのソース名をsourcename文字列Pointアトリビュートとしてエクスポートします。
このアトリビュートは、シミュレーション後で操作できるようにMPM Sourcesで定義されています。
Extra Attributes
nameなどの追加Pointアトリビュートをエクスポートします。
Detail Attributes ¶
Start Frame (startframe)
シミュレーションの開始フレームstartframeを整数Detailアトリビュートとしてエクスポートします。
Time Scale (timescale)
シミュレーションの時間スケールtimescaleを浮動小数点Detailアトリビュートとしてエクスポートします。
Substep Count (substepcount)
計算されたサブステップの実際の数のsubstepcountを整数Detailアトリビュートとしてエクスポートします。
Voxel Size (dx)
バックグラウンドグリッドのボクセル幅のdxを浮動小数点Detailアトリビュートとしてエクスポートします。
Grid Scale (gridscale)
Particle Separation(パーティクル間隔)に基づいてバックグラウンドグリッドのボクセルサイズを定義したgridscale浮動小数点Detailアトリビュートをエクスポートします。
Particle Separation (particlesep)
Particle Separation(パーティクル間隔)のparticlesepを浮動小数点Detailアトリビュートとしてエクスポートします。
State Distribution (distribution)
状態分布のdistributionを文字列Detailアトリビュートとしてエクスポートします。
Tip
このアトリビュートは、アクティブなパーティクルとパッシブなパーティクルの割合を把握するのに役立ちます。
Extra Attributes
追加Detailアトリビュートをエクスポートします。
Background Grids ¶
Mass
ソルバからmassバックグラウンドグリッドをエクスポートします。
Velocity
ソルバからvelバックグラウンドグリッドをエクスポートします。
| See also |