液体シミュレーション入門
このページでは、Phoenix FD for Mayaでの簡単な液体シミュレーションの作成手順をステップバイステップ形式で紹介します。
前書き
このチュートリアルでは、Phoenix FDを使ってステップバイステップ形式でツールバーのプリセットを使用したりあるいは手動でMayaの基本的な液体シミュレーションを作成する方法を紹介します。
このビデオとチュートリアルを終えると、液体シミュレーションを作成し、シミュレーションが他のオブジェクトとどのように相互作用するかを理解し、シミュレーションの多くの主要な設定を編集する基本を知ることができます。
チュートリアルアセット
このチュートリアルで使用するファイルをダウンロードするには、ここをクリックしてください。
手順
最初にクイックプリセットを使用して始めます。
Tap Water Preset (蛇口の水)
まず、シーン内にポリゴンの球(Sphere)を作成し、グリッドの上に移動させます。
球を選択しPhoenixFDのシェルフからTap Waterプリセットボタンをクリックします。
シェルフのStart Simulationボタンをクリックします。
シミュレーションキャッシュのファイル名の先頭にシーンファイル名が書かれます。もしシーンファイル名が「無題」などの日本語で書かれていたり、プロジェクトのファイルパスに日本語が含まれていた場合シミュレーションキャッシュの生成に失敗します。全てを半角英数字で保存してシミュレーションを実行してください。
数秒間シミュレートさせた後にボリューム内の結果を確認するには、Stopボタンをクリックしてシミュレーションプロセスを停止します。
結果をレンダリングしましょう。まず、レンダー設定(Render Settings)ウィンドウから使用するレンダラとしてV-Rayが設定されていることを確認します。
VRayのシェルフからシーンにDome Lightを追加し、Invisibleオプションを有効にします。
現在のフレームをV-Ray VFBでレンダリングします。
Manual Water Setup(手動で水のシミュレーションをセットアップする)
上のチュートリアルから引き続き学ぶ場合は、シーンからSimulator オブジェクトとSourceオブジェクトを削除してください。SphereオブジェクトとV-Rayドームライトのみのクリーンなシーンになります。
PhoenixFDシェルフからFluid Simulatorアイコンをクリックします。
グリッドに沿ってクリックしてドラッグすると、ボリュームの底面が描画されます。ビューポートで再度クリックしてボリュームの内側に球を含むようにドラッグします。
前のシミュレーションのキャッシュがボリューム内に表示されている場合(緑色のコンテナの内側に表示されているように)、PhoenixFDシェルフからClear Simulator Cacheボタンをクリックし、Yesをクリックします。
紫:新しいSimulatorのVolume
緑:前のシミュレーションのキャッシュ
次に、球体がSimulatorボリュームの内側にあることを確認します。そうでない場合は、内側に収まるよう球を正しい位置に移動します。
シーンのスケールはシミュレーションプロセスにとって非常に重要なので、ウィンドウ(Windows)>設定/プリファレンス(Settings/Preferences)>プリファレンス(Preferences)を選択して、作業単位(Working Units)セクションでリニア(Linear)アトリビュートをシーンの単位に注意してチェックします。
シミュレーションを動作させるために単位をセンチメートルに設定する必要はありません。重要なのは、シミュレーションオブジェクト(この場合は球)が適切な実世界スケールに設定され、シミュレーションがその状況に適合することです。この設定はそのシミュレーションがワイングラスの水なのか、それとも船の浮かぶ海原なのかをPhoenixに教えるものです。
このチュートリアルでは、シンプルなガラスまたは容器を満たすためのシミュレーションを行うために、球の直径が約8センチメートル(または3.15インチ)であることを確認してください。(球オブジェクトのスケールは1.0)
ボリュームを選択し、GridセクションのTotal Cells欄から体積を再確認してください。
Scene Scaleパラメータは小さいまたは大きいシミュレーションを作成する際、全体的なシーンのスケールを変更するために使用することができます。この値を調整すると、シミュレーションがシーンが定義されたスケールにあるかのように動作します。この値は、シーンのサイズに関係なく、プリセットによって必要に応じて自動的に定義されます。
Phoenix FDシェルフ内のLiquid Sourceボタンをクリックし、シーンのビューポートをクリックしアイテムを追加します。
注意:Sourceオブジェクトは2次元のレンダリング不可能なロケータアイコンなので、サイズと配置はレンダリングには無関係です。必要なときSourceを選択するために使ってください。
シーン内の球を選択し、Shiftキーを押しながらSourceオブジェクトを選択します。次に、アトリビュートエディタのSource Objectsを展開して、[Add Selected Objects]ボタンをクリックします。
Sourceノードは、放出量などのエミッタプロパティを制御する場所です。
シミュレータのボリュームをもう一度選択し、アトリビュートエディタでLiquidを開き、Enabledチェックボックスをオンにします。注:これは、MayaのSimulatorがFire / SmokeシミュレーションとLiquidシミュレーションの両方を生成できるため必須です。
シミュレーションが再び開始され、球がボリューム内に液体を放出していることを確認します。注意:これは、アトリビュートエディタの上部にあるStartボタンからも実行できます。
シミュレーションのビューポートでの表示がほとんど白に見える場合があります。これはパーティクルの速度によるものです。SimulatorのPreview>Particle PreviewにあるAuto White SpeedのチェックをONにするとプレビューでのホワイトスピードが自動的に計算されます。またこのチェックを外しWhite Speedを上げて、その値を調整できます。この値よりも速く動くパーティクルを完全な白として表示します。
シミュレーション結果は、この時点ではシミュレーションのエッジがギザギザになっていてプリセットで作ったものとは見た目が異なっています。Dynamicsの、Steps Per Frame の値に注目してください。
より現実的なシミュレーションを作成するには、Steps Per Frame の値を12に増やします。[Start]ボタンをクリックして再シミュレーションします。シミュレーションを計算するために各フレームで行われる追加のstepは、シミュレーションに大変時間がかかります。簡易的なプレビューからより現実的な最終シミュレーションに切り替える準備ができている場合にのみ、Steps Per Frameの値を調整する必要があります。
大規模な液体シミュレーションでは、見た目を犠牲にすることなく、フレームあたりのステップ数を少なくすることができます。
結果を見て液体が床をすり抜け、消えていることに気づいたかもしれません。Simulatorが開いていている状態になっているのでこれを閉じる必要があります。GridのBoundary Conditionsの下で、X軸、Y軸、Z軸のすべてをJammed Bothに設定します。もう一度シミュレーションを実行すると、液体が底面および側面に衝突します。
しかし、シミュレーションは今よりも遅く動作しているので、速度の低下に対処するためCell Sizeを大きくして解像度を調整します。まず、シミュレーション内で計算するTotal Cellsは約4.7百万であることに注意してください。これがシミュレーションの解像度です。Cell Sizeの値が大きいほど、シミュレーションの解像度は低くなり、シミュレーションが速く進みます。
シミュレーションを停止し、Cell Sizeの値を0.5に増やし、再度シミュレーションを開始すると、より速く動作することがわかります。
Cell Sizeを0.5に増やすと、解像度が約300万に低下します。
V-Rayフレームバッファにテストフレームをレンダリングし、この時点ではシミュレーションがまだ水のように見えないことに注意してください。
シミュレーションのための水のマテリアルを作りましょう。ハイパーシェード(HyperShade)を開き、新しいV-RayMtlを作成します。マテリアルビューアがV-Rayに設定されていることを確認して、作成されたマテリアルをプレビューします。
Diffuse color を黒に設定し、次に、Reflection ColorとRefraction Colorに白を設定してください。より水らしく表現するために、Refraction IORを1.33に変更して、Affect Shadowsを オンに切り替えます。
この新しいマテリアルをシーン内のSimulatorオブジェクトに割り当てます。レンダリングボタンをクリックすると、より自然な水面をシミュレートすることができます。シーンのマテリアルとライトを自由に調整して、望ましい液体のルックを実現してください。
実際の例にSimセットアップを適用する
次に、Simulatorの箱のようなボリュームではなく、実際のオブジェクトに液体を衝突させ、実際のオブジェクトを満たす方法を見てみましょう。上記のチュートリアルアセットセクションから、提供されたシーンを開きます。このシーンにはスタジオ照明のセットアップと背景、瓶が含まれています。ビューをcamera1に切り替え、レンダリングすると、灰色の背景と瓶が確認できます。
チュートリアルのアセットではシミュレーションの結果が最新のバージョン3.10と異なります。
ビデオのように瓶に液体を収める為には、エミッタの球のサイズを小さく、高さを低く設定する必要があります。
今回は最終的に球の半径を5.5,高さYを50に設定しました。
パースペクティブカメラに戻り、球を選択します。Phoenixのシェルフで、このチュートリアルの冒頭で行ったようにTap Waterクイックプリセットをクリックします。
Simulatorは、このシーンで正しく動作するように調整する必要があります。Simulatorを瓶の上に移動させ、X, Y, Z Sizeのアトリビュートを使用してSimulatorのサイズを調整します。
MayaのScaleツールを使用してシミュレータコンテナを単純にスケーリングすると、シミュレーションに悪影響を及ぼす可能性があるため、シミュレータのSizeアトリビュートを使用してください。
シミュレーションを開始し、camera1ビューに切り替えます。
瓶に割り当てられたガラスのマテリアルを調整してDiffuse Colorが黒、Reflection Colorと Refraction Colorが白であることを確認してください。ビューポートではメッシュは一見消えているように見えますが、それは完全に屈折しているからです。流体がどのように瓶と相互作用しているかを見るためにフレームをレンダリングします。
シミュレーションボリューム内の任意のジオメトリは自動的に放出している流体と相互作用します。相互作用からシミュレータ内の特定のオブジェクトを除外してシミュレーションする方法は後述します。
シミュレーションを実行できるようにすると、最終的にはそのシミュレーションが満たされ、溢れ出しします。シミュレーションを止めてください。Liquid sourceオブジェクトを選択し、Dischargeパラメータに注目してください。この設定は、エミッタによって放出される流体の量を決定します。したがって、この値をアニメートすることで、液体を容器に注ぎ込み、それを停止させることができます。Dischargeの値を31フレーム目で16.0にキーフレームを設定してください。次に、32フレーム目に移動し、0のキーフレームを設定します。
今すぐシミュレーションを開始し、アニメーションを見ることができるように約フレーム50まで計算させます。その後、シミュレーションを停止し、キャッシュされたシミュレーションをスクラブしてその動きを確認することができます。フレーム45に移動し、camera1から別のレンダリングを行います。
流体がSimulatorの壁の内側に当たる滴を作ることに注意してください。これは、液体が瓶の中に落ちたときに、液体が広がらないようにすることで修正できます。また、水がボリュームの上部にどのように接触しているのか注意してください。球を少し動かすか、ボリュームを広げて球とボリュームの間を少し離すことで修正できます。
次に、Simulatorを選択し、GridのBoundary Conditionsで、X、Y、Zの壁をOpenに設定します。これにより、これらの液滴が見えない壁に衝突するのを防ぎます。
LiquidのConsumed Liquidアトリビュートを0.0に設定。この値はWettingパラメータに関連しています。これらの赤いパーティクルは、瓶の内部を濡らしてWet mapを作成します。Consumed Liquidを0.0に設定すると、すべての液体が保たれ、消失することはありません。
エミッタが放出を止めるときの液体の広がりを修正しましょう。Liquid sourceノードを選択し、Emit ModeをVolume Brushに変更します。これは、球の表面から液体を放出する代わりに、球によって定義される空間の全てから液体を放出することを意味します。
エミッタの球を選択し、shapeノードのExtra Phoenix FD AttributesでSolidをオフにします。これは、球のジオメトリ自体が液体のシミュレーションと相互作用しないことを意味します。
シミュレーションを開始すると、表面からではなく、球体の空間から液体が流れていることがわかります。瓶いっぱいになったらシミュレーションを停止し、32フレーム目でDischargeがオフになった後もうまく収まっていることを見るためにに後ろにスクラブします。
camera1ビューの結果をレンダリングして、このように水の瓶のエフェクト作ってみてください!