-Blenderで液体シミュレーションをするときの手順と注意点-

2. 障害物の配置

■ドメインのサイズの指定について

ここでは、ドメインの中に障害物を配置して、様々な流れを作りだします。
キッチンシンクの中のフライパンから、流れ落ちる滝まで状況に応じて様々なスケールのドメインで計算をすることになるでしょう。
ここで、ドメインのサイズを決める際には、現状(2.82)ではドメインのサイズ拡大縮小することにして、メッシュのサイズを拡大縮小はしない方が良いようです。

メッシュのサイズを変更して小さくした状態ですが、メッシュの解像度の指標になるボックスが
不自然な大きさ、形状で表示されています。
特に、縦横比を変更したときに表示が妙なことになっています。
実際にシミュレーションを行うと、ドメインを Resolution Divisions (分割の解像度)で分割した、
(意図通りの)解像度で計算されているようなのですが、指標の表示が変なので不安になります…
メッシュではなく、オブジェクトとしてのサイズを変更した方が安心です。


■障害物の配置

Mantaflow の場合は、旧流体システムと違って、境界で流体がせき止められるのか流れだすのかを、ボーダーコリジョン(Border Collision)で設定できます。
そのため、箱状のプールに水をためるようなことは簡単に行えるのですが、あえて障害物を配置して、任意の形に水をためてみます。

流入口(選択されているキューブ)の下に、受け皿になるオブジェクトを配置しました。
キッチンシンク程度のスケールを想定して、ドメインのサイズは 30cm x 30cm x 20cm 程度にしてあります。
また、計算速度を速くするため、解像度は48とやや下げています。

今回、程よく簡単な形状として、図のような切り込みのある容器を作成しました。
また、スケール比較用に、フリー素材を使って実寸の瓶と缶を近くに置きました。
(受け皿は、Domainの内部に作成してあります。Domainはワイヤーで表示しました)

受け皿にも流体(Fluid)の設定をします。
タイプをエフェクター(Effector)、エフェクタータイプをコリジョン(Collision = 衝突)にします。

閉じた形状のメッシュであれば、これで流体に対する障害物として機能するはずです。
また、ドメインの設定で、流体の拡散(Diffusion)を設定します。
用語がガス用の用語になっていますが、流体の場合は粘性に相当するものです。
水のプリセットを選び、ドメインのサイズが(今回は長辺30cmなので)0.3と設定します。
前頁通りの手順で、そのほかの設定(キャッシュの保存先やモード、初期速度など)を行い、
シミュレーションを実行すると、容器に液体がたまり溢れ出しました。

■プレビュー設定

従来の流体の設定には、プレビュー用と最終レンダリング用の2種類の解像度設定がありました。
2.82以降、解像度設定は統一された1種類だけになり、流体シミュレーションをメッシュ化する過程にだけプレビュー用の設定があるようです。
Meshパネル中の生成メッシュ(Mesh Generator)で選択します。

具体的な差を実際に試して確認はしていないのですが、マニュアルの記述では Final 設定は Preview 設定に比べて、
より細かいオプション設定をすることができ、より Smooth である(そしてその分重い)としています。

■斜面上の液体
斜面を流れる液体を計算することを考えます。

旧流体システムでは、流体シミュレーションは、グローバルなXYZ軸に沿って計算され、これはドメインになるオブジェクトを傾けたりしても変わりません。

そのため斜めの面は階段状に処理されることになってしまいます。
もしシミュレーションの精度が無限に細かければ問題は無いはずですが、実際にはそんなわけにはいかず、あまり細かくないメッシュを使って計算をすることになります。

XYZ方向沿ったシミュレーションのメッシュの形に水面の形が影響されているのがわかります。
(旧システムでのシミュレーション例)
Mantaflow によるシミュレーションは、より改善されたアルゴリズムなので、
縞は目立ちづらくなっていますが、やはり若干メッシュの形状が見て取れます。
なにより、斜面を流れる水の動きがぎこちなくなっています。

(注)以前に旧システムで上の図を作った時のパラメータを残していないかったので、同一な条件ではないです。
この問題は、Liquid の設定中の Fractional Obstacles (分割障害物)をチェックすることで、
軽減することはできますが、あくまで軽減で解決はできません。
(斜面が階段状に処理される部分を細かくできるようです)
Mantaflow によるシミュレーションは、ドメインを傾けるとシミュレーションのメッシュも傾むくようです。
そこで、板とドメインの傾きを合わせてみます。
シミュレーション自体も、表示に関しても、より滑らかに自然になりました。
傾いた水路に障害物などを配置した場合です。
マテリアルも水(ガラス)に設定してCycles でレンダリングしたものです。

メッシュが充分に細かければ、なかなかの結果になりました。
この場合は、水路が2.5m程度の長さを想定して、長さ方向に192メッシュの細かさの計算になっています。
水滴が大きいところが不自然ではありますが、なかなか水の雰囲気が出ています。

■ 初速度と座標系

ドメインを回転させた場合には、流入口の初速度設定も影響をうけます。(2.82時点)
重力などはグローバル座標で評価されていますから、これは若干妙な挙動ともいえます。
もしかすると後で変わるかもしれませんが、ちょっと注意しておく必要があるかもしれません。

同じ1つの流入口(初速度をx軸方向に0.3与えています)と、
2つのドメイン(z軸回りに90度回転させています)を使って2つの流体シミュレーションを走らせて重ねて表示しました。(*)

流入する向きも90度回転しており、初速度がグローバル座標ではなくローカル座標で評価されていることが分かります。
ドメインを回転させて使う場合には、ちょっと気を付けておきたい挙動です。

(*)キャッシュファイルの保存先を別にしておくと、別々のシミュレーションになります。
逆に、同一のキャッシュファイルとした2つのドメインを使って、シミュレーションのコピーを配置するといったことも行えます。

inserted by FC2 system