On this page |
岩にぶつかって飛沫を上げながら砕ける波のクローズアップ(寄りショット)が必要だとしましょう。 通常、そのような場合には、波の動きを表現するために周囲の海の大部分をシミュレーションします。 しかし、最終的なショットで必要なのは、シミュレーションした水タンクの20%ほどだけです。
従来のワークフローでは、少ないパーティクル数でテストシミュレーションを実行します。 その後、解像度を上げて小さい構造をとらえます。 この方法では、映らない部分のシミュレーションにクック時間の大半が使われます。 HoudiniのSOP FLIP流体には、低解像度のテストから高解像度バージョンを作成することができる便利な方法が用意されています。
SOP FLIP流体では、水タンクを使用して、波の全体的な動きと境界条件をシミュレーションします。 この情報を第2ソルバに転送することで、興味のある領域の高解像度バージョンを取得することができます。
低解像度のセットアップ: ジオメトリ ¶
このサンプルシーンには、水タンクと岩盤があります。低解像度のガイドオーシャンセグメントは、Ocean Spectrumから作成されています。 そのドメインから始めます。
-
Box SOPノードを作成し、 Size を
30,7,15
に設定します。 -
FLIP Container SOPノードを追加し、それをBox SOPの出力に接続します。
-
岩オブジェクトを追加します。ジオメトリをインポート、または、Houdiniモデルを使用してください。オブジェクト内側のパーティクルを除去するには、そのモデルが閉じていて、コンテナの底部と交差している必要があります。
-
必要に応じて、岩オブジェクトをスケールさせたり回転させます。
-
FLIP Collide SOPノードを追加して、その最初の3つの入力をFLIP Containerノードの呼応する出力に接続します。
-
岩オブジェクトをFLIP Collideノードの4番目の入力に接続します。
以下の画像では、ドメインのアウトラインと岩があって、そのドメインのアウトラインの底部が岩と交差しているのが確認できます。
低解像度のセットアップ: Ocean Spectrum ¶
流体サーフェスは、ソルバに接続されたOcean Spectrumを介して作成されます。 VelocityやPressureの情報がFLIPパーティクルに転送され、シミュレーションを駆動します。
-
Ocean Evaluate SOPノードから始めます。
-
Geometry タブの Preview Grid をオンにすると、変更後の影響を確認することができます。
-
Volumes タブを開きます。
-
Surface SDF をオンにします。
-
Velocity と Hydrostatic Pressure をオンにします。後者のオプションは、ソルバのデフォルトのPressure境界にのみ関連します。圧力駆動のシミュレーションの方が乱れやすい傾向があります。
-
Size にはドメインの寸法(ここでは
30,7,15
)を使用すると良いでしょう。各値に5
ユニット分を追加すると安全です(35,12,20
)。 -
Uniform Sampling ドロップダウンメニューから、 By Size を選択します。
-
Div Size を
0.15
に設定します。
Ocean Spectrum SOPは海の全体的なダイナミクスや波の高さに影響します。
-
Ocean Spectrumノードを追加します。
-
その出力をOcean Evaluateノードの2番目の入力に接続します。
-
Resolution Exponent を
8
に変更して、より多くのディテールをとらえます。 -
Wind タブを開きます。
-
Spectrum Type を Philips に変更します。
-
岩が配置されている場所に応じて Direction を調整し、波が岩の方に動くようにします。このシーンでは、値は
180
です(マイナスX方向)。 -
Speed を
6
に設定して、サーフェスを波立たせたり乱したりします。 -
Directional Bias を
6
に変更して、調整した Direction に沿ってより多くの波が動くようにします。 -
Amplitude タブを開いて Scale を
2
に設定します。波の高さが合わない場合は、この値を増減します。
低解像度のセットアップ: ソルバ ¶
FLIP Solver SOPはセットアップの中核要素で、実際のシミュレーションを実行します。
-
FLIP Solverノードを追加します。
-
その最初の3つの入力と、FLIP Collideノードの出力を接続します。
-
4番目の入力を、Ocean Evaluateノードの出力に接続します。
-
FLIP Containerに移動して Particle Separation を右クリックします。メニューから、 Copy Parameter を選択します。
-
Setup タブで、 General ▸ Particle Separation に移動し、オンにします。
-
その値を右クリックして、 Paste Relative Reference を選択します。これで、2つのパラメータが接続されます。コンテナの値を変更すると、ソルバの値が自動的に更新されます。
Note
シミュレーションを行なう前に、シミュレーションとキャッシュ化の章を読んでください。
以下で、パーティクル数が約350,000の低解像度シミュレーションの結果を確認できます。
高解像度のセットアップ: ドメイン ¶
考え方は、岩付近の対象の領域を定義して、既存のベースシミュレーションから高解像度クローズアップを作成するものです。
-
Box SOPノードをもう1つ作成します。
-
ディテールを加えたい対象の領域を特定します。Box SOPをスケールして、その領域に移動します。
-
2つ目のFLIP Containerノードを追加して、 Particle Separation を
0.025
に設定します。 -
Box SOPをそのコンテナの入力に接続します。
高解像度のセットアップ: 衝突 ¶
高解像度バージョンには、独自のFLIP Collideノードが必要です。デフォルトの設定を使用できます。
-
FLIP Collideノードを追加します。
-
その最初の3つの入力をコンテナの出力に接続します。
-
岩オブジェクトをCollideノードの4番目の入力に接続します。
高解像度のセットアップ: ソルバ ¶
2つ目のソルバは、指定したセグメント内で高解像度バージョンをシミュレーションします。この新しいソルバは、1つ目のソルバと接続することで、そのソルバからの情報を取得します。
-
FLIP Solverノードを追加します。
-
その最初の3つの入力と、FLIP Collideノードの出力を接続します。
-
新しいソルバの4番目の入力を、既存の低解像度ソルバの1番目の出力に接続します。
-
高解像度コンテナを選択して、 Particle Separation を右クリックします。メニューから、 Copy Parameter を選択します。
-
高解像度ソルバの Setup サブペインに移動します。
-
Particle Separation をオンにします。
-
Particle Separation を右クリックして Paste Relative References を選択し、2つのパラメータ間の接続を確立します。
Note
シミュレーションを行なう前に、 キャッシュ化 の章を読んでください。
高解像度のオーシャンセグメントの結果がこちらです:
See also |