見出し画像

FLIPFluids ソフトクリームに挑戦


インフォメーション

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

基本的な設定や用語はこちらの記事をご覧ください。

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

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

テーマとモデルの配置

”パスに沿ったオブジェクトから液体を出す”がテーマです。
必要なモデルはアイスクリームコーンのモデルです。

ダウンロードモデルには3つのオブジェクトでコーンを組み立てています。

・青部分 コーン表面
・赤部分 コーンの液漏れ防止
・緑部分 クリーム底面

青部分が親、赤・緑が子になります。
青を動かすと赤と緑も同じ動きをします。

ダウンロードモデル

ドメインの作成

まずは作成したシーンを囲むようにドメインを作ります。
アイスクリームの大きさを想定して、ドメイン内に入るように大きさを整えます。
この時、コーンの上側も被るようにします。

青モデルを基準にします。赤・緑は非表示でOK

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

障害物の設定

コーンに障害物の設定を行います。

障害物として設定するには、オブジェクトを選択して、
Nパネルか物理演算プロパティのどちらかから障害物(Obstacle)を選びます。

Nパネル画面の場合
物理演算プロパティ画面の場合

ソリッド化モデルを障害物に

※この項目は、ダウンロードモデルの赤部分にあたります。

青のコーンモデルを同位置に複製し、子にします。
ソリッド化(Solidify)モデファイアを付けます。

パラメータ例

幅を大きくすると液漏れ防止になります。
オフセットを1にするとコーンを囲むようなモデルになります。

コーン底面にも障害物をつける

※この項目は、ダウンロードモデルの緑部分にあたります。

コーンの底面にも同じように円柱を配置します。

コーンの内側へ配置して、はみ出ないようにします

同じように障害物設定をします。

パスで軌跡を描く

パスを使ってソフトクリームの螺旋形状を作っていきます。
これに沿ったクリームが作られますので、ドメインの範囲内に作ります。

ドメインの範囲内に作ります。

※追加->カーブ->Curve Spiralを使うと手早く作成できます。

これもコーンに親子付けをします。
コーンが親、らせんパスが子になります。

オブジェクトの親子関係

今まで作成したモデルの親子関係はこうなります。
Cone.001はマテリアルなので今の所なくても大丈夫です。

クリームのディテール

クリーム(流入口)の作成

流入口としてクリームの形を作っていきます。
本来のソフトクリームの製造口は多角形・丸形・四角形などいくつか種類があります。

今回は円柱を作り、丸いディテールのソフトクリームにします。
円柱を図のように倒します。位置はX,Yを0,0の原点にします。

円柱の大きさはらせん幅くらいにしておきます

ベイク後に円柱の大きさは調整しますので、一旦適度な大きさにします。

流入口として設定するには、オブジェクトを選択して、
Nパネルか物理演算プロパティのどちらかから流入口(Inflow)を選びます。

Nパネルの場合
物理演算プロパティ画面の場合

円柱に流入口設定をしておきます。

クリームの流入口をパスに追従

軌跡のパスと流入口となるオブジェクトをコンストレイントします。

プロパティからコンストレイント->パスに追従を選択します。

ターゲットはらせんのカーブ、カーブに従うにチェックを入れる、と
らせんパスに沿って動きます。


パスに追従のオブジェクトをベイク

低解像度で一度ベイクをしてみましょう

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

今のままだとパスに沿った流入をしてくれません。
オブジェクトの動きをキーフレーム化をして解決していきます。

オブジェクトを選択した状態で、
オブジェクトタブからアニメーション->アクションをベイクを選択

ビジュアルキーイング、コンストレイントをクリアにチェックを入れ決定。
1フレーム毎にキーフレームが打たれ、ベイクするとらせんパスに沿った形で円柱から流体が出てきます。

キーフレームが打たれ、各位置でベイク計算されるようになります

しっとり感を出す

クリームに粘り気と表面張力を付けていきます。

ドメインを選択して、物理演算プロパティからワールドタブを選択します。
その中にあるViscosityとSurfaceTensionのEnableにチェックを入れます。

数値は参考です

粘度を付ける

液体に粘性を加える事です。ネバネバ感が出せるようになります。

1.ドメインを選択し、プロパティを表示します。
2.ワールド内にある【Viscosity】を開きます。
3.【Enable Viscosity】をチェックし、ベースの数値を調整します。
  指数が高い程、粘性が増します。

表面張力を付ける

液体表面を縮小させる動きの事です。張り付くような効果になります。

1.ドメインを選択し、プロパティを表示します。
2.ワールド内にある【Surface Tension】を開きます。
3.【Enable Surface Tension】をチェックし、ベースの数値を調整します。
  指数は5段階あり、1段階あげる毎にベース値を10倍します。

粘り気の数値については公式から参考動画が出ています。


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

低解像度で再度ベイクして、シミュレーションを行います。

パラメータを変更 -> 仮確認
この繰り返しがとても重要で、何度も行う事になります。

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

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

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

チェックポイント

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

液漏れ
障害物・流出口の設定が正しく作動しているかどうかを見ます。
コーンから流体が漏れる場合は修正します。

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

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

よくある問題の対処

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

シーンプロパティの重力設定
FLIPFluidsドメインのワールド設定

液体になっていない
・液体(Fluid)以外のものになっていないかチェック

粘性が無い
・ドメインの物理演算プロパティのワールドタブを開き、
 Viscosityが有効か確認する

段々ができた時の補正方法
1.流入口のオブジェクトに高さのある厚みを持たせる。
2.サブステップ(1フレーム中の流体の計算回数)を調整する。
  数値が大きい程、滑らかなります。8以上は推奨されていません。
3.流体のスムースモデファイアの係数・リピートの数を調整する。

クリーム先端のキーフレーム調整

ベイクアニメーションを見ると、らせんパスの先端以降にキーが打たれている場合はそのままサーフェスが延長されてしまいます。

先端で切れるようにキーフレームを調整します。
X,Y,Zのスケールの値をらせんパスが切れる前から徐々に小さくなり、
らせんパスが途切れた後は、全て0にして表示をさせないようにします。

これで再度ベイクして、アニメーションを確認します。
先端でクリームが途切れるようにできてればOKです。

キーフレームをまとめて下げられます

コーンとクリームのみ表示

アニメーションまでできたらコーンとクリームのみ表示にします。
コーンの液漏れ防止のオブジェクトはレンダリング非表示にします。


マテリアル設定

流体のマテリアル

流体のマテリアルはプリセットのシェーダーを割り当てます。
アセットブラウザから選びます。
※他のマテリアルを使いたい場合はそちらを適用します。

今回はMilk_SSSを適用しました。
クリームのモデルにドラッグ&ドロップします。

ドラッグ&ドロップしても適用されていない場合は、
ドメインの物理演算プロパティからマテリアルを選びます。
サーフェスのプルダウンから選択できます。

カメラ・ライティングの設定

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

ライティングはHDRIや、好きなライティングをセットして下さい。


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

書き出し範囲を指定

フレームレート(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レンダーメニューからコマンドライン

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

レンダリング ~完成~

通常のアニメーションレンダリング、
あるいはコマンドラインレンダリングを行って、レンダリングを行います。

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