見出し画像

FLIP Fluids ワインを注ぐ


インフォメーション

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

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

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

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

テーマとモデルの配置

テーマは”液体のシーティング、表面張力パラメータの使用”です。
必要なモデルはボトルとグラスになります。
グラスの縁にボトル先が触れる角度・高さの所へ配置します。

ドメインの作成

まずは作成したシーンを囲むようにドメインを作ります。
グラスのコップ部分の底面とボトルの先端がドメイン内に入るように大きさを整えます。

ボトルを動かす範囲を想定して囲います

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

FLIPとAPIC

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

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

ボトル内の液体を作る

液体の塊を作成するには流体(Fluid)を設定します。
デフォルト設定では重力に従って下に落ちていくものになります。

液体を作成する(Fluid)

簡単な円柱を作って液体化します。
この時ボトルからオブジェクトがはみ出ないようにします。
このオブジェクトにFLIP Fluids項目から流体かFluidを設定します。

六角形のオブジェクトをボトル内に作りました
プロパティで設定する場合はココ
Nパネルで設定する場合はココ

ボトル・グラスに障害物の設定

液体の突き抜けを防止するため障害物の設定を行います。
今回のボトルやグラスなど幅が薄いモデルは解像度をかなり大きくしないと突き抜けが起こります。

厚み幅のないモデルの衝突の対処

1.オブジェクトを複製しコリジョンモデル(衝突用)を作ります。
2.複製したモデルにモデファイアの【ソリッド化:Solidify】を適用します
3.同位置へ配置して障害物(Obstacle)とします
4.表示モデルを親、衝突用モデルを子になるようにペアレント化します。
5.複製したモデルはアウトライナ画面で、ビュー・レンダリングをされな
  いように非表示設定します

1.ボトルを複製しコリジョンモデルを作ります
2.複製したモデルに【ソリッド化:Solidify】を適用
3.元ボトルの位置と合わせて障害物(Obstacle)
4.親子付けは表示モデルの中に衝突モデルが入っている状態
5.右端の画面アイコンでビュー、カメラアイコンでレンダリングをオフにできます

ボトルを例にしました。同じ要領でグラスの方も設定します。
衝突用モデルの内側を表示用と重ねられると、より良いでしょう。

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

ボトルをアニメーション

グラスにボトルを注ぐアニメーションを作成します。
作成した液体、衝突用モデルは非表示にしておくと操作がしやすいです。
位置と回転のキーフレームを付けながらアニメーションを作っていきます。

アニメーションのテンポ

表示するのはボトルとグラスのみ

1.ボトルをグラスへ傾ける
2.液体が注がれる
3.ボトルを起こす
これらを1、2、3♪とテンポよくアニメーションしました。

位置・回転のみ使ってキーフレームを打っていきます

各アニメーションのポイントとしては、
1のグラスへの傾きはゆっくりめ
2で注いでる時は少しだけ振動させる(ボトルを静止させない)
3で起こす時は1のグラスへ傾ける時よりも、少し早めに起こすようにする

アニメーションができたら、仮チェックに進みます。

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

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

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

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

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

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

Nパネルにあります

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

チェックポイント

この段階でチェックするポイントは2つあります。
ボトル・グラスの液漏れおおまかな挙動です。この段階で固めましょう。
液体の飛び散りは一旦置いておき、本流が正しくグラスに注がれるかに重点を置きます。

液漏れ
液体・障害物の設定が正しく作動しているかどうかを見ます。
液体がボトルやグラスから漏れる場合は下記のように修正します。

対処:解像度を上げる、ボトルやグラスの内面・外面に厚みを持たせるなど

おおまかな挙動
望ましい動きとしては、ボトル内の液体の本流がグラスへ注がれていきます。挙動が作っているものと大きく異なる場合は設定を見直しましょう。

よくある問題の対処

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

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

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

液体がボトルから出てこない
・解像度をデフォルトの65から80、100と少しずつ大きくする
・アウトライナで非表示になっていないか確認する
・ボトル口のモデルをチェック
 表面モデル、衝突モデルどちらも開口しているか確認する

突き抜けせずにボトル口から液体がグラスへ注がれていればOKです。
多少の液体が飛び散りなどはこの後に修正をしていきます。

表面張力とシーティング

液体の表面張力、水滴の分離具合を調整して飛散を和らげます。

表面張力を付ける

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

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

シーティングエフェクトを付ける

水滴同士の隙間を埋める効果があります。水で膜を作るイメージです。

1.ドメインを選択し、プロパティを表示します。
2.ワールド内にある【Sheeting Effects】を開きます。
3.【Enable Sheeting Effects】をチェックし、値を調整します。
  Strengthは隙間を埋める強さで、数値が高いと計算が重くなります。
  Thicknessは隙間を埋める厚さの値です。

設定数値は下記公式動画を参照して下さい。

こちらの調整で液体の動きを決定してしまいます。
以降、アニメーションに関わる工程はありませんので、仮シミュレーションを繰り返して納得できる液体アニメーションを作成します。

液体のマテリアル設定

マテリアルプリセット

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

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

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

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

ボトル・グラスのマテリアルは自由に付けてみて下さい。
木製のグラスなどもおしゃれかもしれません。

カメラの設定

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

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

書き出し範囲を指定

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

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

レンダリング ~完成~

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


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