On this page | |
Since | 19.5 |
FLIP Solver SOPは、パーティクルベースの流体シミュレーションとボリュームベースの流体シミュレーションのハイブリッドタイプです。
流体データはすべてパーティクルに記録され、必要なパーティクルのみがフレームからフレームで持続し、不要な流体の混在や消失が起こらないようになっています。
ただし、その時々に必要なボリュームに対してはPressure Projection(圧力射影)の処理が実行されます。
その流体は、pscale
を持たパーティクルとして表現され、POPフォースとDOPフォースで動かすことができます。
FLIP流体が計算される時に、一時的なVelocityフィールドが作成されます。 パーティクルVelocityは、このグリッドに転送され、そのグリッドが流体予測に使われます。 これは、パーティクルがお互いに重なり合って、同じ方向に移動し始めないようにするものです。
FLIP Solverのメリットは、1フレーム毎に2,3のタイムステップ数のみで実行されるのに対して、他の方法では、安定化のために1フレームに対して5から10またはそれ以上のタイムステップ数が必要になるところです。 FLIPは、2,3のグリッド(ボリュームフィールド)を利用して、流体シミュレーション内で起こりえる瞬間的な衝撃を制御することができます。 これにより、はるかに少ないタイムステップ数ではるかに少ないポイントを実行できるうえ、パーティクル間の相互の間隔をランダムにすることができます。 ほとんど何にも影響することなく、いつでも新しいパーティクルを取り込むことができます。
パラメータ ¶
Reset Simulation
このボタンをクリックすると、シミュレーションが更新され、すべてのキャッシュデータがRAMから削除されます。 ディスクにキャッシュ化しない限り、シミュレーション済みのフレームは失われます。
Start Frame
シミュレーションを開始するフレームを指定します。 指定のフレームまで計算は実行されません。 シミュレーションをディスクにキャッシュ化する場合、 Start Frame に達するまでは空のフレームが書き出されます。
Setup ¶
Particle Separation
パーティクル同士がpscale
アトリビュート値よりも近寄っていることがあります。
その場合、内部フォースはパーティクルを引き離すことができません。結果として、時間の経過と共に流体が圧縮します。
正しい結果を得るには、FLIP Container SOPから Particle Separation 値を取得して、ここで使用します。
Grid Scale
Sphere Packing(球充填)問題が原因で、パーティクルを実際にpscale
サイズで詰められない問題を回避するためのごまかし係数。
異なる値をテストするには、ボリュームまたはパーティクスフォースなしでFLIP Solver SOPを実行し、最初のパーティクルが希望のボリュームを維持する値を確認します。
Time Scale
このソルバ内の時間のスケール係数。1
の値は標準速度で、1
より大きい値は、FLIPシミュレーションを速い動きに、1
未満の値は、FLIPシミュレーションを遅い動きにします。
doptime, dopframe,dopsttot, dopttostなどのエクスプレッション関数を使用すれば、グローバル時間とシミュレーション時間を変換することができます。
Note
Time Scale を変えると、シミュレーションのタイムステップだけが影響を受けます。
SOPで計算されたVelocityをシミュレーションに追加することで、Volume Source DOPと衝突する場合は、シミュレーションのタイムステップに合うように入力のVelocityを1/Timescale
でスケールしてください。
Global Substeps
このパラメータを使用して、 Minimum Substeps と Maximum Substeps を上書きします。 サブステップ数を増やすほど、シミュレーション時間は長くなります。
Min Substeps
FLIPソルバは、常にサブステップの最小数を順守します。
これは、ごく稀にしか変更する必要はありません。
Max Substeps
FLIPソルバは、シミュレーションをこの値よりも多いサブステップに分割しません。
Cache Memory (MB)
シミュレーションをメモリにキャッシュ化するために確保されたRAMの量。
Waterline ¶
Waterline
このオプションをオンにすると、初期の水ボリュームが作成され、例えばコンテナがある程度まで満たされたり、オブジェクトや流体ソースと相互作用するための水面が作成されます。
デフォルトでは、ソルバのNarrow Band(狭帯域)オプションのため、特定の厚さの水の層しか見ることができません。 Narrow Band(狭帯域)は、流体の挙動や品質を維持したまま、シミュレーションを高速化し、メモリ使用量を削減できる有効な方法です。 Narrow Band(狭帯域)のシミュレーションでは、水位線より下にある流体は、(VelocityやSurfaceなどの)ボリュームとフィールドで表現されます。
VEXまたはVOPで水位線のチェックを行ないたい場合、例えば変位させたパーティクルが水位線より上にある場合は、pscale
を考慮に入れる必要があります。
DOPベースのFLIP流体では、パーティクルは高さ0
まで作成され、SOPベースの流体では、 Waterline は高さ-pscale
までパーティクルを作成します。
つまり、正しいエクスプレッションはv@P.y>-f@pscale
です。
現在のpscale
値は、Geometry Spreadsheetペインで確認することができます。
Note
ソルバノードの4番目の入力を通じた境界移動を含むシミュレーションでは、 Waterline をオフにする必要があります。 水面は、Ocean Spectrum SOPやOcean Evaluate SOPなどの接続されたノードで作成されます。
Note
オンにすると、ドメインの外側を取り囲むパーティクルの帯域を確認することができます。 この帯域は外部環境を表わし、ドメイン内の流体にVelocityと圧力を注入します。 また、このレイヤーから新しいパーティクルがソーシングされます。 なお、流体パーティクルをサーフェス化する際は、パーティクルレイヤーが考慮されます。 このレイヤーの幅は Source Band で調整することができます。
Water Origin
デフォルトでは、水の原点は0,0,0
です。
この位置は Water Origin で変更することができ、例えばY方向にオフセットを追加するといったことが可能です。
流体は、 Water Origin と Waterline の間の空間でシミュレーションされます。
Waterline
スライダをドラッグしてY軸で水位線を変更するか、値を入力します。 水位線は、FLIP Container SOPの境界の内側でなければなりません。
Additional Velocity
水位線パーティクルに初期速度と方向を追加して、例えば川のような水流を作成することができます。 ドメインの境界では、常に新しいパーティクルがソーシングおよび削除されます。
Type
Type は、ドメインの境界と相互作用するパーティクルをどのように制御するかを決定します。 どちらのタイプでも、水はドメインの境界にぶつかると消えてなくなり、新しいパーティクルがソーシングされて平衡が保たれます。 パーティクルのソーシングと削除は、ドメインの外側を囲む Source Band の中で起こります。 このパラメータは、海の波のうねりや高解像度化のシナリオなど、境界移動を含むシミュレーションにも関係します。 グラスを満たすなど、ドメインの境界に接触しないシミュレーションでは、 Type を考慮する必要はありません。
使用する Type に応じて、かなり異なる結果になります。 Pressure Driven の境界の方が、飛沫が多い傾向にあります。
Pressure Driven
飛沫が増えて、流体がより乱れる傾向があり、不安定になります。
Velocity Driven
乱れが少なく、より安定します。
Initial Surface
ドメインがどのように満たされるかは、 Advanced サブペインの Initial Surface 、 Waterline 、 Enable Particle Narrow Band の組み合わせで決まります。
-
Waterline がオンの時、デフォルトで水面が表示されます。
-
パーティクルボリュームを取得するには、 Enable Particle Narrow Band をオフにします。
-
3つのパラメータをすべてオフにすると、ドメインは空っぽのままです。
-
Initial Surface のみをオフにすると、ドメインの周りにパーティクル帯域が作成されます。
Velocity Band
Pressure Band
Source Band
Waterline をオンにすると、ドメイン内に水面が示され、外側にはソース帯域の領域が示されます。 ソース帯域は、新しいパーティクルがソーシングされる領域で、このパラメータでサイズを制御します。
Collisions ¶
Particle Collisions
どのモードを使うかは、衝突オブジェクトのジオメトリだけでなく、FLIP Collide SOPの Volume Collide および Surface Collide 設定によって変わります。 デフォルトのモードは、閉じた3Dオブジェクトとボリュームに対して機能します。
None
シミュレーション全体でパーティクルとオブジェクトの衝突を無効にします。
Particle
2Dまたは開いた3Dジオメトリがある場合、これを使用します。
Move Outside Collision
閉じた3Dオブジェクトとボリュームには、このモードを使用します。
Transparency
Surface Extrapolation
流体サーフェスが、この衝突のボクセル距離内にある時、ソルバは、その流体サーフェスを衝突オブジェクトの一部と見なします。 この外挿は、曲率のあるサーフェスに沿って、流体の流れを滑らかにすることができますが、若干、粘着性があります。 この値を小さくすれば、衝突から、より動的な飛沫を作成することができます。特にオブジェクトが流体に入る時がそうです。
Note
この値を0に設定することは、推奨しません。
Stick on Collision
流体が衝突オブジェクトに近い時、流体のVelocityが衝突Velocityに一致させます。 詳細は、Gas Stick On Collision DOPを参照してください。
Stick Scale
流体のVelocityが衝突Velocityにブレンドする量。 1の値は、完全に衝突のVelocityに一致します。
Max Distance
その効果の適用範囲となるワールド空間距離を指定します。
Max Cells
その効果の適用範囲となるボクセルの最大数を指定します。
Stick Bias
Stick Distanceの範囲内で、その効果が完全に Stick Scale に到達する速さを制御します。値が1に近いほど、Stick Distanceの範囲内でより効果が強くなります。
Normal Scale
衝突サーフェスの法線方向のVelocity調整の量をスケールします。
Tangent Scale
衝突サーフェスの接線方向のVelocity調整の量をスケールします。
Control Field
この空間的に変化するフィールドによって、その効果をスケールします。これは、衝突フィールドの解像度と一致します。
Tip
Normal Scale を高くしたまま、 Tangent Scale を小さくすると、衝突の周りを流体が素早く流れるが、 同時に表面に張り付いたままになる“吸着”効果が生成されます。
Add Ground Plane
地面オブジェクトを追加して、それを流体パーティクルと相互作用させることができます。
None
地面は追加されません。
Ground Plane
地面をシミュレーションに追加します。
Height Field
静的なHeight Fieldオブジェクトをシミュレーションに追加します。
Height Field
Height FieldジオメトリのSOPパス。
Ground Position
地面の中心位置。
Ground Up
地面の向き。
Fluid Behavior ¶
Velocity Transfer
Velocity Transfer パラメータでは、デフォルトの FLIP (Splashy) と APIC (Swirly) のどちらかを選択することができます。 FLIP (Splashy) は、通常、川や海のような高エネルギーでノイズの大きい大規模なFLIPシミュレーションに使用します。 この場合、FLIPノイズによる表面への影響は問題になりません。 APIC は、通常、高い渦度のシミュレーションに使用します。 この場合は、シミュレーションの渦巻く性質を維持しつつ、できる限り表面ノイズを軽減する必要があります。 例えば、表面のノイズがかなり目立つ小規模な流体や、溶岩のようなタイプのシミュレーションに使用します。
Enforce Air Incompressibility
Divergence Free(発散なし)の拘束が空洞に対しても適用されます。 これによって、空洞が崩れなくなって、上昇する気泡が生成されます。 これは、ブクブク音を立てるウォーターサーバーのように空気と液体のリアルな作用を表現するのに役立ちます。
Note
これは、Pressure Adaptivityでは動作しません。
Min Air Region Voxels
最小ボクセル数未満の空気の領域には、非圧縮性が適用されません。 これは、小さい気泡が衝突サーフェス沿いに浮かび上がらないようにするのに役立ちます。
Note
Enforce Air Incompressibility の機能は、空洞内のVelocityを計算しません。 単に液体のVelocityを拘束し、空気の体積が圧縮または膨張しないようにするだけです。 こうすることで、空洞を完全にシミュレーションするよりもはるかに効率的にシミュレーションを実行することができます。
Note
Particle Fluid Surface SOPのデフォルトの設定を使用すると、流体内に潜り込んでいる気泡がレンダリング過程で消えてしまう可能性があります。 流体内に気泡を保持するには、Particle Fluid Surface SOPの Preserve Bubbles を有効にしてください。
Apply Particle Separation
Velocity予測ステージに関わらず、パーティクルをpscale
アトリビュートよりも近くに寄せることができます。
これが起きる時、内部フォースは、パーティクルを離すことができません。その理由は、Velocity予測は、それらのフォースを削除するからです。
この結果、流体が時間と共に圧縮します。
Separation Iterations
分離緩和ステップを実行する回数。分離の連続フレームは、同じ効果を持つので、この値は、通常では1に設定します。
Separation Rate
パーティクルを目的の分離位置へ動かす距離。この値を小さくすることで、小数値の反復の効果を取得することができます。
Separation Scale
パーティクルが球詰め問題においてpscale
の値では実際に詰めることができないと判断される誤差。
異なる値をテストするには、ボリュームまたはパーティクルのフォースを使わないでFLIP計算を実行し、
どの値で初期パーティクルが目的のボリュームを維持できるのか確認します。
Reseeding
流体サーフェスを適切に表現できないほどパーティクル数が減ったボクセル内に新しいパーティクルを作成し、パーティクルの密集度が高いボクセル内のパーティクルを削除します。 Reseedingにより、衝突付近の流体内でエアポケットが形成されることによる崩れを防止することができます。 また、より滑らかなサーフェスを用意して、そこからポリゴンメッシュを生成することができます。
Note
Enable Particle Narrowband が有効になっていると、 Reseeding を無効にすることができません。
Birth Threshold
現行のパーティクル数が、このパラメータの値とパーティクルのゴール数を乗算した値より下回ると、パーティクルがボクセルに追加されます。
Death Threshold
現行のパーティクル数が、このパラメータの値とパーティクルのゴール数を乗算した値より上回ると、パーティクルがボクセルから削除されます。
Oversample At Boundaries
流体ボリューム境界の Oversampling Bandwidth ボクセル内でオーバーサンプリングします。 この設定は、“タンク”タイプのシミュレーションの境界で流体のポケットを壊さないようにすることができます。
Surface Oversampling
パーティクルのゴール数は、それがサーフェスの Oversampling Bandwidth の範囲内の時に、この量でスケールされます。
Oversampling Bandwidth
Oversample at Boundaries が有効な時、サーフェスまたは Surface ボリューム境界から、この数のボクセル内でオーバーサンプリングします。
Random Seed
再シードの時に新しいパーティクル位置を生成するために使用される時間変動のランダム関数を制御するシード。 シミュレーション内の高い周波数の飛沫は、パーティクルの位置から強く影響を受けるので、この値を変えると(例えば、Wedge ROPを使用)、 似たような大きさのモーションを持つ複数のシミュレーションでも、同一のシミュレーションパラメータにもかかわらず、異なる飛沫の挙動を生成させることができます。
Visualization ¶
Show Collision
チェックボックスをオンにすると、衝突オブジェクトのサーフェスのワイヤーフレーム表現が表示され、漏れや解像度を確認することができます。
Points as Spheres
オンのとき、パーティクルは小さい球として表示されます。
Color by Speed
Max Speed と Visualization Ramp を使用すると、速度に応じてパーティクルを着色したり、飛沫のような面白い領域を強調することができます。
Max Speed
このパラメータを使用すると、流体の速度の違いを視覚化できます。調整された値と同じか、それより大きいVelocityを持つすべてのパーティクルは、同じ色で表示されます。
Visualization Ramp
速度の値がこのランプに送られて、パーティクルの色を取得します。
Point No.
ランプのカラースライダの番号。
Position
アクティブなカラースライダの現在の位置。
値の範囲は0
(左端の色)から1
(右端の色)までです。
Color
この設定のベースカラー。 パレットから色を選択するか、入力フィールドでRGB値を指定します。
Interpolation
カラーポイント間のカーブをどのように補間するかをドロップダウンメニューから選択します。
Advanced ¶
Enable Particle Narrow Band
流体表面から Bandwidth の範囲内にある流体のSurfaceボリュームとVelocityボリュームを更新する時には、FLIPパーティクルのNarrow Band(狭帯域)が使用されます。 流体表面から Bandwidth よりも深くにあるパーティクルは、シミュレーションから除外されます。
Use Multigrid Preconditioner
このチェックボックスを有効にすると、計算速度を上げるために、圧力システムは Algebraic Multigrid (代数マルチグリッド)を使用して前処理されます。 このオプションでは、収束に必要な反復回数が大幅に少なくなる一方で、各反復の負荷が大きくなります。 通常では、これによって計算が大幅に高速化されますが、Air Incompressibility(空気の非圧縮性)または分散には対応していません。
Solve Pressure with Adaptivity
オンのとき、圧力ソルバは可能な限り適応タイムステップを使用し、シミュレーション時間を短縮します。 不安定さやパーティクルの爆発が見られる場合は、このオプションをオフにしてみてください。
このモードは、 Fluid Behavior ▸ Air Incompressibility と一緒に使用することは できません 。 また、ポイント可変密度を含むシミュレーションでは、このオプションをオフにする必要があります。
Solve Viscosity with Adaptivity
オンのとき、粘度ソルバは可能な限り適応タイムステップを使用し、シミュレーション時間を短縮します。 不安定さやパーティクルの爆発が見られる場合は、このオプションをオフにしてみてください。 それでも問題が解決しない場合は、 Solver ▸ Global Substeps を上げることを検討します。
Save Checkpoints
通常、 Allow Caching to Disk が有効で、シミュレーションがメモリ制限に到達している時、シミュレーションはtempディレクトリにあるファイルに保存されます。 これらは有効な.simファイルである一方、管理が難しいです。このオプションがオンの時、各フレームは即座に指定したディレクトリにキャッシュ化されます。 各フレームはCache Memoryに到達するまでメモリ内に保存されますが、(既にディスク上にあるので)この時点ではディスクには保存されません。 チェックポイントの利点は、キャッシュフレームが既に存在する場合、たとえシミュレーションがリセットされたとしても、DOPはそのフレームをクックせず、代わりにそのフレームを読み込むことです。 さらに言えば、要求されたフレームの前で、最後の有効なチェックポイントフレームの後のフレームをクックするだけです。 そのため、もしcache_50.simを持っていてフレーム100をクックしようとする場合、フレーム50でクッキングを開始することができます。
Save Checkpointsの使用は、Automatic ModeでFile DOPを使うことと同等です。 しかし、File DOPでフレーム50に飛ぼうとするとき、最初の50フレームを読み込まなくてはなりません。 チェックポイントを使えば、このステップをスキップできます。
Checkpoint Files
チェックポイントを保存するためのファイルシーケンス。これらは.simファイルで、File DOPまたは File SOPを使って読み込むことが可能です。変数$SFはフレーム番号を指定するために使わなければいけません。 $Fはシミュレーション空間で動作しているので、使うことはできません。$SF4もサポート済みです。
Checkpoint Trail Length
チェックポイントファイルが削除される前にどれだけの量の履歴が保存されるか。 値が0では、キャッシュファイルは削除されません。 そうでなければ、この値よりも古いフレームはディスクから消去されます。
Note
削除されるのは、Houdiniのこのセッションで作成されたチェックポイントファイルのみです。 もし存在するキャッシュファイルでHoudiniを再スタートする場合、削除されません。 クラッシュした位置から再スタートしたいでしょうし、もしまたクラッシュした場合にまた同じ位置から 再スタートできることを保証したかったので、このような仕様にしました。
Checkpoint Interval
チェックポイント間のフレーム間隔。これを1に設定すると、フレーム毎にチェックポイントを保存します。 これを高い値に設定すると、指定したフレームおきにチェックポイントを保存します。 例えば、これを5に設定すると、5フレームおきにチェックポイントを保存します。
大きなシミュレーションを走らせる場合は、これによってディスク容量を節約することができます。
入力 ¶
Sources
ここには、流体のパーティクルを接続します。
Container
ここには、SurfaceフィールドとしてFLIP Container SOPのジオメトリを接続します。
Collisions
ここには、Surface/VelocityフィールドとしてFLIP Collide SOPからのすべての衝突オブジェクトを接続します。
Boundary Flow
この入力を使用すると、例えば高解像度シミュレーションのために、境界圧力またはVelocity情報を転送することができます。 また、外部ソースとしてOcean Spectrumを接続することで、うねる波を作成することもできます。
出力 ¶
Sources
流体パーティクルが出力されます。
Container
SurfaceフィールドとしてFLIP Container SOPからのジオメトリが出力されます。
Collisions
Surface/VelocityフィールドとしてFLIP Collide SOPからのすべての衝突オブジェクトが出力されます。