On this page |
PressureとVelocityは、Ocean Spectrumなどの外部ソースからシミュレーションに注入することができます。 この目的のために、FLIP Solver SOPノードには Boundary Flow 入力が用意されています。 Ocean Spectrumのセットアップとそのソルバの4番目の入力のおかげで、誘導させた海の波のシミュレーションを作成することができます。
Ocean Spectrumのセットアップ ¶
Ocean Spectrumは、パーティクルを動かすVelocityフィールドを作成します。 パラメータ設定は提案にすぎません。波を作成する方法のヒントとしてお読みください。 様々な設定を自分なりに自由に試してください。
-
Ocean Spectrum SOPノードを追加して、パラメータエディタを開きます。
-
十分なディテールが得られて小さい波も得られるように Resolution Exponent を
8
に設定します。このパラメータは、スペクトルの品質レベルと見なすことができます。 -
Ocean Spectrumのスケールは、 Grid Size によって制御されます。この値がドメインのXZサイズより小さい場合、スペクトルはタイル化され、繰り返しやスケールのミスマッチが目立ってしまいます。ここでは値を
35
に設定し、ドメインのXZ平面全体を覆うようにします。
Wind ¶
-
Wind タブを開きます。
-
Spectrum Type を Philips に設定します。
-
任意: Direction を
90
とか他の角度に設定します。 -
Speed に
8
m/sと入力します。 -
Directional Bias を
3
に変更して、様々な方向に動く縦横の波の一部を除去します。 -
Directional Movement を
0.3
に設定して、風の反対方向に動く波の数を増やします。このパーティクルの逆流が、前進するパーティクルと衝突して、砕け波を生成します。
Amplitude ¶
ここで関係のあるパラメータは Scale です。 Scale が大きすぎると、例えば、波の高さと速度が食い違うなど、望ましくない効果になることがあります。
-
Scale を
1.4
に設定します。
Ocean Evaluateのセットアップ ¶
Ocean Evaluate SOPノードを追加して、その2番目の入力をOcean Spectrumの出力に接続します。
Ocean Evaluateノードの1番目の入力はrequired(必須)とタグ付けされていますが、ここに変形ジオメトリを追加することは必須ではありません。
最後に、Ocean Evaluateノードの出力をFLIP Solverの4番目の入力(Boundary Flow
)に接続します。
この接続は、波のVelocityやPressureをFLIP流体パーティクルに転送します。
Geometry ¶
スペクトルのルックを評価するには、 Preview Grid をオンにします。 さらにOcean Evaluateノードの Render/Display フラグをオンにすると、プレビューグリッドが表示されます。 これで、スペクトルを微調整できるようになります。
Volumes ¶
-
Surface SDF をオンにします。
-
Velocity をオンにします。
-
Hydrostatic Pressure をオンにします(境界の Type が Velocity Driven の場合、その必要はありません)。
水平方向の Size 値はドメインの寸法(ここでは20mx20m)よりも大きくする必要があります。
-
Size.X と Size.Z を
25
、 Size.Y を15
に設定します。
Uniform Sampling により、ボリュームのボクセルが必ず立方体になります。
By Size を選択して、 Div Size パラメータのロックを解除します。
値が小さいほどディテールが多く作成されますがシミュレーションが遅くなります。
値は約0.1
で十分です。
流体のセットアップ ¶
FLIP Container SOPノードは、シミュレーションドメインの寸法と解像度を定義します。 ドメインは、例えばXZ平面で20mx20mなど十分な大きさにしてください。 さらに、高い波をとらえられるほど十分な高さを設定してください。 10m程度の値から始めてみましょう。 Domain ▸ Size パラメータを変更する代わりに、Box SOPノードをコンテナの入力に接続するのも良いでしょう。 ドメインの寸法は、ジオメトリノードを介した方が制御しやすいかもしれません。
Note
SOP FLIP流体の場合、ドメインは必ずしもボックス形状である必要はありません。 球や円柱さらには変形するシェイプなど、閉じたジオメトリであれば、ほぼすべてのジオメトリでドメインを定義することができます。
Particle Separation は、流体の解像度と、最終的にはパーティクルの数を決定します。
値が小さいほど、最終的に取得するボクセルとパーティクルが多くなります。
ボクセルとパーティクルが多くなることはつまり、シミュレーション時間が長くなり、メモリ使用量も増えることになります。
その代わり、ディテールと小さい波も多くなります。
ドメインのサイズを考えると、プレビューには0.2
から0.1
程度の値が適切で、シミュレーション時間も短くて済みます。
最終バージョンでは、0.05
を使用します。
-
FLIP Solver SOPを追加します。
-
コンテナの3つの出力を、ソルバの最初の3つの入力に接続します。
-
Ocean Evaluateノードの出力を、FLIP Solverノードの4番目の入力に接続します。
-
Boundary Behavior セクションに移動します。最も重要なのは使用したい Type で、 Velocity Driven または Pressure Driven を選択します。このシーンには“正解”も“不正解”もなく、 Type はほとんど好みの問題です。 Pressure Driven を使ったシーンは、乱れが大きく、飛沫も多い傾向があります。
Note
外部のVelocityまたはPressureのソースを使用するシーンでは、ソルバの Waterline オプションをオフにしてください。
ノードの青い Display/Render フラグをオンにすると、Houdiniがスペクトル波に基づいて水面を作成します。 ドメインの外側を取り囲むパーティクルの帯域も識別できます。 この領域に、新しいパーティクルがソーシングされます。 パーティクルは、ドメインの内部にぶつかると、削除されます。 この出たり入ったりの流れが平衡を作り、(別のソースからパーティクルが追加されない限り)シミュレーションを通してパーティクル数をほぼ一定に保ちます。
Note
パーティクルをサーフェス化すると、ドメイン周囲のソース帯域もサーフェス化され、メッシュが広がります。 そのソース帯域を削除したいのであれば、SOPのクリップ機能を使用してください。
パーティクルシミュレーションを保存する ¶
流体をシミュレーションして、その結果をコンピュータのメモリにキャッシュ化することができます。 FLIP Solverのデフォルトのキャッシュ上限は5,000MBで、通常では長いシミュレーションや複雑なシミュレーションには不十分です。 プロジェクトを終了すると、その結果も失われます。 十分なRAMがあり、シミュレーションをコンピュータのメモリ内に保存したい場合は、以下の操作を行ないます:
-
FLIP Solverの Simulation タブを開いて、 Cache Memory (MB) の値を上げます。
お勧めは、シミュレーションをディスクに保存することです:
-
ソルバの後にFile Cache SOPノードを追加します。
-
その入力を、ソルバの1番目の出力に接続します。
-
Base Folder のエントリを維持する場合は、
geo
下のプロジェクトディレクトリ($HIP
)にキャッシュファイルがあります。 -
Save to Disk (UIがロックされます)または Save to Disk in Background (UIが反応できる状態になります)をクリックします。
-
Load from Disk が自動的にオンになり、タイムラインをスクラブすると、ビューポートで結果を確認することができます。
Note
File Cacheは、1番目の出力からパーティクルのみを保存します。 コンテナおよび衝突情報もキャッシュ化したい場合は、各出力にFile Cacheノードを追加する必要があります。
シミュレーション結果 ¶
波が動いたり砕けたりするのを観察することができます。 波はドメインの境界で消えてなくなり、新しいパーティクルがドメイン周囲のソース帯域からソーシングされます。 以下のビデオは、 Type を Pressure Driven に設定したシミュレーションの例です。
このクリップでは、 Type は Velocity Driven です。波の飛沫が減り、海面が穏やかになっています。
See also |