Houdini 20.0 流体

Whitewater (SOP)

On this page

概要

SOPベースのWhitewaterは、SOP FLIP流体ワークフローを拡張したものです。 このシステムは、スケール依存ではなく、パーティクル数を考慮する必要なくWhitewaterの物理的な量を制御することができます。 低解像度で作業してそこから適切な設定を探り、高解像度パスでもその設定を再利用できるようになりました。 SOP版Whitewaterシステムは、Foam(泡沫)、Spray(飛沫)、Bubbles(気泡)の同時生成をサポートしています。

Image courtesy of Igor Zanic.

Whitewaterの寿命

ソルバは、新しいWhitewaterパーティクルの発生を制御し、Whitewater Sourceノードで作成したEmission(放出)ボリュームを使って、その放出量を決定します。 Limit Emission を有効にすると、現在のWhitewaterパーティクルの放出量も考慮して、過度な放出を回避します。

同様にパーティクルの老朽化処理と死亡処理もソルバで制御します。シミュレーションが進むと、Whitewaterは普段どおりに年を取ります。 しかし、パーティクルの寿命が規定されているわけではありません。 代わりに、死亡の確率がパーティクル毎に現在の状況を考慮しつつ動的に計算されます。パーティクルの死亡確率の決定は、以下の要因で考慮されています:

  • age - 古いパーティクルほど死亡しやすいです。

  • depth - Depthを可変させれば、Whitewaterの死亡確率も Aging Rates の値に応じて変わります。

  • density - Erosion(侵食)が有効な時、近隣パーティクルのWhitewater密度も考慮して死亡確率を上げます。

上級ユーザなら、deathchance Pointアトリビュートにアクセスすることで、パーティクルの寿命をもっと細かく制御することができます。

Note

Lifespan といった他の要因は無視されます。 Lifespan はWhitewaterパーティクルの統計的平均寿命を意味します。

ワークフロー

ネットワークエディタ内のジオメトリレベルで⇥ Tabを押して Whitewater Configure を配置すると、Whitewaterを作成するための4個のノードが生成され接続されます。 これは、3個のWhiterwater系ノードの繋げ方が分かる便利な開始点となっています。

  • Whitewater Sourceノードは、Whiterwaterシミュレーション用のEmission(放出)フィールドを生成します。

  • Whitewater Solverノードは、SOPネットワーク内でWhitewaterシミュレーションを設定して構成します。

  • Whitewater Post-processノードは、レンダリング用のWhitewaterシミュレーションを用意します。

  • File Cacheノードは、レンダリング前にシミュレーションをキャッシュ化すべき旨を示したリマインダーとして役に立っています。

サンプル

⇥ Tabを押して FLIP Configure Beach Tank を配置することで、非常に単純なWhitewaterシミュレーションをすぐに生成することができます。 これは、まず最初に始める時に見るべき便利なサンプルで、FLIP流体の生成方法とWhitewaterのFLIPシミュレーションへの適用方法が分かります。

Whitewaterソース

Whitewater用のパーティクルの放出には、いくつか色々な方法があります。 Whitewater Source SOPSources タブでは、以下のオプションが利用可能です。

Curvature

パーティクルのVelocityとサーフェス法線間の角度を使用して、放出の有無を計算します。 その角度が Max Velocity Angle の値未満の場合にWhitewaterが放出されます。 これによって、波の先端箇所にのみWhitewaterが生成されます。

Acceleration

流体のVelocityの変化率に基づいて放出の有無を計算します。 これは、パーティクルが既存の流体部分に再流入している領域(例えば、砕けそうな波が落下し始める時)を検出します。

Vortcity

Velocityボリューム内の回転の大きさを見て、流体が逆巻いている領域を特定します。 通常、これは表面よりもっと深いところで発生します(例えば、波が砕ける時)。

Pressure

圧力勾配とサーフェス勾配間の整列具合に基づいてパーティクルを放出します。 この2つの勾配ベクトルが反対方向を向いていれば、穏やかな静水となり、何も放出されなくなります。 しかし、波が砕けるとすぐに圧力勾配は同じ方向を向いて、パーティクルが放出されます。

Splash

ポイントに直接作用し、相対密度を使用します。 高密度とは、密に詰め込まれ隣接パーティクルが近い状態のパーティクルを指します。 一方で、低密度とは、パーティクルが隣接パーティクルから孤立している時を指します。 以下の例では、パーティクルは、相対密度が低い領域で放出され、密集している領域では放出されていません。

変形ソース

Whitewaterのソーシングのもう1つのメソッドが変形ベースの放出です。 このメソッドは、流体サーフェスのStretch(伸び)、Squish(縮み)、Surface Scale(スケール)を特定します。 Stretchは、指定した方向に沿ったサーフェスの膨張に該当します。 Squishは、指定した方向に沿ったサーフェスの収縮に該当します。 Surface Scaleは、全方向を考慮したサーフェスの収縮(マイナス値)または膨張(プラス値)の量に該当します。 これらのオプションは、Whitewater Source SOPDeformation Sources タブにあります。

Squish

収縮したサーフェスの領域でパーティクルを放出します。 例えば、サーフェスがつまみ上がっている箇所に小さな波紋が出来ているのが分かります。

Stretch

サーフェスが伸びている領域でパーティクルを放出します。

Surface Scale

全方向でのサーフェスの収縮または膨張の度合いに基づいてパーティクルを放出します。

Whiterwaterのビジュアライゼーション

Whitewater Sourceノードの Visualization タブは、アクティブになっているどの放出タイプに対してもビジュアライゼーションを有効にすることができます。 以下の例では、 Curvature (赤)、 Acceleration (緑)、 Deformation (青)のビジュアライゼーションを表示しています。 表示している色は、占有度に基づいて選んでいます。 そのため、この例では、緑の領域は、Accelerationベースの放出がCurvatureやDeformationよりも占有されていることを意味しています。 これは、その放出が他の基準によってアクティブにされないことを意味しているわけではありません。 ただ単にそのフレームで最も占有されていることを表示しているだけです。

Tips

  • デフォルトでは、このノードの1番目の出力から、emitsurfacevelすべてが出力されます。 しかし、emitフィールドのみが出力されるように選択して、それだけをキャッシュ化してディスク容量を節約するができます。 このオプションを有効にするには、 Fluid Fields タブの Output Fluid Fields チェックボックスをオフにします。

  • ジオメトリを4番目の入力に接続することで、 Extra Sources 機能を有効にすることができます。 この4番目の入力の接続によって別のWhitewaterソースを指定することができ、それらのポイントがシミュレーション用のEmissionボリュームに変換されます。

  • Whitewaterが十分でない、または、多すぎる場合、ソーシングの調整を試みてしまうかもしれません。 しかし、たいていの場合、FLIPシミュレーションの方を再調整する方が良いです。 その理由は、運動量とエネルギーは大元のシミュレーションから取得され、それがセカンダリシミュレーションに転送されるからです。

  • デフォルトの範囲が特定のシーンに適さない場合、様々なソースの隣りにある Compute Range From Data ボタンをクリックすることで、初めに試すのに良い値を得ることができます。それらの値はまだ調整する必要がありますが、 Min 値と Max 値には良い評価が得られるはずです。

  • 生成されたパーティクルをプレビューするには、 Visualization タブでビジュアライゼーションを有効にして、4番目の出力を使用します。これは、ソースタイプのビジュアライゼーションを表示します。

  • Output Emission Attributes チェックボックスを有効にすることで、ポイント上のアトリビュートをそのままエクスポートすることもできます。これらのアトリビュートは、FLIPシミュレーションから取得されたそのままのアトリビュートです。

  • Sources タブと Deformation Sources タブのすべてのソースは、 Masks タブの影響を受けます。 Extra Sources は影響を受けません。

Whitewaterソルバ

シミュレーション内のWhitewaterの量を制御する方法がいくつかあります。 以下には、よく使用されている方法をいくつか載せています。

Whitewater Solver SOPSetup タブの Whitewater Scale パラメータは、隣接Whitewaterパーティクル間の間隔を制御します。 このパラメータを下げると、シミュレーション内のパーティクル数が(3次スケールで)増えます。 例えば、0.1*2の値は、パーティクル数が8で割った数になります。 1枚目の画像は、 Whitewater Scale 適用前の600,000パーティクルを示し、 2枚目の画像は適用後の75,000パーティクルを示しています。

Whitewaterの量を制御するもう1つの方法は、Whitewater Solver SOPEmission タブにある Emission Amount パラメータを使用する方法です。 このパラメータは、放出されるWhitewaterの量に対する単純な乗数(線形スケール)です。 そのため、放出されるパーティクル数を半分にしたいのであれば、0.5の値を使用します。 1枚目の画像は、0,5の値を適用前の600,000パーティクルを示し、 2枚目の画像は適用後の300,000パーティクルを示しています。

風は、Whitewater内のSpray(飛沫)パーティクルにのみ影響します。 Spray(飛沫)パーティクルが水面から上昇すると、Whitewater Solver SOPForces タブで定義された風によってそのパーティクルが運ばれます。 このSpray(飛沫)パーティクルをもっとリアルな挙動にするための Wind Shadow オプションも用意されています。 Enable Collider Shadow チェックボックスは、コリジョンジオメトリを使用して、風がSpray(飛沫)パーティクルに影響を与えないようにすることができます。 この場合、風はコライダーによって遮られ、パーティクルは単に重力に従います。 Enable Water Shadow オプションも用意されています。 このオプションは、水面(例えば、波)を使用して、風がSpray(飛沫)パーティクルに影響を与えないようにすることができます。

この例では、Spray(飛沫)が黄、Foam(泡沫)が青、Bubbles(気泡)が紫です。 パーティクルが波の背後に移動すると、そのパーティクルは風で運ばれなくなり、水面に線形的に落下します。

他のフォースに関する情報は、DOP版Whitewaterのヘルプページを参照してください。

Foam Erosion(泡沫の侵食)

Whitewater Solver SOPFoam タブの Enable Erosion を有効にすることで、Foam(泡沫)を侵食することができます。 これは、密度が濃い領域のFoam(泡沫)を維持し、疎らな領域のFoam(泡沫)を侵食します。 このセクション内のパラメータは、Foam(泡沫)が消える早さとWhitewaterが侵食から守られる密度を設定することができます。 以下の図は、 Erosion Strength0.5*100Preservation Strength0.5*0の前と後を示しています。

この機能は、大量のWhitewaterが放出されていて、ディテールのない大きな白いパッチのように見え始めているシミュレーションで役に立ちます。 Foam Erosionを有効にすると、より多くのパーティクルがより早く消えて、水面が見えるほどの穴がもっと多く生成することができます。

Tip

Visualization タブの Relative Density モードを有効にすると、Foam Erosionの設定に役立ちます。

Repellant(撥水)

Enable Repellants を有効にすると、Whitewaterを押し離すRepellant(撥水)パーティクルを作成して維持することで、有機的な細胞状の泡沫構造が出来上がります。 これらのコントロールは、Whitewater Solver SOPFoam タブにあります。 下図では、Repellant(撥水)パーティクルは赤いドットで表現されています。

シミュレーションができるだけ有機的に見えるように、Repellant(撥水)パーティクルの半径やノイズに多くのバリエーションが適用されています。 これは、Whitewaterに良い感じの細胞状パターンを作成するのに役立ちます。

Note

赤いドットは、このサンプルで異なるサイズと異なるノイズパターンをもっと簡単に示せるように、Repellant(撥水)パーティクルの中心を表示するために使用されている単なるビジュアライゼーションです。

Repellant(撥水)に関する情報は、DOP版Whitewaterのヘルプページを参照してください。

Tips

To...Do this

泡の塊がもっと早く消えるようにする

Foam タブの Erosion Strength パラメータを上げます。

パーティクルが非常に早く表面上に投影されないようにする

Foam タブの Adhesion セクション内のデフォルト設定は、大規模シミュレーション用になっています。 Stiffness by Depth ランプを下げるといったこれらのパラメータを調整すると、この問題が解決され、パーティクルがもっと自然な感じで表面を浮かぶようになります。

相対密度などのアトリビュートを視覚化する

Visualization タブの Mode ドロップダウンメニューを使用することで、 DepthSpeedStateRelative Density などのアトリビュートを視覚化することができます。

Whitewaterのポスト処理

Whitewater Post Process SOPは、レンダリング用のWhitewaterシミュレーションを用意します。 このノードは、修正された Particles を出力したり、Velocityフィールドと一緒に Fog Volume を出力したり、均一ボリュームとしてレンダリング可能なWhitewaterシミュレーションの Mesh 表現を出力することができます。

Particles

Whitewaterのデフォルトの出力。 これは、Whitewateシミュレーションの修正されたパーティクル表現を出力します。 このオプションは、もっと細かな飛沫のディテールが必要な場合(例えば、岩に打ち砕かれる波をシミュレーションしたい場合)に役立ちます。

Fog Volume

Whitewaterシミュレーションのボリューム表現をVelocityフィールドと一緒に出力します。 このオプションは、光がWhitewaterを通過し、そのWhitewaterに吸収されるようにしたい場合に役立ちます。

Mesh

Whitewaterシミュレーションのメッシュ表現を、転送されたVelocityを付けて出力します。 このオプションは、泡沫あり領域となし領域間の境をもっとはっきりさせたい場合に役立ちます。

Tips

  • Whitewater Post Process SOPDomain タブにある Flatten Outside Bounding Box オプションを使用することで、 Whitewaterパーティクルをdepthアトリビュートでオフセットされた水位に平坦化することができます。 これは、プロシージャルなオーシャンシミュレーションにブレンドさせたい流体シミュレーションがある場合に役立ちます。 これを有効にすると、Whitewaterが他のパーティクル流体の表面より上に浮いているように見えなくなります。

流体

初心者向け

パーティクル流体(SOP)

粘度のある流体(SOP)

最適化(SOP)

FLIP構成ツール(SOP)

パーティクル流体(DOP)

粘度のある流体(DOP)

オーシャン(DOP)

最適化

  • 流体の圧縮

  • 流体シミュレーションの分散

    Distributeシェルフツールは、HQueueを使用して複数マシンのファーム上で並列処理ができるように、オブジェクトのシミュレーションネットワークをセットアップします。