On this page | |
Since | 12.0 |
FLIP Solver DOPは、オブジェクトをパーティクル流体として動的に進化させます。
FLIP Solverは、パーティクルベースの流体シミュレーションとボリュームベースの流体シミュレーションのハイブリッドのタイプです。
予期しない流体の混在や消失が起こらないように、すべての流体データがパーティクルに記録され、パーティクルのみがフレームからフレームで持続する必要があります。
しかし、圧力射影ステップは、時間通りに作成されるボリュームに対して処理されます。
その流体は、pscale
を持つパーティクルで表現され、POPとDOPのフォースによって動かすことができます。
FLIP流体が計算される時、一時的なVelocityフィールドが作成されます。 パーティクルVelocityは、このグリッドに転送され、そのグリッドが流体予測の実行に使われます。 これは、パーティクルがお互いに重なり合って、同じ方向に移動し始めないようにするものです。
Note
上級ユーザなら、この段階で、さらにボリュームVelocityフォースを追加することもできます。
FLIP流体は、FLIP流体をサブステップ化する必要がないなら、SPH流体よりも高速です。 高速移動する衝突物のためにFLIP流体をサブステップ化する必要があるなら、SPHの方が高速になる場合があります。 また、FLIP流体は、システムを不安定にさせることなくパーティクルをお互いに重ねることができるので役に立ちます。 SPHは、パーティクルを密着させた時に飛び出す傾向があります。
FLIP Solverのメリットは、1フレームに対して少しのタイムステップだけで実行されるのに対して、 SPHは、安定化のために1フレームに対して7から20またはそれ以上のタイムステップが必要になります。 FLIPは、2,3のグリッド(ボリュームフィールド)を利用して、流体シミュレーション内で起こりえる瞬間的な衝撃を制御することができます。
はるかに短いタイムステップではるかに少ないポイントを実行できるように、そしてパーティクル間の相互の間隔をランダムにできるように、 FLIP Solverの制御には、色々なフィールドが使われます。 まったく何にも影響なく、いつでも新しいパーティクルを取り込むことができます。 これは、単にSPHでは不可能だったPOP内に非常にたくさんの新しいワークフローを展開します。 例えば、飛沫パーティクルを独自のプロパティアトリビュートと合わせて導入することが今では可能です。
FLIP Solverには、組み込まれたPOP Solverがあり、POPフォースを Particle Velocity 入力またはVolume Sourceエミッター下のインラインに接続することで、
それらのPOPフォースを利用することができます。
v
, targetv
, force
のアトリビュートを更新するPOPノード、さらにパーティクルのカラーや寿命などのアトリビュートに影響を与える他のノードも使用することができます。
また、POP Solverは、パーティクルの老化や刈り取りなどの他のパーティクルの挙動もサポートしています。
FLIP (Splashy) vs APIC (Swirly) ¶
Velocity Transfer パラメータでは、デフォルトの FLIP と APIC のどちらかを選択することができます。 FLIP は、典型的には川や海のような高エネルギーでノイズの大きなFLIPシミュレーションに使用します。この場合は、FLIPノイズによる表面への影響は問題はありません。 APIC は、典型的には高い渦度のシミュレーションに使用します。この場合は、そのシミュレーションの渦巻く性質を維持しつつ、できる限り表面ノイズを軽減する必要があります。 例えば、小さいスケールの流体では、その表面ノイズは、本当に気が散ります。これは溶岩のようなタイプのシミュレーション向けです。 どの Viscous シェルフツールも Velocity Transfer パラメータに APIC を使用しています。
Tips ¶
膨大な数のパーティクルの放出に関しては、Volume SourceがParticle Fluid Emitter DOPよりも非常に高速です。 Populate Containers シェルフからSource From Surfaceシェルフツールを使用してサーフェス放出を、 Source From Volumeシェルフツールを使用してボリューム放出をセットアップすることができます。
シーンをメートル以外の単位でモデリングしている場合、 Spatial Scale が正しく設定されていることを確認してください。 メートルの単位でモデリングしている場合、FLIP Solverは、シーンスケールに必要な精度以上の精度でパーティクルの位置を調整します。 その結果によるパフォーマンスの低下は、ほとんど Reseeding と Move Outside Collision の衝突検出メソッドに影響を与えます。
Use Preconditioner をオフにすると、複数のCPUコアを持つシステムでシミュレーションしている場合には、計算パフォーマンスが良くなる場合があります。
FLIPシミュレーションのボトルネックを検出するには、 Performance Monitor を使用します。 通常では、FLIP Solverは、DOP Networkに対して、ほとんど計算時間を消費します。 もしパーティクルの放出に膨大な時間がかかっているのであれば、上記で記述したように、Volume Source放出の使用が原因と考えられ、 他にもそれに該当するFLIP Source SOPで作成されたポイントのキャッシュも原因と考えられます。
Dop I/O SOPを使用して、巨大なFLIPシミュレーションをディスクに書き出す場合、 Save In Background を有効にすることで、 バックグラウンドでディスクへの書き込みをしながら、シミュレーションを続けることができます。 Compression タブを使用して不要なアトリビュートを削除すれば、ディスク容量と書き込み時間を節約することができます。
サーフェスのディテールの保持するには、 Reseeding を有効にし、できれば Surface Oversampling を2以上に上げてください。
Velocity フィールドは、激しくブラーがかけられ、大きく変化するVelocityに対して閾値処理されます。もしFLIPソルバが爆発しているようであれば、このフィールドは完全に調整可能です。 Pressure フィールドは、非常に高い、非常に低い圧力の領域を監視するために使われ、その流体シミュレーションは、ポイントを乱暴に扱う Velocity フィールドを補正することができます。 これは、キャビテーション(空洞現象)、液体内に発生する空気、液体の漏れに対する制御が主に管理される場所です。 Surface フィールドを使えば、パーティクルがサーフェスから遠くへ流れて拘束された場合に、その過去をテストすることができます。
Particle Separation を上げると解像度が下がり、シミュレーションの処理が速くなります。
通常では、FLIPの Substeps を上げる必要はありません。しかし、他のオブジェクトと衝突する高速に動く流体をシミュレーションする時には、この値を上げることがあります。 また、 Substeps を上げることで、ゆっくり動く粘りのある流体の見た目を改善することもできます。 表面張力に関しては、安定性を維持するためにサブステップをもっと必要とするので例外です。
独自のSticky(粘着性)フィールドを構築するこで、オブジェクト別に粘着性の強さを変化させることができます。
Volume Rasterize Attributes SOPを使えば、sticky
などのPointアトリビュートを取得し、それによって粘着性が変化するボリュームを作成することができます。
そのソルバでは、このフィールドを、そのソルバの Collisions タブの Stick On Collision 機能のコントロールフィールドとして使用することができます。
予期しない衝突の挙動を確認する時のFLIPに対するデバッグのおおまかなやり方は、すぐにFLIP Objectの Collision と Collision Velocity の可視化を有効にすることです。 そうすることで、そのソルバが衝突に対して何を見ているのか実際に確認することができます。
Note
これは、衝突オブジェクトの Show Collision Guide Geometry を有効にするのとは異なります。 FLIP ObjectのCollisionフィールドは、そのボリュームからのサンプリングと、オブジェクトトランスフォームやPoint VelocityからのVelocityフィールドの構築の結果です。
Reseed Particles をオフ、 Jitter Scale を0に設定することで、パーティクルが均一な間隔のグリッドになります。 これは通常では推奨しません。その理由は、ジッターのかかったポイントと同様に効果的にボクセルを埋めなくなり、それらのボクセルが動く度に、 数値誤差が原因で一様でない分布を取得してしまいます(特に Reseed Particles がオフの時)。
Collision Tips ¶
移動する衝突オブジェクトに対して正確なVelocityは、一般的に流体シミュレーションで非常に重要です。特にFLIPではさらに重要です。 不正確な衝突Velocityは、あまり動的な飛沫にならず、またジオメトリから流体が漏れてしまう可能性があります。 DOPが、移動または変形するDOPオブジェクトと一緒に正確な衝突Velocityを計算するには、 DOP Networkは、 Cache Simulation を有効にしなければなりません。 しかし、非常に巨大なFLIPシミュレーションでは、単一のタイムステップのFLIPオブジェクトデータは、キャッシュメモリに入らないことがあります。 この場合では、FLIP Objectの Allow Caching を無効にして、衝突オブジェクトをまだキャッシュ化してる間に、キャッシュからFLIPデータを削除します。
ほとんどのFLIPシミュレーションは、2つ以上のサブステップを使用します。 衝突オブジェクトを変形するには、入力ジオメトリを適切にサブフレームへ補間するようにしてください。 Collision Source SOPは、FLIPで使用できるようにジオメトリの補間とVDB Signed Distanceボリュームの作成を制御します。 変形ジオメトリをFLIP衝突オブジェクトとしてセットアップするには、Deforming Objectシェルフツールを使用します。
衝突オブジェクトを流体シミュレーションに追加する他のオプションは、Collide With Objectシェルフツールでした。 このツールは、Volume Source DOPを使用して、衝突ボリュームを直接シミュレーションに追加します。 しかし、Houdini14からはこのオプションが廃止され、推奨しません。 代わりに、Deforming Objectシェルフツールを使用してください。
Note
Volume Source ベースの衝突を使用する時、パーティクル衝突に対して Move Outside Collision メソッドを 使用しなければなりません 。 なぜなら、衝突が実際のDOPオブジェクトで表現されている時は Particle メソッドのみが動作するからです。
Note
Volume VolumeのデフォルトのVelocityスケールは、1.5です。これは、デフォルトでより大きな飛沫を起こしますが、移動するコンテナに対しては、1に設定してください。
いくつかのケース、特に薄い衝突オブジェクトでは、FLIP Solverは、相対的に低解像度のシミュレーションをするときに適切に衝突を計算しないことがあります。 FLIP Objectの Collision Separation を有効にし、この値を Particle Separation またはそれより小さい値に設定することで、 より高解像度の衝突フィールドが作成されるので、ソルバーが衝突をもっとうまく計算できるようになります。 非常に薄いオブジェクトに対しては、さらに厚いSDFを生成するプロキシ衝突ジオメトリを作成する必要があるかもしれません。
Move Outside Collision は、最も高速な衝突ハンドリングメソッドであり、最も滑らかな飛沫を生成します。 しかし、高速移動する衝突ジオメトリと同様に正確ではありません。 また、 Volume Source ベースの衝突を扱うのは、衝突メソッドだけです。
パラメータ ¶
Substeps ¶
Time Scale
このソルバ内の時間のスケール係数。1
の値は標準速度で、1
より大きい値は、FLIPシミュレーションを速い動きに、1
未満の値は、FLIPシミュレーションを遅い動きにします。
doptime, dopframe,dopsttot, dopttostなどのエクスプレッション関数を使用すれば、グローバル時間とシミュレーション時間を変換することができます。
Note
Time Scale を変えると、シミュレーションのタイムステップだけが影響を受けます。
SOPで計算されたVelocityをシミュレーションに追加することで、Volume Source DOPと衝突する場合は、シミュレーションのタイムステップに合うように入力のVelocityを1/Timescale
でスケールしてください。
Min Substeps
FLIPソルバは、常にサブステップの最小数を順守します。
これは、ごく稀にしか変更する必要はありません。
Max Substeps
FLIPソルバは、シミュレーションをこの値よりも多いサブステップに分割しません。
CFL Condition
CFL Condition は、シーンで必要なサブステップのサイズを自動的に決めるために使用される係数です。 この考えは、パーティクル流体オブジェクト内のパーティクルが指定したサブステップ内で移動できる距離を制御するためのものです。
例えば、 CFL Condition を0.5
に設定すると、ソルバは、指定したサブステップ内で、パーティクルの距離間隔の50%よりも長く移動しないように、各サブステップの長さを設定します。
Particle Advection CFL
パーティクル移流用の CFL Condition 。 この値には、Velocityフィールド内のパーティクル移流の精度にのみ影響するように、全体のソルバの CFL Condition よりも低い値を設定することができます。
Quantize to Max Substeps
有効にすると、フレームを Max Substeps で割ったサブステップが使用されるので、時間が常に1/ Max Substeps の倍数となります。
例えば、 Max Substeps を4に設定し、 CFL Condition が3サブステップだけ必要であれば、 ソルバはフレームを3つのサブステップ(各サブステップは 1/ Max Substeps の倍数に位置します)に分割します。 このサブステップ長の組み合わせは、0.25, 0.5, 0.25(フレームをそれぞれ0-0.25,0.25-0.75,0.75-1の位置に分割)となります。 フレームをサブステップに分割する時、ソルバは、パーティクルの現行状態(パーティクルのサイズとVelocity)も考慮します。
このオプションは、1/ Max Substeps の増分値でファイルにキャッシュ化された入力ジオメトリを再利用するのに役に立ちます。 例えば、ジオメトリが1フレームあたり4サブステップでディスクにキャッシュ化されていれば、そのジオメトリを補間する必要がないように、シミュレーションのサブステップが常に0.25の倍数となるようにすることができます。
Particle Motion ¶
Apply External Forces
Gravity DOPの重力などの標準DOPフォースが、パーティクルに適用されます。
これは、FLIPソルバをより大きなソルバシステムの一部として組み合わせている場合には、オフにするしかありません。
Force Override
有効にすると、このアトリビュートは、パーティクル上でその値が1になっている所のボリュームフォースを無効にし、0になっている所のボリュームフォースを有効にします。 つまり、このアトリビュートが1のパーティクルは、他のパーティクルを参照せずに、弾丸のように飛びます。 しかし、それらの動きは、ボリュームフォースを持つ他のパーティクルも影響を与えます。
Under-Resolved Particles
FLIP Object DOPの Particle Radius Scale とそのボリューム Grid Scale の値に応じて、 個々のパーティクルがグリッド上で未解決になり、圧力計算から“消失”する場合があります。 このパラメータは、ソルバがそのようなパーティクルを扱う方法を制御します:
No Detection
未解決のパーティクルの検出を試みません。
Detect Only
各パーティクル上にfloat値のunderresolved
アトリビュートを設定します。このアトリビュートは、未解決の度合いを意味します。
Treat as Ballistic
underresolved
アトリビュートを設定して、そのアトリビュートを、任意で指定した Force Override アトリビュートと組み合わせて、パーティクルを弾道的(外部の影響を受けにくい)または流体的に扱うかどうか決めます。
Use Extrapolated Velocity
パーティクルが Max Cells to Extrapolate で指定した通りに有効に外挿された値の範囲の外側にない限り、外挿された流体Velocityを使用します。 その有効範囲外のパーティクルに関しては、この設定は、 Treat as Ballistic と同じになります。これは、飛沫の尖りを少なくします。
Kill
完全に未解決のパーティクルをKillします。
Note
Particle Radius Scale / Grid Scale >= sqrt(3) / 2 の場合、パーティクルは決して未解決にはなりません。
Collision Detection
パーティクルと他のオブジェクト間の衝突のハンドリングを制御します。
None
パーティクル衝突検出を実行しないでください。 パーティクルは、圧力計算の結果として衝突を回避するだけですが、 数値誤差が原因で、パーティクルが衝突オブジェクト内に残ってしまう可能性があります。
Particle
パーティクルと他のシミュレーションオブジェクト間のフィードバックを含むパーティクル衝突検出を実行します。 この衝突メソッドも、摩擦と跳ね返りをサポートしています。 これは、最も精度が良いですが、最も遅い衝突メソッドです。
Move Outside Collision
パーティクルを衝突オブジェクトの外側へ動かすことで、衝突検出を実行します。 これは、 Particle メソッドよりも高速ですが、薄いオブジェクトや高速移動するオブジェクトに対しては精度がよくありません。
Kill Unmoveable Particles
Move Outside Collision 衝突ハンドリングを使用した時に、(ローカル最小値で)衝突SDF内側に引っ付いたパーティクルをKillします。
Behavior ¶
Collide with Volume Limits
FLIP Object DOPで指定した Closed Boundaries に対して、パーティクルは、 Volume Limits タブで指定したボリュームの範囲内に存在するように拘束されます。 この設定は、閉じた“タンク”タイプの流体シミュレーションで役に立ちます。
Kill Outside Volume Limits
Volume Limits 外のパーティクルをKillします。
Use Friction and Bounce
FLIP Object DOPの Physical タブで指定したパーティクルの Friction (摩擦)と Bounce (跳ね返り)のサポートを有効にします。 Collision Detection を Particle に設定している場合のみ有効です。
Add ID Attribute
固有のIDアトリビュートを各パーティクルに追加します。
Add Relative Density Attribute
各パーティクルの相対密度を計算します。 このアトリビュートは、各パーティクルのその周辺に存在するパーティクルの数を意味しています。 値が低いほどパーティクルは孤立し、値が高いほどパーティクルは近接パーティクルと密集するようになります。
Age Particles
時間と共にパーティクルを老化させます。
Reap Particles
age
アトリビュートがlife
アトリビュートよりも大きいパーティクルをKillします。
Delete Attributes
シミュレーションの出力では通常では不要な内部アトリビュートを削除します。 このリストからアトリビュートを削除すると、そのアトリビュートがタイムステップの最後に存在します。
Reseeding ¶
Single Pass Reseeding
効率を上げるために、ガイドの再シードとボリューム密度の再シードの両方を1回のパスで実行します。
Note
これには、入力フィールドを慎重にセットアップする必要があるので、セットアップは簡単ではありません。
Only Source Seeding
再シードを無効にしつつ、 Source Surface の内側にあるパーティクルはシードを続けます。 パーティクルを定期的に再シードするとサーフェスにノイズが発生してしまう可能性があり、これは、ゆっくりと移動するシミュレーションで特に目立ちます。 これを有効にすることで、このノイズを軽減させることができます。
Reseed Particles
流体サーフェスを適切に表現するためにパーティクル数を大きく下げたボクセル内に新しいパーティクルを作成し、 パーティクルが非常に密集したボクセル内のパーティクルを削除します。 Reseed Particles は、衝突付近の流体内の空気形成によるポケットを壊さないようにすることができ、 さらに、そこからより滑らかなサーフェスを用意して、ポリゴンメッシュを生成することができます。
Particles Per Voxel
ボクセル毎のパーティクルのゴール数。
Surface Oversampling
パーティクルのゴール数は、それがサーフェスの Oversampling Bandwidth の範囲内の時に、この量でスケールされます。
Oversampling Bandwidth
Oversample at Boundaries が有効な時、サーフェスまたは Surface ボリューム境界から、この数のボクセル内でオーバーサンプリングします。
Oversample At Boundaries
流体ボリューム境界の Oversampling Bandwidth ボクセル内でオーバーサンプリングします。 この設定は、“タンク”タイプのシミュレーションの境界で流体のポケットを壊さないようにすることができます。
Birth Threshold
現行のパーティクル数が、このパラメータの値とパーティクルのゴール数を乗算した値より下回ると、パーティクルがボクセルに追加されます。
Death Threshold
現行のパーティクル数が、このパラメータの値とパーティクルのゴール数を乗算した値より上回ると、パーティクルがボクセルから削除されます。
Random Seed
再シードの時に新しいパーティクル位置を生成するために使用される時間変動のランダム関数を制御するシード。 シミュレーション内の高い周波数の飛沫は、パーティクルの位置から強く影響を受けるので、この値を変えると(例えば、Wedge ROPを使用)、 似たような大きさのモーションを持つ複数のシミュレーションでも、同一のシミュレーションパラメータにもかかわらず、異なる飛沫の挙動を生成させることができます。
Interpolate Attributes
このパターンに一致したアトリビュートすべてが周辺の既存パーティクルから新しく撒かれたパーティクルに追加されます。
この追加は、デフォルトの最近接コピーよりも処理が重いですが、Velocityのようなアトリビュートに対してより滑らかなパーティクルサンプリングが行なわれます。
例えば、流体に対してviscosity
アトリビュートをこのリストに追加すれば、融解と凝固間の推移が滑らかになります。
逆に、異なる粘度を持つ“多位相”の流体に対しては、このアトリビュートを外してください。
Note
色々な Reseeding の値を非常に高い値に設定すると、非常に飛沫のある流体シミュレーション内で時間と共にボリュームが増える流体にすることができます。 Particle Radius Scale または Death Threshold の値を下げると、過剰に密集したボクセルがより速く取り除かれ、ボリュームを減らすことができます。 Surface Oversampling の量やバンド幅を小さくすることでも、この問題を軽減することができます。
Separation ¶
Apply Particle Separation
Velocity予測ステージに関わらず、パーティクルをpscale
アトリビュートよりも近くに寄せることができます。
これが起きる時、内部フォースは、パーティクルを離すことができません。その理由は、Velocity予測は、それらのフォースを削除するからです。
この結果、流体が時間と共に圧縮します。
Separation Iterations
分離緩和ステップを実行する回数。分離の連続フレームは、同じ効果を持つので、この値は、通常では1に設定します。
Separation Rate
パーティクルを目的の分離位置へ動かす距離。この値を小さくすることで、小数値の反復の効果を取得することができます。
Separation Scale
パーティクルが球詰め問題においてpscale
の値では実際に詰めることができないと判断される誤差。
異なる値をテストするには、ボリュームまたはパーティクルのフォースを使わないでFLIP計算を実行し、
どの値で初期パーティクルが目的のボリュームを維持できるのか確認します。
Droplets ¶
Detect Droplets
0から1の範囲のdroplet
floatアトリビュートによって、流体のメインボディから分離するパーティクルを識別します。
パーティクルが完全に水滴の状態に近づいた時、そのパーティクルは、流体フォースからほとんど影響を受けなくなります。
完全に水滴なパーティクルのVelocityは、流体シミュレーションにも寄与しません。
これは、個々に落下するパーティクルの問題を軽減し、非現実的に滑らかな流体サーフェス上に大きな擾乱を起こすことができます。
水滴を有効にすると、飛沫の先端のテンドリル(蔓状の部分)が分割されて、より拡散的な見た目にすることもできます。
Min Particle Density
周囲の流体パーティクル密度が、この値より小さい時、パーティクルのdroplet
の値が1(水滴)になります。
Max Particle Density
周囲の流体パーティクル密度が、この値より大きい時、パーティクルのdroplet
の値が0(流体)になります。
Behavior
Droplet(水滴)パーティクルのハンドリングを制御します。
Blend With Fluid
完全に水滴なパーティクルが流体を再結合する時、そのVelocityは、 Velocity Blend パラメータで指定した通りに、 その水滴のVelocityと既存の流体Velocity間でブレンドされます。
Kill On Detection
完全に水滴なパーティクルを即座にKillします。
Kill At Fluid
流体に再結合する完全に水滴なパーティクルをKillします。
Velocity Blend
Behavior を Blend With Fluid に設定した時に、Droplet(水滴)パーティクルのVelocityと流体のVelocity間のブレンドを制御します。
Vorticity ¶
Add Vorticity Attribute
流体VelocityフィールドのVorticity(渦速度)を計算し、それをパーティクルのvorticity
アトリビュートにミックスします。
Preservation Rate
現在計算されている値にミックスする前の、パーティクルの1秒あたりの保持したい既存Vorticity(渦速度)量。 例えば、0.1の値は1秒に対してVorticity(渦速度)量の10%を維持します。
Mix Method
計算されたVorticity(渦速度)と既存のvorticity
アトリビュート値をブレンドする方法。
Vorticity Scale
計算されたVelocityに適用するスケール。
Rest ¶
Add Rest Attribute
rest
アトリビュートを作成します。このアトリビュートを使用することで、時間軸で流体の位置を追跡することができます。液体シェーダにノイズやテクスチャをマッピングする場合は、これを有効にしてください。
Dual Rest Attributes
メインのrest
アトリビュートから1つ前のrest2
アトリビュートを作成し、その2つのアトリビュートをブレンドすることで、ポップなしで長いシミュレーションを実行することができるようになります。
Frames Between Reset
rest
アトリビュートをリセットする前のフレーム数。
Frame Offset
rest
アトリビュートをリセットするフレーム。シミュレーションをPreroll(プリロール)している場合、Preroll(プリロール)の後までrestアトリビュートの初期化を遅延すると、通常では、良い結果が出ます。
Volume Motion ¶
Velocity Transfer
計算前にパーティクルのVelocityを大元のグリッドに転送してから、それをパーティクルに戻すために使用するメソッドを指定します。
FLIP (Splashy)
計算結果からのVelocityの変更を、 Velocity Smoothing パラメータで指定した通りの少量の現行Velocityと合わせてパーティクルに戻します。 このメソッドは、飛沫が強く、高エネルギーなシミュレーションを表現することができますが、小規模な流体や粘度のある流体では、気が散るほどの表面ノイズを取り込んでしまう可能性があります。
APIC (Swirly)
流体の角運動量を維持するための追加アトリビュートを使用して、Velocityフィールドをパーティクルに直接転送します。 このメソッドは、表面ノイズを少なくしてVorticle(渦巻き)を上手く維持し、その結果、飛沫の少ない渦巻くシミュレーションを生成することができます。 そのため、小規模な流体や高い粘度の流体に効果的です。
この場合は、その転送範囲は、ボクセルサイズに基づいているので、FLIP Objectの Grid Scale を1.5に設定して、 より小さなボクセルを使用することで、小さな流体の詳細度を維持することができます。 より大きな範囲と余分なアトリビュートが原因で、このメソッドは若干遅くなり、 Splashy Kernel よりもメモリを消費します。 さらに、パーティクル全体が常にそのグリッド上で計算されるので、 Under-Resolved Particles オプションは、このメソッドでは無効になります。
Note
Splashy Kernel はVelocity転送の FLIP/PIC メソッドに相当するのに対し、 Swirly Kernel はそれよりも新しい APIC メソッドを使って実装されています。
Force Scale
Velocity予測の結果は、パーティクルVelocityに推奨される変更です。 Force Scale は、この変更をスケールすることができます。 1の値は、パーティクルを目的の新しいVelocityに更新し、0の値は、パーティクルを未変更のままにします。
Velocity Smoothing
パーティクルは、その予測で決まったVelocityの変更、またはその予測から実際の新しいVelocityのどちらかで更新することができます。 後者は、パーティクルVelocityが近隣のパーティクルVelocityとVelocityを多く共有している時に、滑らかになります。
Smooth Surface
時間軸でサーフェスSDFを追跡するのに、より正確なアルゴリズムを使用します。これで停滞または遅く動く液体に対してサーフェスがより滑らかになります。 この改善は、川や滝のような非常に乱れたシミュレーションでは目立たないので、パフォーマンスを若干上げたいのであれば無効にしてください。
Update Surface
パーティクルの位置に合うように、各サブステップの最後にサーフェスSDFを更新する方法を制御します。
None
サーフェスSDFを更新しません。
Advect
サーフェスSDFをVelocityフィールドによって移流させます。これは、 Rebuild よりも高速ですが、 Rebuild ほど精度は良くないです。
Rebuild
パーティクルから全体のサーフェスSDFを再構築します。これは、最も精度が良いですが、最も遅いです。
Note
パーティクルの位置は、計算順の最後で更新されるので、 Update Surface が None に設定されている場合に、サーフェスSDFがパーティクルの位置よりも若干遅れます。
Update Velocity
パーティクルの位置に合うように、各タイムステップの最後にVelocityフィールドを更新する方法を制御します。
None
Velocityフィールドを更新しません。
Advect
Velocityフィールドをそれ自体によって移流させます。これは、 Rebuild よりも高速ですが、 Rebuild ほど精度は良くないです。
Rebuild
パーティクルから全体のVelocityフィールドを再構築します。これは、最も精度が良いですが、最も遅いです。
Note
パーティクルの位置は、計算順の最後で更新されるので、 Update Velocity が None に設定されている場合に、Velocityフィールドがパーティクルの位置よりも若干遅れます。
Volume Limits ¶
迷ったパーティクルが非常に遠いところへ飛んだ時、その結果のボリュームグリッドは、一定のタイル圧縮でさえも、大きすぎて手に負えなくなってしまいます。 このタブでは、最大境界を設定することができます。
Visualize Limits
シミュレーションの最大境界であるガイドを表示します。 Dynamically Resize Fields が有効な場合には、実際のシミュレーションサイズは、たいていこれより小さくなります。
Box Size
最大ボリュームのサイズ。
Box Center
最大ボリュームの原点。
Dynamically Resize Fields
指定した制限内でパーティクルジオメトリが含まれるように、タイムステップ毎にボリュームのサイズを変更します。 そのボリュームの余白は、 Max Cells to Extrapolate で指定したボクセル数で決まります。
Fill New Volume
Volume Limits がフレーム間で変換する場合、このオプションは、そのボリューム内の新しい空っぽの領域にパーティクルをばら撒くことができます。 Use Waterline と Use Boundary Layer は、その新しいパーティクルを作成する方法を制御します。
Use Waterline
FLIP Object が Closed Boundaries を使用している場合、このオプションは、それぞれの該当する境界の水位線より上側を開放するように設定します。 これにより、パーティクルがシミュレーションから潔く抜け出て、その境界による反射を軽減することができます。 また、これは Fill New Volume と Use Boundary Layer に対して Surface Volume の代わりに使用することができます。
Visualize Waterline
水位線平面を表示します。この平面より上側の流体は、閉じた境界から自由に流れ出ることができます。
Waterline
Waterline レベルと Waterline Direction によって水位線平面を定義します。 閉じた境界に沿って、この平面より上側のシミュレーションボクセルが開いた境界として設定されます。 Fill New Volume と Boundary Layer に関しては、その平面が表面を定義します。この平面より上側のパーティクルが表面外と見なされます。
Waterline Direction
Waterline Direction には、水位線平面の“上”方向を指定します。 閉じた境界領域と開いた境界領域との境界線は、 Waterline レベルと Waterline Direction の組み合わせで決まります。
Use Boundary Layer
FLIPシミュレーション周辺に薄い領域を維持することで、無限のタンクの挙動を模倣することができます。 用意したサーフェスとVelocityフィールドに応じてパーティクルを削除したりばら撒くことで、シミュレーション境界での反射を軽減することができます。 その指定したサーフェスより上側にある境界レイヤー( Waterline または Surface Volume のオプションで定義します)に入ったパーティクルは除去されます。 Velocity Volume オプションを使用すれば、そのサーフェスより下側にある境界レイヤーに入ったパーティクルには新しいVelocityが割り当てられます。
Apply Boundary Velocities
Use Boundary Layer がアクティブな時に、 Velocity Volume が Closed Boundaries に沿って自動的に適用されます。 また、このオプションは Velocity Volume (または Waterline を使用した時のデフォルトのゼロVelocity)に応じて、境界レイヤー内のVelocityフィールドを上書きします。 このオプションが無効な時、新しく作成されるパーティクルは、近隣のパーティクルからVelocityを補間します。
Lower Padding
Boundary Layer がシミュレーションボリュームの下側境界から指定した量だけシミュレーションボリュームへオフセットします。
Upper Padding
Boundary Layer がシミュレーションボリュームの上側境界から指定した量だけシミュレーションボリュームへオフセットします。
Surface Volume
用意したSDFによって、境界レイヤー内のサーフェスを維持することができます。そのサーフェスより上側のパーティクルは除去されます。 そのサーフェスより下側のボリュームにはパーティクルがばら撒かれます。 新しいボリューム領域にばら撒かれるパーティクルは、このサーフェスに基づいて作成されます。
Velocity Volume
境界レイヤーと新しいボリュームの中のパーティクルのVelocityには、このVelocityボリュームからサンプリングされたVelocityが割り当てられます。
Collisions ¶
Velocity Scale
入力衝突Velocityをスケールします。例えば、これは、流体上の移動オブジェクトの影響を大きくし、より大きな飛沫を作成します。 この値は、通常では1以上にします。
Note
Transparency を使用すれば、流体上の衝突の全体の効果を小さくすることができます。
Velocity Type
衝突DOPオブジェクトに対して、衝突Velocityを計算するために使用するメソッド。 この設定は、Volume Source DOPによって取り込まれた衝突Velocityに影響を与えません。
Rigid Velocity
オブジェクトの衝突Velocityは、そのオブジェクトをリジッドボディとして扱うことで計算されます。 角速度と線形速度のみが使われ、ローカル変形は考慮されません。
Point Velocity
オブジェクトの衝突Velocityは、ポイント履歴を使用することで、変形を考慮しようとします。 これは、トロポジーが変わらない場合にのみ動作します。
Volume Velocity
オブジェクトのSDF表現を使用して、変形を検出します。 時間軸においてトロポジーを固定する必要はありませんが、接線Velocityを検出することができません。
Surface Extrapolation
流体サーフェスが、この衝突のボクセル距離内にある時、ソルバは、その流体サーフェスを衝突オブジェクトの一部と見なします。 この外挿は、曲率のあるサーフェスに沿って、流体の流れを滑らかにすることができますが、若干、粘着性があります。 この値を小さくすれば、衝突から、より動的な飛沫を作成することができます。特にオブジェクトが流体に入る時がそうです。
Note
この値を0に設定することは、推奨しません。
Volume Fraction Method
ソルバは、衝突ボリュームの小数点評価を使用することで、曲率や傾斜のあるサーフェス周辺の圧力計算の精度を上げます。
Voxel Face Area
衝突ボリュームによって隠れている各ボクセルフェースの数を判断することで、小数点の衝突ウェイトを評価します。 このメソッドは、傾斜のあるオブジェクトを一番滑らかにするハンドリングを用意していますが、ブロック状のオブジェクトが過剰に平滑化されて扱われてしまいます。
Collision Supersampling
各ボクセルに対して衝突ボリュームを複数回サンプリングすることで、小数点の衝突ウェイトを評価します。 このメソッドは、ブロック状の衝突オブジェクトをうまくハンドリングしますが、傾斜のあるサーフェスに対して、間違えた摩擦のようなフォースを取り込んでしまいます。
None
衝突ウェイトを計算しないでください。これは、衝突ウェイトを手動で計算して、より高度に制御するためのものなので、上級ユーザのみが使用するべきです。 通常では、 Volume Velocity 入力に取り付けられたGas SDF To Fog DOPと一緒に使われます。
Samples Per Axis
Volume Fraction Method を Collision Supersampling に設定した時に、軸毎に取り込まれるサンプルの数。 この値を上げると、より正確な評価になりますが、取り込まれるサンプルの合計数は、この数の 3乗 になります。
Transparency
すべての衝突オブジェクトを、この量だけ流体に対して“透明”にします。 流体に対するオブジェクトの効果を小さくすることで、流体がオブジェクトを通過して流れることができます。
Note
Transparency を使用する場合、 Particle Motion タブの Collision Detection メソッドを通常では、 None に設定してください。 そうでない場合、パーティクル衝突検出は、 Transparency の値に関わらず、パーティクルが衝突オブジェクトに侵入することを許可しません。
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調整の量をスケールします。
Tip
Normal Scale を高い値に保持し、 Tangent Scale を下げると、“静摩擦”の効果を作成することができます。流体が衝突オブジェクト周辺では速く流れますが、その表面には粘着性が残ります。
Control Field
この空間的に変化するフィールドによって、その効果をスケールします。これは、衝突フィールドの解像度と一致します。
Viscosity ¶
Note
ユーザガイドのViscosity(粘度)の考察を参照してください。
Enable Viscosity
Viscosityソルバを有効にします。
Solve Viscosity with Adaptivity
このオプションは適応粘度ソルバを有効にします。 これは、表面から遠く離れた流体の圧力値を、もっと粗い近似値に置換します。 通常では、深いほど渦の形状は正確である必要性がないので、これによって圧力の計算時間が大幅に短縮されます。 これは、深くて解像度が高い水槽ほど非常に効果的です。 詳細は、Gas Project Non Divergent Adaptiveノードを参照してください。
主な制限事項は、この適応性は、粗い領域内の細かなディテールを保持しないことです。 しかし、その結果の粗い圧力は、細かなシミュレーション解像度にアップサンプリングされ、非適応ソルバの細かなディテールに近くなるように徐々に平滑化されます。 アップサンプリングと平滑化によって、少し負荷がかかります。 もう1つの制限事項は、適応領域では密度が適切に粗くならないので、現在のところ、適応ソルバは可変密度に対応していません。
Note
圧力の適応性は別に制御されます。
Note
このオプションでは、非適応性の場合よりもパフォーマンスを発揮するために高い粘度と深いタンクが必要です。 これは、粘度射影がシミュレーション時間の大部分を占めていることに気づいた場合にのみ有効にしてください。
Viscosity by Attribute
指定したアトリビュートを使用して、Viscosity(粘度)フィールドを上書きします。
Attribute Name
Viscosity(粘度)の度合いに使用するパーティクル上のfloatアトリビュート。
Mix Method
そのPointアトリビュートと既存のViscotiy(粘度)フィールドをブレンドする方法。
Viscosity Scale
そのアトリビュートの効果を適用した後にViscosity(粘度)フィールドに適用されるスケール。 これは、Viscosity(粘度)の全体的な度合いを迅速に調整するのに役に立ちます。
Float Precision
このパラメータは、Viscosity Solverで内部的に使用される浮動小数点精度を制御します。 Float 32 bit はメモリ使用量が少なく、一般的には Float 64 bit よりも高速です。 しかし、64-bit浮動小数点ほどの余分な精度は、非常に高い粘度または粘度の振れ幅が大きい流体のシミュレーションで必要になることがあります。
Slip on Collision
流体が衝突オブジェクトに近づいた時に、衝突Velocityを流体Velocityに合わせます。 これにより、粘度のある流体を衝突オブジェクトに沿わせて滑らせることができます。
Slip Scale
衝突の接線Velocityにブレンドする流体Velocityの量。 1の値は、その接線Velocityが流体Velocityに完全に一致することを意味します。
Control Field
この空間的な可変フィールドによって効果をスケールします。これは、解像度を衝突フィールドに合わせます。
Density ¶
デフォルトでは、流体はFLIP Objectの Physical タブで設定した通りに、均一な密度を持ちます。 密度が変化する流体をシミュレーションするには、パーティクル単位のDensity(密度)アトリビュートを使用することで、流体の至る所の密度を制御することができます。
FLIPソルバの Volume Velocity 入力に接続された Density フィールドを上書きするなら、任意でDensity(密度)フィールドを編集することができます。
Density by Attribute
指定したアトリビュートを使用して、Density(密度)フィールドを操作します。
Attribute Name
Density(密度)の度合いに使用するパーティクル上のfloatアトリビュート。
Mix Method
そのPointアトリビュートと既存のDensity(密度)フィールドをブレンドする方法。
Density Scale
そのアトリビュートの効果を適用した後にDensity(密度)フィールドに適用されるスケール。 これは、Density(密度)の全体的な度合いを迅速に調整するのに役に立ちます。
Tip
Mix Method を Multiply に設定することで、デフォルトの流体密度をスケールする相対密度値を使用することができます。 例えば、Density(密度)アトリビュートの値が1なら、デフォルトで水の密度になり、0.5なら、その半分の密度の流体を意味します。 相対密度は、 比重 としても知られています。典型的な液体の値は、このサイトを参照してください。 FLIPソルバは、明示的に異なる密度の流体間の境界を監視しないので、過剰な混在を避けるために、密度の比率を大きめにする必要があるかもしれないことに注意してください。
Air ¶
デフォルトでは、空気の体積はシミュレーションされず、完全にないものとして扱います。 この想定だと、液体の動きに基づいて空気の領域が崩れたり膨張してしまいます。 Air Incompressibility(空気の非圧縮性)を強制することで、それぞれの空気の領域を非圧縮性として扱うように液体の動きを制限することができます。
Enforce Air Incompressibility
Divergence Free(発散なし)の拘束が空洞に対しても適用されます。 これによって、空洞が崩れなくなって、上昇する気泡が生成されます。 これは、ブクブク音を立てるウォーターサーバーのように空気と液体のリアルな作用を表現するのに役立ちます。
Note
これは、Pressure Adaptivityでは動作しません。
Apply Moving Collision
コリジョンを動かすことで、空気ポケットを介して液体を間接的に作用させることができます。 空気ポケットの液体表面には、そのコリジョンによって空気ポケットに適用された圧縮が補填されます。
Min Air Region Voxels
最小ボクセル数未満の空気の領域には、非圧縮性が適用されません。 これは、小さな気泡がコリジョンサーフェス沿いに浮かび上がらないようにするのに役立ちます。
Tip
コリジョンコンテナ内でAir Incompressibility(空気の非圧縮性)を強制させる時には、 Dynamically Resize Fields を無効にしてください。 そうしないと、Air Incompressibility(空気の非圧縮性)を強制しても閉じた空気の領域が検出できなくなり、その液体が非圧縮性の影響を受けずに流れるだけになってしまいます。
Note
Enforce Air Incompressibility の機能は、空洞内のVelocityを計算しません。この機能は、空気の体積が圧縮または膨張しないように、単に液体のVelocityを拘束しているだけです。 この手法によって、完全に空洞をシミュレーションするよりもはるかに効率的にシミュレーションを行なうことができます。
Note
Particle Fluid Surfaceのデフォルトの設定を使用した時、流体内に潜り込んでいる気泡がレンダリング過程で消えてしまう可能性があります。 流体内で気泡を維持させるには、Particle Fluid Surfaceの Preserve Bubbles を有効にしてください。
Divergence ¶
デフォルトでは、ボリュームの動きは、発散なしです。 発散なしでは、近隣のパーティクルが区切られず、また一つに収束することもしません。 しかし、パーティクルの間隔を調整したい場合があります。 フォースを使ってこれを行なうことは、難しいです。なぜなら、ボリューム射影は、フォースを取り消すからです。
その代わりに、パーティクル単位のfloatアトリビュートを追加することで、パーティクルが発散する度合いを記録することができます。 プラスの値は、パーティクルが広がり、マイナスの値は、パーティクルが一緒に集まります。
FLIPソルバの Volume Velocity 入力に接続された Divergence フィールドを上書きするなら、任意でDivergence(発散)フィールドを編集することができます。
これを動作させるには、FLIP Objectの Add Divergence Field を有効にしなければなりません。
Diverge by Attribute
指定したアトリビュートを使用して、Divergence(発散)フィールドを上書きします。
Attribute Name
Divergence(発散)の度合いに使用するパーティクル上のfloatアトリビュート。
Mix Method
そのPointアトリビュートと既存のDivergence(発散)フィールドをブレンドする方法。 Divergence(発散)は、フレームが変わってもリセットされません。
Divergence Scale
そのアトリビュートの効果を適用した後にDivergence(発散)フィールドに適用されるスケール。 これは、Divergence(発散)の全体的な度合いを迅速に調整するのに役に立ちます。
Surface Tension ¶
表面張力は、不規則な特徴を平坦化し、水を粒に引き上げます。 これは、ダイナミクスの制御において、表面張力の効果が重力よりも重要なことが多い小さなスケールのシミュレーションで役立ちます。
値が大きい場合には、安定性を確保するために、よくサブステップを上げる必要があります。
表面張力を有効にすると、surfacepressure
フィールドが作成されます。
このフィールドは、表面張力だけでなく、吸引や回避などの効果にも使用することができます。
Enable Surface Tension
surfacepressure
フィールドを有効にします。
Surface Tension
表面張力の大きさ。これは、流体の質量密度に依存するので、質量密度を変更したら、この大きさを変更する必要があります。
同じオブジェクトでも、Particle Separation(パーティクルの離隔距離)を狭くすると(つまり、シミュレーションの解像度を上げると)、同じ品質の結果を維持するには、表面張力の大きさを下げる必要があります。
マイナスの値にすると、表面が壮観な形で引き離されます。
Enable Surface Tension Blur
Blur Radius
Blur Filter
None
ブラーフィルターを適用しません。
Cone:
Gaussian:
Blur Mask Field
Solver ¶
Spatial Scale
シミュレーションのスケールを指定します。この値は、色々なパーティクル操作(特に、SDFアイソサーフェスの値に一致するようにパーティクルを動かす)の許容値と、 Density(密度)とViscosity(粘度)のソルバのデフォルト値を制御します。 シーンがメートルでモデリングされていれば、デフォルト値の1で十分です。 しかし、シーンがセンチメートルでモデリングされていれば、 Spatial Scale を0.01に設定してください。
Tip
DOP Networkを作成する前に、 Edit > Preferences > Hip File Options で正しい Unit Length を選択してください。 そうすれば、FLIP Solverノードを作成すると、そのノードが自動的に正しい Spatial Scale を取得します。
Mass Scale
シミュレーションの質量スケールを指定します。この値は、Denisty(密度)とViscosity(粘度)のソルバ許容値を制御します。 シーンがキログラムでモデリングされていれば、デフォルト値の1で十分です。 しかし、シーンがグラムでモデリングされていれば、 Spatial Scale を0.001に設定してください。
Tip
DOP Networkを作成する前に、 Edit > Preferences > Hip File Options で正しい Unit Mass を選択してください。 そうすれば、FLIP Solverノードを作成すると、そのノードが自動的に正しい Mass Scale を取得します。
Feedback Scale
フィードバックフォースを他のオブジェクトに適用するのに使用されるスケール係数。 ゼロの値は、フィードバックを発生させません。
デフォルトのRBD Objectは、水と同じ密度なので、デフォルトの流体密度とバランスを保つすには、1の値を使用してください。
Extrapolation Mode
ソルバのVelocityを外挿するために使用するメソッドを制御します。
Normal
曲率のある衝突コンテナを適切にハンドリングする高速メソッド。 これが、推奨する外挿メソッドです。
Fast-moving Colliders
高速移動する衝突物と少ない数のサブステップでも精度を上げることができる遅いメソッド。
Automatic Extrapolation By Speed
流体の速度に基づいて外挿距離を自動的に大きくすることで、高速移動する流体のハンドリングを改善します。 たいていの場合では、これは、 Max Cells To Extrapolate パラメータのチューニングを回避します。 最終的な外挿距離は、 Max Cells To Extrapolate よりも大きくなり、速度が計算された値です。
Max Cells to Extrapolate
Velocityフィールドの非流体側のVelocity値で満たされる非流体セルの数。 非常に高速な移動流体と少ない数のサブステップに対して、この値を上げてください。
Use Incomplete Cholesky Preconditioner
このチェックボックスを有効にすると、計算速度を上げるために、圧力システムは Modified Incomplete Cholesky 法を使用して前処理されます。 ただし、これは単一スレッドの処理です、 4個以上のソケットを持つマシンに対しては、上手くマルチスレッド処理を行なう単純な Jacobi Preconditioner (ヤコビ前処理)を使用した方が高速ですが、収束するのに反復回数が6倍以上必要になります。 このチェックボックスを無効なままにすると、(さらに Use Multigrid Preconditioner も無効になっていると)強制的に Jacobi Preconditioner (ヤコビ前処理)が使用されます。
Use Multigrid Preconditioner
このチェックボックスを有効にすると、計算速度を上げるために、圧力システムは Algebraic Multigrid (代数マルチグリッド)を使用して前処理されます。 このオプションでは、収束に必要な反復回数が大幅に少なくなる一方で、各反復の負荷が大きくなります。 通常では、これによって計算が大幅に高速化されますが、Air Incompressibility(空気の非圧縮性)または分散には対応していません。
Use Pressure To Warm Start Solver
前のタイムステップの圧力をこのソルバの初期推測として使用します。 これによって、たいていの場合ではソルバの収束が速くなって、シミュレーション時間が短縮されます。
水槽内の圧力は、上から下に向かって強くなります。 フレームが変わっても、この圧力勾配はどこもほぼ同じように見えるので、このオプションは、圧力を最初から計算し直すのではなくて、前の圧力を開始条件として再利用することを試みます。 これによって、最終圧力を速く見つけることができるようになるので、計算時間が短縮されます。 これは、主に静的なシミュレーションで非常に効果的で、特に深い水槽がそうです。
Solve Pressure with Adaptivity
このオプションは、適応圧力ソルバを有効にします。 これは、表面から遠く離れた流体の圧力値ほど、もっと粗い近似値に置換します。 通常では、深いほど渦の形状は正確である必要性がないので、これによって圧力の計算時間が大幅に短縮されます。 これは、深くて解像度が高い水槽ほど非常に効果的です。 詳細は、Gas Project Non Divergent Adaptiveノードを参照してください。
主な制限事項は、この適応性は、粗い領域内の細かなディテールを保持しないことです。 しかし、その結果の粗い圧力は、細かなシミュレーション解像度にアップサンプリングされ、非適応ソルバの細かなディテールに近くなるように徐々に平滑化されます。 アップサンプリングと平滑化によって、少し負荷がかかります。 もう1つの制限事項は、適応領域では密度が適切に粗くならないので、現在のところ、適応ソルバは可変密度に対応していません。 粘度の適応性は別に制御され、粘度シミュレーションに関しては、圧力よりも粘度の適応化の方が重要です。
Note
これは、Enforce Air Incompressibilityでは動作しません。
Use OpenCL
OpenCLを使用して粘度と圧力の線形システムを計算します。 この設定は、粘度のある高い解像度の流体シミュレーションを高速なGPUで走らせる時に恩恵があります。
Note
OpenCLを使用してPressure計算を実行する場合、 Solve Pressure with Adaptivity を無効にしてください。
Note
以下のCollisionフィールドは、主にガイドシミュレーションの作成に使用します。 ガイドシミュレーションは、Pressure(圧力)とViscosity(粘度)の両方のソルバでのみCollisionフィールドに接続します。 衝突情報を適用する他のすべてのノードは、内部フィールドを使用します。 ガイドフィールドの作成に関する詳細は、Gas Guiding Volume DOPを参照してください。
Collision Surface
Pressure(圧力)とViscosity(粘度)のソルバに接続される衝突サーフェス。
Collision Weights
衝突ウェイトは、Pressure(圧力)とViscosity(粘度)のソルバの精度を改善します。
Collision Velocity
衝突Velocityは、衝突サーフェスでソルバによる流体に適用されます。
Note
以下のフィールドは、主にガイドシミュレーションのFLIPパーティクルを維持するために使用します。 これらのフィールドは、Gas Seed Markers DOPに接続します。
Surface
Project Non-Divergentの計算中に非圧縮性が適用される領域を制限するマスクとして使用されるSDFフィールド。 また、粘度計算中でも同じ目的で使用されます。 これらの2つの計算処理は、(このSDF内で)フィールドがマイナスのボクセルのみを考慮します。
Source Surface
FLIPパーティクルをソースサーフェスにばら撒きます。これは、流体がガイドシミュレーションサーフェスから流れ出るようにさせるのに役立ちます。
Sink Surface
FLIPパーティクルがシンクサーフェスに入った時に除去します。これは、ガイドシミュレーションサーフェスの深くを流れる不要なパーティクルを除去するのに役立ちます。
Guiding Surface
Guiding Velocityフィールドがvel
Velocityフィールドの値を置換する領域を定義するマスクとして使用されるSDFフィールド。
このVelocity置換は、(このSDF内で)Guiding Surfaceがマイナスの領域で実行されます。
Guiding Velocity
Guiding Surfaceフィールドで定義された領域内のvel
Velocityフィールドの値の置換に使用されるベクトルフィールド。
Narrow Band ¶
有効にすると、流体表面付近のFLIPパーティクルのみが維持されます。残りの流体は、ボリューム(例えば、SurfaceボリュームまたはVelocityボリューム)によって表現されます。
流体の深くにあるパーティクルを削除することで、メモリ使用量が少なくなり、流体シミュレーションのパフォーマンスが改善されます。
Note
流体の大部分がボリュームによって表現されるので、 Density by Attribute と Viscosity by Attribute には対応していません。 それらは、 Attribute/Field Pair パラメータを使ってボリュームフィールドにバインドしなければなりません。
Enable Particle Narrow Band
流体表面から Bandwidth の範囲内にある流体のSurfaceボリュームとVelocityボリュームを更新する時には、FLIPパーティクルのNarrow Band(狭帯域)が使用されます。 流体表面から Bandwidth よりも深くにあるパーティクルは、シミュレーションから除外されます。
Bandwidth
FLIPパーティクルのNarrow Band(狭帯域)は、このボクセル幅で維持されます。 非常に高速に移動するシミュレーションで安定性を維持するには、より大きなBandwidth(帯域幅)を必要とします。
Bandwidthにワールド空間単位を使用することは推奨しません。
その理由は、シミュレーションパラメータを調整すると、狭帯域が非常に小さすぎる場合にシミュレーションが不安定になってしまうからです。
他にも、狭帯域が非常に大きすぎる場合にシミュレーションが非効率になってしまうからです。
とはいえ、それが必要であれば、(world_space_bandwidth) / (particle_separation * grid_scale)
のエクスプレッションを使って、目的のワールド空間の狭帯域をボクセル空間に変換することができます。world_space_bandwidth
はユーザが選択し、particle_separation
とgrid_scale
は、 FLIP Object からの参照です。
Attribute Pair SOP
明示的に指定されたパラメータのリストではなく、SOP上のポイントからアトリビュートフィールドのペアを駆動させます。
自動化されたワークフローのセットアップでは、この方が簡単です。
指定したジオメトリ上の各ポイントがアトリビュートペアを表現します。
ポイント上のattribute
とfield
の文字列アトリビュートから、アトリビュート名とフィールド名のペアが用意されます。
Initialization Volumes SOP
新しくソースされるパーティクルのアトリビュートを初期化するためのボリューム。 デフォルトでは、新しくソースされるパーティクルのアトリビュートは、それに呼応したDOPフィールドから初期化されます。 独自の初期化を実行するには、 Attribute-Field Pairs で指定された Field にマッチしたボリュームを含んだSOPを指定してください。
これは、非狭帯域シミュレーションでも機能します。 これは、元のポイント作成時点で新しいパーティクルに外部からアクセスするための方法がないので便利です。 FLIPソルバの’Sourcing'ステージでは、パーティクルは既に移流されています。 'Volume Velocity'ステージでは、新しいパーティクルはまだ作成されていません。
Attribute-Field Pairs
帯域幅より深くにあるパーティクルは除去されるので、それらのパーティクルのアトリビュートを使って液体全体の状態(temperature
、density
、viscosity
など)を表現することはもはや不可能です。
このパラメータでは、ユーザがパーティクルアトリビュートをボリュームフィールドにバインドすることができるので、それらのアトリビュート値をパーティクルが除去された後でもシミュレーションを通じて維持させることができます。
パーティクルが(狭帯域内で)残っている領域では、パーティクルアトリビュートの値は、各サブステップの最初に、その対のフィールドに書き出されます。 パーティクルが除去された液体の内部では、その対のフィールドに保存されている値がサブステップ間で維持され、そのシミュレーションのVelocityフィールドによって移流します。
Note
このペアリングオプションは、名前の付いたフィールドを作成しないので、ユーザ側で、このフィールドを初期化しなければなりません。 さらに、パーティクル上のアトリビュート値を変更しても、そのフィールドに保存されている値は変わりません。 液体ボリューム全体からアトリビュートの値を変更するには、パーティクルアトリビュート値とその対のフィールド値の両方を変更しなければなりません。 例えば、POP Wrangleとそれと同等のエクスプレッションを持ったGas Field Wrangleを使用します。
詳細は、流体の章のNarrow Band(狭帯域)のページを参照してください。
Distribution ¶
FLIPシミュレーションは、パーティクルシミュレーションと同じ方法で分散されます。 つまり、まず最初に空間を分割するために一連のSlice平面を指定します。 各マシンは、そのスライスの範囲にある流体を担当します。
サブステップ毎に、そのスライス境界に沿ってパーティクルすべてが交換されます。 そのため、指定した帯域幅をサブステップ内で移動させたいパーティクルの範囲を網羅するのに十分な大きさにしてください。
すべてのマシンは、それぞれのサブステップサイズと自動的に同期化するので、可変サブステップを使用することができます。
Tracker Address
同期化するためのsimtracker.pyプロセスを実行するマシン。 このフィールドが空っぽの場合、同期化やデータ転送が行なわれません。
Tracker Port
simtracker.pyプロセスを開始する時に指定する通信ポート。
Job Name
この同期化またはデータ交換のイベントを説明したジョブ名。 異なるジョブ名を使用することで、別々のデータ交換と同期化のイベントを別のマシンに分けることができます。
Slice/Peer
このマシンが自身を報告するスライス番号。ジョブ名で繋がっている各マシンには、固有のスライス番号を持ちます。 時々、この番号がオペレーションから推測することができるので、このパラメータは不要になります。
Number of Slice/Number of Peers
同期化するマシンの合計数。時々、この数はオペレーションから決めることができるので、このパラメータは不要になります。
Distributed Pressure Solve
圧力射影をマシンに対して分散させることができます。これは流体の損失を回避し、タンク系のシミュレーションで必要ですが、 川の流れには必要ありません。これは、かなり広いネットワーク帯域幅を必要とするので、非常に大きなシミュレーションにだけメリットがあります。
Parameter Operations
各データオプションパラメータには、それに関連するそのパラメータの動作方法を指定するメニューがあります。
Use Default
Default Operationメニューの値を使用します。
Set Initial
このデータを作成した時だけ、このパラメータの値を設定します。 それ以降のすべてのタイムステップ上では、このパラメータの値は変更されません。 これは、ポジションやVelocityのような初期状態のセットアップに役に立ちます。
Set Always
このパラメータの値を常に設定します。これは、特定のキーフレーム値が時間にわたって必要な時に役に立ちます。 これは、時間にわたってオブジェクトの位置をキーフレームしたり、ジオメトリが変形する場合にタイムステップ毎に SOPのジオメトリを取得するのに役に立ちます。
この設定をパラメータ値に対してローカル変数と合わせて使用することで、時間にわたって値を修正することもできます。
例えば、X Positionでは、$tx + 0.1
のようなエクスプレッションがタイムステップ毎にオブジェクトを右に0.1ユニットずつ動かします。
Set Never
このパラメータの値をまったく設定しません。 このオプションは、このノードを使って1番目の入力に接続された既存のデータを修正する時に非常に役に立ちます。
例えば、RBD State DOPでオブジェクトの質量しかアニメーションさせたくない場合、 Set Never オプションを Mass 以外のすべてのパラメータで使用し、 Mass パラメータには Set Always を使用します。
Default Operation
Use Default に設定した Operation メニューのパラメータに対して、このパラメータが、使用するオペレーションを制御します。
このパラメータは、 Parameter Operations メニューと同じメニューオプションと意味を持ちますが、 Use Default の選択がありません。
Make Objects Mutual Affectors
このノードの1番目の入力に接続されたすべてのオブジェクトが、相互アフェクターになります。
これは、それらのオブジェクトをこのノードに接続する前にAffector DOPを使用して、*
と*
の間にアフェクターリレーションシップを作成する事と同じです。
このオプションは、すべてのオブジェクトをソルバに送って、お互いに影響し合うようにするのに便利です。
Group
オブジェクトコネクタをこのノードの1番目の入力に接続した時、このパラメータを使って、 このノードから影響を受けるそれらのオブジェクトのサブセットを選択することができます。
Data Name
オブジェクトまたは他のデータにデータを追加するために使用する名前を意味します。 Data Name に“/”(または複数)を含めれば、それはサブデータ内側に移動することを意味します。
例えば、Fan Force DOPのデフォルトの Data Name は“Forces/Fan”です。 これは、“Forces”という既存のデータに“Fan”という名前のデータを追加します。 “Forces”というデータが存在しなければ、単なるコンテナデータが作成されて、そこに“Fan”サブデータが追加されます。
異なるデータは、それらを使用する名前に対して異なる要件を持ちます。 非常に稀な場合を除いて、デフォルト値を使用してください。 いくつかの例外は、特定のデータまたは特定のタイプのデータを利用するソルバで説明します。
Unique Data Name
このパラメータを有効にすると、このノードで作成されるデータが既存データを上書きしないように 固有な名前で Data Name パラメータの値を修正します。
このパラメータをオフにすると、同じ名前の2つのデータを追加すると、2番目のデータが1番目のデータを置換します。 各タイプの挙動が必要な場合があります。
オブジェクトにいくつかのFan Forcesを吹き付けたい時に、各ファンが前のファンを上書きしないように、 個々のファンの Data Name を変更して名前の衝突を回避するよりも、 Unique Data Name の機能を使用する方が簡単です。
一方で、オブジェクトに既にRBD Stateデータが追加されていることを知っていれば、このオプションをオフにすることで、 新しいRBD Stateデータが既存データを上書きすることができます。
Solver Per Object
ソルバのデフォルトの挙動は、まったく同じソルバをグループで指定したすべてのオブジェクトに取り付けます。 これにより、パラメータが各オブジェクトに対して同一になるので、それらのオブジェクトをソルバによって1個のパスで処理することができます。
とはいえ、いくつかのオブジェクトは、同時に単一オブジェクトに対してより論理的に作用します。
それらの場合では、$OBJID
エクスプレッションを使用して、オブジェクト毎にソルバのパラメータを変化させたいことがあります。
このトグルを設定すれば、オブジェクト毎に別々のソルバが作成されて、$OBJID
が期待通りに変化します。
Copy Data DOPを使用してパラメータをスタンプする場合にも、この設定が必須です。
入力 ¶
Fluid to Solve
パーティクル流体として進化するシミュレーションオブジェクト。
Particle Velocity
この入力は、パーティクルVelocityが更新された後で、且つ、そのパーティクルVelocityがボリュームフィールドに転送される前に、マイクロソルバを投入します。 つまり、そこが、パーティクルVelocityを操作またはもっと遠くへ配置するソルバを追加するのに理想的な場所になります。
Volume Velocity
Volume Velocity 入力内のソルバは、ボリュームVelocityフィールドが作成された後で、且つ、そのボリュームVelocityフィールドが非分散になる前に、追加されます。 これは、フィールドに影響を与えるマイクロソルバを取り付けるのに最も適した場所であり、マイクロソルバがフォースをVelocityフィールドに追加できる唯一の場所です。
Note
この入力に取り付けられたソルバは、パーティクルを作成または削除しません。
Sourcing (post-solve)
この入力の主な使用方法は、ジオメトリネットワークからパーティクルとボリュームを取り込むVolume Sourceノードを使用して、 パーティクルを追加または削除することです。 詳細は、fluid sourcingを参照してください。
この入力に取り付けられたノードは、シミュレーションネットワークのVelocityフィールドを編集することもできます。 例えば、カスタムフォースをメインシミュレーションステップの 後 に適用することができます。
出力 ¶
First Output
この出力のオペレーションは、このノードに接続している入力に依存します。 オブジェクトストリームがこのノードの入力であれば、その出力も入力と同じオブジェクトを含んだオブジェクトストリーム(しかし、取り付けられたこのノードのデータを持ちます)です。
オブジェクトストリームをこのノードに接続しなかった場合、その出力はデータ出力になります。 このデータ出力をApply Data DOPに接続したり、他のデータノードのデータ入力に直接接続することで、 このノードのデータをオブジェクトや他のデータに取り付けることができます。
Examples ¶
DensityViscosity Example for FLIP Solver dynamics node
このサンプルでは、ソリッドオブジェクトと作用する異なる密度と粘度を持つ2つの流体について説明しています。
FlipColumn Example for FLIP Solver dynamics node
このサンプルでは、流体の色がStaticオブジェクトとの衝突で混色させる方法を説明しています。
SpinningFlipCollision Example for FLIP Solver dynamics node
このサンプルでは、ジオメトリのVelocityベクトルに基づいて、 ジオメトリ上に撒き散らしたポイントから新しいパーティクルを生成して FLIP流体を作成する方法を説明しています。 また、流体用の衝突オブジェクトとして動作するように、 ジオメトリをセットアップする方法も説明しています。
VariableViscosity Example for FLIP Solver dynamics node
このサンプルでは、粘度が変化する3つの流体と移動するオブジェクトの間での作用を説明しています。
See also |