On this page |
移動する衝突オブジェクトの正確なVelocityは、流体シミュレーション全般で非常に重要な要素で、特にFLIPがそうです。 衝突Velocityが不正確だと、ダイナミックさに欠ける飛沫ができたり、ジオメトリから流体が漏れてしまう可能性があります。
HoudiniのSOPベースのFLIP流体は、FLIP Collide SOPノードを介してオブジェクトの衝突や相互作用を制御します。 衝突オブジェクトは、静的でも、移動や変形しても構いません。 FLIP Collide SOPノードには、ジオメトリやボリュームを接続できる4番目の入力( New Collision Geometry )があります。
ソルバの境界条件は、水をグラスに注ぐ場合などの衝突には関係しません。
ソルバの境界条件は、シミュレーションドメインと相互作用する流体に対してのみ評価されます。
ドメインはFLIP Container SOPノードを介して定義します。
下記の画像は、元のオブジェクトと、 Particle Separation 値を0.1
と0.01
にした衝突ジオメトリです。
ボリュームとサーフェスとの衝突 ¶
FLIP Collideノードには、主に2つの衝突メソッドがあります: Volume Collide と Surface Collide 。 デフォルトでは、どちらのオプションもオンになっています。 Volume Collide は入力ジオメトリからボリュームを作成します。 このボリュームの品質と解像度は、FLIP Container SOPノードの Particle Separation と Grid Scale パラメータのみで制御します。 Particle Separationの値が小さいほど、解像度は高くなりますが、メモリ使用量も増えます。 また、このパラメータは流体パーティクルの数にも影響するため、シミュレーション時間も長くなります。
Surface Collide は、入力メッシュを1:1で表現し、ボリュームでは利用不可です。
Note
一部の衝突メソッドでは、ソルバの Collision サブタブに移動する必要があります。 Collision Behavior に Particle Collisions ドロップダウンメニューがあります。 デフォルトでは、 Move Outside Collision が選択されています。
-
Surface Collide がオンになっている衝突オブジェクトが最低でも1個ある場合、ソルバの Particle メソッド(デフォルトオプション)が必須です。
-
たいていの場合、両方のメソッドが有効(デフォルトオプション)のままで良いです。また、開いた3Dオブジェクトと閉じた3Dオブジェクトを結合する場合でも、これは必須です。
-
Volume Collide は、すべてのソリッド3Dオブジェクトとボリュームに適しています。
-
Surface Collide は、グリッドのような2Dオブジェクトの場合に適しています。
To... | Do this |
---|---|
コリジョンジオメトリを表示する |
|
流体とオブジェクトとの衝突をグローバルで無効化する |
|
ソリッドオブジェクトと閉じた3Dオブジェクトの衝突メソッドを設定する |
|
2Dオブジェクトの衝突メソッドを設定する |
|
結合された2Dおよび3Dオブジェクトの衝突メソッドを設定する |
|
ボリュームをコライダーとして使用する |
|
低解像度の流体を使用して衝突を改善する |
|
垂直方向の流体をシミュレーションする |
|
ボリュームを衝突オブジェクトとして使用する |
|
衝突オブジェクトからの漏れ ¶
漏れの主な原因は、オブジェクトが完全に閉じられていなくて、Houdiniが適切な衝突ボリュームを作成することができないことです。 また、非常に小さいオブジェクトも漏れやすい傾向があります。 可能であれば、オブジェクトのスケールを上げて密閉することを検討してください。 また、ポリゴンの穴を塞ぐことを試みてください。
衝突オブジェクが薄い場合など一部のケースでは、比較的低解像度でシミュレーションした時に、FLIP Solverが衝突を適切に計算できないことがあります。 ごく薄いオブジェクトの場合は、より厚い符号付き距離フィールド(SDF)を生成するプロキシ衝突ジオメトリを作成することも解決策の1つです。 衝突検出は、いくつかの方法で改善することができます。
よくある漏れの原因は、非常に高速に移動するパーティクルやオブジェクトです(オブジェクトが十分に大きく/厚く、適切にモデリングされている場合でも)。
このような場合、ソルバの精度が不足しています。
FLIP Solver SOPノードの Quality セクションに移動して、 Global Substeps の値を上げます。
サブステップはシミュレーション時間に大きく影響するため、テストサイクル毎に1
だけ上げてください。
オブジェクトが移動したり変形している場合、FLIP Collideノードの Velocity Substeps を上げます。
通常、 Global Substeps と Velocity Substeps は一致している必要があります。
低解像度のシミュレーションでは、同じジオメトリに Volume Collide と Surface Collide の両方を使用すると役に立つ場合があります。 Volume Collide は主体の流体に対処でき、 Surface Collide はパーティクルの漏れを防ぎます。
シミュレーション中、サーフェスコライダーがトポロジーを維持するようにしてください。 そうしないとサブフレームで衝突検出が適切に計算されません。 Time Blend SOPを使用して、プレイバーをサブフレームに切り替え(以下の手順を参照)、ジオメトリの補間が適切かどうかを検証します。
-
Alt + ⇧ Shift + Gを押して Global Animation Options を開きます。
-
サブフレームに切り替えるには Integer Frame Values をオフにします。
-
必要に応じて、 Step を調整します。
また、以下もチェックしてください。
-
ソルバで正しい Particle Collision メソッドが有効になっているかどうか。
-
FLIP Collideノードで正しいモード(Volume/Surface)が有効になっているかどうか。
衝突オブジェクトのクリッピング ¶
リアルに流体とオブジェクトを相互作用させるために、衝突オブジェクトの内側にあるパーティクルを削除します。 この処理では、その衝突オブジェクトが閉じたソリッドである必要があります。 Surface Collide を使用したオブジェクトでは動作しません。
-
可能な場合、ポリゴンの穴を塞いでください。
-
サーフェスを押し出してソリッドオブジェクトにします。
-
FLIP Collideノードの Volume Collide オプションがオンになっているか確認します。
-
FLIP Solverの Collision サブペインに移動します。 Particle Collisions が Move Outside Collision に設定されているか確認します。
以下の画像は、閉じた衝突ジオメトリと開いた衝突ジオメトリの水面を示しています。
ソルバの衝突設定 ¶
ソルバの Collisions サブペインは、衝突や漏れのあるオブジェクトに関する多くの問題を解決できます。 Particle Collisions ドロップダウンメニューには、3つのオプションが用意されています。
-
None の場合、衝突検出は完全に無効になります。
-
Move Outside Collision はデフォルトで、最も素早く衝突を処理できる方法です。このオプションで、飛沫は最も滑らかになりますが、高速で移動する衝突オメトリの場合は精度がやや下がります。ボリューム衝突オブジェクトで機能する唯一のメソッドでもあります。
-
最低1つのFLIP Collideノードで Surface Collide オプションがオンになっている場合、 Particle を選択する必要があります。
移動するオブジェクトと変形するオブジェクト ¶
FLIP Collide SOPの Compute Velocity チェックボックスをオンにすると、移動するオブジェクトや変形するオブジェクトのVelocityを考慮するように設定できます。 Velocity Scale では、飛沫の強度を制御することができます。高い値ほど強い飛沫が作成され、より印象的な波になります。飛沫が強すぎる場合は、値を下げて、パーティクルを弱めます。