泡(Foam) と 飛沫(Splashes)



このページでは、液体(Liquid)シミュレーションに泡や飛沫を追加するためのチュートリアルを紹介しています。
===== 手順 =====a

可能であれば、エミッタを現実世界と同じスケールで構築してください。Phoenix FDは現実をシミュレートしてエフェクトを作成するため、実世界の単位で作業すると作業がはるかに簡単になります。



このチュートリアルを行うには、シンプルなLiquidシミュレーションをまず作成する必要があります。


Simulatorノードを選択した状態で、Foamタブに移動し、Enable FoamをONします。Particle Shaderを生成するかどうかを確認するメッセージボックスが表示されます。[Yes]を選択します。


アウトライナーには新しくシェーダ、セット、セット内のパーティクルグループの3つのアイテムが現れました。


シェーダノードの名前をphx_foam_shader_01に変更します。シェーダはフォームパーティクルのシェーディングパラメータを含んでいます。パーティクルのレンダリングモードを選択したり、サイズや数を調整したり、モーションブラーを有効/無効にすることができます。


セットの名前をphx_foam_setに変更します。このセットは、レンダリング時にシェーダがシェーディングを担当するパーティクルグループを指定するために使用されます。場合によっては、同じシェーダの影響を受ける複数のパーティクルグループや、同じパーティクルグループに影響を及ぼす複数のシェーダを持つことができます。

phx_foam_setを展開し、内部のノードの名前をpg_foamに変更します。シミュレーションでは、パーティクルグループをパーティクルの参照として考えることができます。


Phoenix FDシミュレーターが出力できるパーティクルには、Liquid、Foam、Splash、Mist、Dragの5つのグループがあります。

Foam、Splash、およびMistパーティクルは、パーティクルシステムセットのパーティクルを参照するカスタムPhoenix FD Particle Shaderを使用してレンダリングされます。


SimulatorノードのFoamタブで、Foam Amountを1に減らします。このパラメータは、指定されたボクセルが条件を満たすときに生成されるFoamパーティクルの数を1秒あたり千単位で指定します。


Birth Thresholdを2に下げます。

Birth Thresholdは、LiquidがFoamを発生するのに十分に乱れていると考えられる速度のしきい値を指定します。Foamは下の3つの状況下でのみ発生します。

  1. Liquidが乱れて移動している時
  2. SplashパーティクルがLiquidに衝突する時
  3. エミッターがシミュレーションにFoamパーティクルを加えている時



Outside Lifeパラメータには、パーティクルがシミュレーショングリッドの外側で残る秒数を指定します。

SizeパラメータはFoamパーティクルのサイズを制御します。Particle Shaderを使用してレンダリング時にこれらの値をオーバーライドすることは可能ですが、B2B(bubble to bubble)Interactionはそれらに依存しているため、適切な値に設定することをお勧めします。

B2B Interactionは、気泡間の内部相互作用を制御します。このオプションは気泡にボリュームが必要な場合に使用します。この距離の間にある気泡を強制的にくっつけます。炭酸飲料やビールのシミュレーションを行うときに非常に便利です。シェルフのBeerプリセットには、非常に具体的なB2B Interactionの設定がいくつかあります。

Variation Small / Largeパラメーターは、Sizeパラメーターに関連して気泡がどれくらい小さいか大きいかを指定します。 0は、すべての気泡が常に少なくともsize パラメーターで指定したサイズになることを意味します。 1は、最も小さい/大きい泡がSizeの値の2倍小さい/大きいことを意味します。

Distributionは、最も小さい気泡の数が最も大きな気泡の数を超える回数を指定します。


シミュレーションを開始して結果を確認します。

シミュレータの[Preview] - > [Particle Preview]タブに移動して、[Show Selected System]をオフにして、Liquidのパーティクルのプレビューを無効にすることができます。これにより、特定のパーティクルタイプを分離し、その動作のトラブルシューティングをすることができます。



Splash/Mistタブに移動し、[Enable Splash/Mist]をオンにします。新しいParticle Shaderを生成するかどうかを尋ねるメッセージが表示されたら、[Yes]を選択します。


生成されたノードの名前をphx_splash_shader_01phx_splash_set、およびpg_splashに変更します。


設定をデフォルト値のままにします。


Phienix FDでのSplash(飛沫)のコンセプトは、Foamよりも少し複雑です。簡単に言えば、Liquidの表面が変形すると、splashが発生します。
Birth Thresholdパラメータの値が低いほど、Liquidの表面とする部分が多くなり、Splashが発生します。

SplashパーティクルはLiquidから生成されます。つまり、Liquidが消失したところにSplashパーティクルが生成されます。次に、スプラッシュパーティクルが水の本体に戻ってくると、それをLiquidに変換します(Affect Liquidパラメーターによって制御されます)。

Splash Amountは、1つのLiquidパーティクルの体積に等しい数のSplashパーティクルを決定します。この値はパーティクルサイズにも影響します。値を大きくするとSplashパーティクルのサイズが小さくなります。

Splashパーティクルは、Liquidの表面に当たったときにFoamを生成することもあります。Foam on Hitパラメータはこの動作を制御します。

最後に、Splashパーティクルは空中でMistパーティクルに分割されます。その間、Splashパーティクルは常にMistパーティクルを生成し、Splashの体積を減少させます。Split to Mistパラメータは、SplashパーティクルがMistに変換される速度を制御します。

チェックボックスには[Enable Splash/Mist]と表示されていますが、実際にはSplashのParticle Shaderだけが自動的に生成されます。ミストをレンダリングする場合は、次の手順を実行します。

まず、Phoenix FDメニューから新しいParticle Shaderを作成します。


ModePointに設定します。


シェーダノードの名前をphx_mist_shader_01に変更し、生成されたセットをphx_mist_setに変更します。


この時はまだセットの中が空であることに注意してください。パーティクルグループを手動でセットに追加し、シミュレータノードをシェーダに接続する必要があります。


シミュレータを選択し、MistシェーダをShift選択して、Mistシェーダのアトリビュートエディタウィンドウで[ Set Selected Object ]ボタンをクリックします。


Simulatorを選択した状態で、ウィンドウ - > ノードエディタに移動します。シミュレータの入力/出力接続をグラフ化し、「PG_ … _Mist」というノードを見つけます。そのノードをマウスのミドルボタンでphx_mist_setにドラッグするとMistシェーダーはそれを認識します。
次に、それをpg_mistに名前を変更して、一貫性を保ちます。


phx_mist_shader以外のすべてのPhoenix FDノードを非表示にします。

レンダリングを開始するとポイントとしてレンダリングされたMistパーティクルを見ることができます。


これで、Foam、Splashes、Mistで作業中のパーティクルをセットアップできたはずです。SimulatorのプロパティとParticle Shaderのアトリビュートを使ってシミュレーションを開始することで、すべてがどのように結びついているかをよく理解できます。