見出し画像

FLIPFluids バケツの水汲み


インフォメーション

FLIPFluidsを使って、こちらの液体シミュレーションを作っていきます。

基本的な設定や用語はこちらの記事をご一読ください。
https://note.com/yokoyokko/n/n0570341f1d86

必要なモデルはこちらからダウンロードできます。
https://www.dropbox.com/scl/fi/rdswzhl90zyiw4sx4l3jk/WaterInBucket.fbx?rlkey=ym2i1dqttzldxhvi4mvmpafj9&st=391q4nm8&dl=0

※ダウンロードモデルは当チュートリアルで学習用として使用する場合、また、学習成果をSNS等で動画・画像として公開する場合のみ利用許可とします。

テーマとモデルの配置

テーマは”液体の放出と気泡と飛沫”です。
必要なモデルはバケツ・ホースです。
バケツの上部にホース先を配置しましょう。

ドメインの作成

まずは作成したシーンを囲むようにドメインを作ります。
バケツの底面とホースの先端がドメイン内に入るように大きさを整えます。

こんな感じです

このドメインの範囲内でシミュレーション計算がされます。

FLIPとAPIC

液体シミュレーションの計算方式で、FLIPとAPICの2種類があります。
今回は小規模なシーン+穏やかな流体作成ですので、APICを選択します。

ドメイン設定のシミュレーションに項目があります

ホースから水を出す

液体を連続して放出するには流入口(Inflow)を設定します。
デフォルト設定では重力に従って下に落ちていくものになります。

液体を放出する(Inflow)

ホース内オブジェクトを作り、ホースの先端へ配置します。
この時ホースからはみ出ないようにします。
このオブジェクトにFLIP Fluids項目から流入口かIn flowを設定します。

潰れた球を作って配置しました
プロパティで設定する場合はココ
Nパネルで設定する場合はココ

バケツの衝突設定

液体の突き抜けを防止するため障害物の設定を行います。
バケツに注水するようになります。

衝突設定は障害物(Obstacle)

バケツモデルを選択し、FLIP Fluids項目から障害物かObstacleを押します。

バケツ(入れ物)を選択
プロパティで設定する場合はココ
Nパネルで設定する場合はココ

※液体漏れを防ぐには
障害物の厚さがシミュレーション解像度のグリッドより小さい場合、
液体の突き抜けや表示がされないといったトラブルが起こります。
・ベイク時の解像度の値を大きくする
・ポリゴン面を編集して入れ物内部に厚みを持たせる
これらを調整して、液漏れが起こらないようにして下さい。

バケツの底で液体を消す

液体が溜まる表現がないシーンでは、液体を消す処理を行います。

液体を消すには流出口(Outflow)

バケツの底に円柱を置いて、FLIP Fluids項目から流出口かOutflowの設定をします。

バケツの底に円柱(Outflow)を設定しました
プロパティで設定する場合はココ
Nパネルで設定する場合はココ

レンダリング時にカメラから見えない所は、こうした流体を消す処理をすると良いでしょう。流体ポリゴンの数が減り、PC負荷が軽くなります。

シミュレーションの仮確認

低解像度で仮シミュレーションを行います。

シミュレーション計算はベイクを行うとスタートします

液体の動きを見ながらベイク

デフォルトではベイク時、液体の様子が分かりません。
NパネルのDisplay and PlaybackにあるAuto-Load Baked Framesにチェックを入れるとベイクしたフレームが表示されるので液体の動きが分かります。

Nパネルにあります

ベイクを行います。
完了したらドープシートでシークバーを動かして流体を見てみます。

チェックポイント

この段階でチェックするポイントは2つあります。
液漏れおおまかな挙動です。この段階で固めましょう。

液漏れ
障害物・流出口の設定が正しく作動しているかどうかを見ます。
ホースやバケツから流体が漏れる場合は下記のように修正します。

ホース側:流入口オブジェクトの位置やスケールを調整する
バケツ側:解像度を上げる、バケツ側面・流出口に厚みを持たせる、など

おおまかな挙動
今回ホース先端から下へ流水するよう作っていますが、上や左右に流れる、
流水ではなく水滴が一度だけ出る、流体が出てこない、など挙動が作っているものと大きく異なる場合は設定を見直しましょう。

よくある問題の対処

流水方向が違う場合
・シーンの重力方向を-Z(デフォルト-9.8)にする

シーンプロパティの重力設定

・FLIP Fluidsの重力設定をシーン(上記設定)に揃える

FLIPFluidsドメインのワールド設定

・流入口の速度設定をXYZ共に0にする

FLIPFluids流入口の速度設定

流水ではなく水滴になっている
・流入(Inflow)ではなく液体(Fluid)になっていないかチェック

流体が出てこない
・解像度をデフォルトの65から80、100と少しずつ大きくする
・アウトライナで非表示になっていないか確認する

段々ができた時の補正方法

1.流入口のオブジェクトに高さのある厚みを持たせる。
2.サブステップ(1フレーム中の流体の計算回数)を調整する。
  数値が大きい程、滑らかなります。8以上は推奨されていません。

FLIPFluids流入口の設定

3.流体のスムースモデファイアの係数・リピートの数を調整する。

液体のモデファイア欄に自動で追加されています


WhiteWaterを付ける

FLIP Fluidsでは、泡・気泡・飛沫・ちりをWhiteWaterと呼びます。
液体の種類によって使い分けが可能です。

ドメイン設定のWhitewaterから設定します

気泡と飛沫の追加

気泡と飛沫にチェックを入れ、再ベイクを行いましょう。

Whitewaterのビューポート表示

ベイク後、ドメインの設定からWhitewater項目を選択し、
Particle Display and Render Settingsで表示の設定をします。

・Whitewaterの大きさ(Particle Scale)
 デフォルト0.008から任意で調整してください。変更なしでもOK。
・ビューポートに表示する(Hide particles in viewport)
 チェック有で非表示・チェック無しで表示の切り替えができます。

ドメイン設定のWhitewater項目にあります

Whitewaterの負荷を調整

Whitewaterの負荷軽減のため、パーティクル数の最大値を設定できます。
ドメインの設定からWhitewater項目にあるMax Particlesの数値を下げます。

単位が百万なので、デフォルトでは1200万個となっています。
数値を下げてベイクして確認、これを繰り返して良い塩梅を見つけます。

ドメイン設定のWhitewater項目にあります


マテリアルの設定

流体・Whitewaterのマテリアル

流体のマテリアルはプリセットのシェーダーを割り当てます。

ドメイン設定のマテリアル欄で各項目の設定ができます

流体はFF Water(clear)
気泡はFF Bubble
飛沫はFF Sprayを適用しました。

アセットブラウザからドラッグ&ドロップ適用でも大丈夫です。

※他のマテリアルを使いたい場合はそちらを適用します。

アニメーション・カメラの設定

ホースから水を出す・水を止めるアニメーションを行います。
何フレームから水を出す、止めるというタイミングを決めましょう。

流入口のスイッチオン・オフ

プロパティの流入口設定にあります

有効チェックボックスのオンオフで流入の開始・停止ができます。
右クリックを押して任意の場所にキーフレームを打ちます。
液体を出すタイミングでオン、止めるタイミングでオフにします。

カメラは書き出すサイズ等を考慮してお好みの配置で大丈夫です。
必要なら位置と回転にキーフレームを打ってアニメーションさせます。

シーン保存・ベイク・レンダリング

書き出し範囲を指定

フレームレート(1秒あたりの枚数)を設定します。
フレームレート数値が高いとヌルヌルした動きに、
フレームレート数値が低いとカクカクした動きになります。

【フレームレート数 × 秒数】フレームの範囲を設定します。
5秒の動画を24フレームで書き出す場合は、
【 5 × 24 = 120 】なので、0から119までを範囲とします。
※0が1フレーム目の画になります。

書き出すフレーム数が多いと、ベイクやレンダリング時間が増すので注意

シーン(プロジェクト)の保存

シーン(プロジェクト)を保存します。
FLIP Fluidsはシーンを保存しないと、ベイク(シミュレーション計算)ができません。
保存ファイルの階層にフォルダが作られ、そこに計算結果を書き込みます。

ベイク(シミュレーション計算)

ベイクボタンを押すと、シミュレーション計算が始まります。
解像度を決めて、Bakeボタンを押します。

解像度は大きくすると計算量が増えますがクオリティが上がります

STOPボタンを押すと中止しますが、それまでの計算結果は残ります。

計算の進み具合 / 中止・一時停止 / おおよその残り時間が表示されます

やり直す場合はリセットをします。

中止・一時停止状態 再開はResume Baking

1回で思い通りの結果になる事は少なく、トライ&エラーの繰り返しです。
はじめは解像度を落とした状態で全体の動きを見て、納得のいく動きになったら解像度を上げて本番ベイクを行います。

ビューポートで流体の動きを確認する

ベイク時に流体の動きを反映するには、
Auto-Load Baked Framesにチェックを入れるだけです。

Nパネルにあります

レンダリング準備

保存先、ファイル形式の設定を行います。

プロパティ画面の出力タブ

OPTIXとCUDA

Windws版BlenderでnVidia製GPUを使ってCyclesレンダリングを行う場合、
OptiXとCUDAというレンダリング方式が使えます。

プリファレンスのシステムで設定できます

OptiXは新しく、計算が早い方式です。
CUDAは対応GPUが多く、安定性が高いです。
自分に合ったデバイスを選択しましょう。

カラーマネジメントについて

◆Blender出力が最終アウトプットの場合
 カラーマネジメントのビューをAgx(3.6以前であればFilmic)にします。

◆出力画像を色補正(カラコレ)をする等、後工程がある場合
 カラーマネジメントのビューを標準にします。


Blenderが落ちる時はコマンドライン

レンダリング時に計算が重すぎてBlenderがシャットダウンする場合は、
コマンドラインでレンダリングをしてみましょう。
Blenderのアニメーションレンダリングよりも安定して書き出しを行ってくれます。
 ※コマンドラインレンダリング中はBlenderは閉じてもOKです。

Blenderレンダーメニューからコマンドライン

レンダーメニュー内にあります

レンダリング ~完成~

通常のアニメーションレンダリング、あるいはコマンドラインレンダリングを行って、レンダリングを行います。
データを書き出したら完成です。


この記事が気に入ったらサポートをしてみませんか?