※記事製作時のバージョン:Blender2.90.1
簡単な見本を作りながら、流体シミュレーションの使い方を紹介していくシリーズ。 第2回は、「水の塊をばしゃんと落とす」の解説編です。
前回の実践編では、実際にシーンを作成しました。 この解説編では、使用した機能やパラメーターについて詳しく説明します。
実践編はこちらのリンクからどうぞ。
hainarashi.hatenablog.com
ドメイン は流体シミュレーションの計算領域です。 液体も気体も、ドメイン の範囲内だけでシミュレートされます。
ドメイン
ドメイン は1つのシーンに複数配置できます。 その場合、シミュレーションの設定は各ドメイン 毎に行います。
ドメイン の複数配置
異なるドメイン のシミュレーションは、お互いに影響を与えません。 「水をかけて炎を消す」といったシーンを作る場合は、そういう結果になるように、それぞれのシミュレーションのタイミングを手動で調整する必要があります。
別ドメイン のシミュレーション
Resolution Divisions(解像度)
ドメイン 空間の分割数です。
Mantaflowの流体シミュレーションは
ドメイン の空間を、格子状の「ボクセル」と呼ばれる単位に分割する。
ボクセルの1つ1つが「流体の有無」と「流体の動きの向きと力」のデータを持つ。
フレームの進行に従って、ボクセル間の相互作用の計算を積み重ねる。
という仕組みで行われます。※ボクセルと併用してパーティクルも使われますが、ここでは簡単な説明に留めます。
Resolution Divisionsの値が大きいほどドメイン が細かく分割され、流体の形と動きがきめ細かく、リアルになります。
同時に、シミュレーションの計算時間とキャッシュ(※)サイズが大きくなるので、
のバランスを考えて設定します。
※キャッシュ:シミュレーションの計算結果データ。blendファイルとは別に保存される。
Resolution Divisions 比較
※高画質版はこちらのリンクからどうぞ。
#Blender 【講座の見本】流体シミュレーション解像度の比較 - 灰ならしのうごイラ - pixiv
分割されたボクセルのサイズは、ドメイン の下の隅に表示されます。
ボクセルサイズ
なお、上の比較動画を見ると、最初に落下する液体の塊はどれも同じ大きさですが、最後に下に溜まる液体の量には差があります。 これはResolution Divisionsの値が大きいほど、最初に発生する液体パーティクルの量が多くなるためです。 ばしゃんと跳ねた後はパーティクルが分散するので、パーティクルの量に応じて液体の量が増えます。 現実の液体ではあり得ない現象ですが、シミュレーションの方式によってはこういう事もあります。
タイプ
シミュレーションの実行方法です。
の3種類があります。
タイプ
[リピート]
シミュレーションの自動実行です。
ドメイン のパラメーターを変更して、
開始フレームからアニメーションを再生する。
以上を行うと、シミュレーションが自動で更新されます。
次のような変更では、シミュレーションは更新されません。
ドメイン オブジェクトの移動・回転・スケール
フロー(流体の発生源)やエミッター(障害物)のパラメーター変更・移動など
これらの変更をシミュレーションに反映させるには、ドメイン のパラメーターを操作する必要があります。 その際、実際に数値などを変更する必要はないので、「パラメーターにカーソルを合わせて入力状態にして、何も変更せずにそのままEnterで確定する」という操作でOKです。
[モジュール]
シミュレーションの手動実行です。
パーティクルによる流体の「動き」のシミュレート
パーティクルを元にしたメッシュの生成
を個別に行います。
「データをベイク」をクリックすると、シミュレーションが実行されます。 その後で「メッシュをベイク」をクリックすると、メッシュが生成されます。 ベイクの済んだパラメーターはグレー表示になり、変更を受け付けなくなります。
ベイクのスイッチ
やり直したい場合は、ベイク後に表示される「データを解放」「メッシュを解放」をクリックします。 ベイク済みのキャッシュが削除され、パラメーターは変更可能な状態に戻ります。
ベイクの途中にEscキーを押すと、ベイクは中断されます。 ベイクが中断されると、「Resume」と「Free」のボタンが表示されます。 「Resume」をクリックすると、中断したフレームからベイクが再開されます。※Resumeを行うには、後で説明する「Is Resumable」をベイクの前にONにしておく必要があります。
「Free」は「解放」と同じで、中断までのキャッシュが削除されます。
[全て]
シミュレーションの手動実行です。 タイプの少し下に表示される「すべてベイク」をクリックすると、パーティクルとメッシュが一度にベイクされます。 それ以外の挙動はモジュールと同じです。
[タイプの使い分け]
基本的に「リピート」か「モジュール」を使います。 「全て」は個別のベイクができないので、試行錯誤に向きません。
「リピート」と「モジュール」は、使いやすい方を使えばOKです。 ただし、レンダリング の前には必ずモジュールにしてベイクをします。
リピートのままでもレンダリング はできるのですが、何かのはずみで、思わぬタイミングでシミュレーションが更新されてしまうことがあります。 流体シミュレーションはランダム性があるので、設定が同じでも、決して同じ結果にはなりません。 もしアニメーションレンダリング の途中でシミュレーションが更新されてしまうと、前後がつながらなくなってしまうので、最初からレンダリング のやり直しになってしまいます(実体験)。
Is Resumable
これをONにすると、ベイクの中断・再開ができるようになります。
マニュアルによると
Extra data will be saved so that you can resumed baking after pausing. Since more data will be written to drive it is recommended to avoid enabling this option when baking at high resolutions.
(一時停止後にベーキングを再開できるように、キャッシュにデータが保存されます。ドライブに書き込まれるデータが多くなるので、高解像度でベーキングする場合はこのオプションを有効にしないことをお勧めします。 ※原文を元に翻訳)
とのことです。
しかし、タイプがモジュールの場合はこれをONにしておかないとメッシュのベイクができません。 理由は分かりませんが、そういう作りになっています。 そのためモジュールを使う際は必ずONにします。
Is Resumable
メッシュ
流体のメッシュ使用のON・OFFを切り替えます。
Mantaflowは
まずパーティクルで液体の動きを計算する
その後でパーティクルを元に、液体のメッシュを生成する
という手順で液体を作ります。
メッシュをONにすると、液体のメッシュが生成できるようになります。 また、液体のメッシュがベイク済みでも、OFFにするとメッシュは非表示になります。
メッシュ
開始フレーム、終了フレーム
流体シミュレーションを行うフレーム範囲です。 アニメーションのフレーム範囲とは別に設定できます。
例えば「水門がゆっくり開き、やがて水が流れ出す」というようなアニメーションでは、水門が開くまでシミュレーションは必要ありません。 このような場合「水が流れ出す」のところからシミュレーションを開始するように設定して、無駄を省くことができます。
開始・終了フレーム
キャッシュディレクト リは、キャッシュが保存されるフォルダです。ドメイン に対して自動で設定されます。
キャッシュディレクト リ
[自動設定の場所]
キャッシュディレクト リが自動設定される場所は、次の2パターンがあります。
blendファイルが保存されている → blendファイルと同じフォルダ
blendファイルが保存されていない → tempフォルダ
※tempフォルダの場所は「編集 > プリファレンス > ファイルの場所」から確認できます。 デフォルト位置は C:\Users\(ユーザー名)\AppData\Local\Temp\ です。
キャッシュディレクト リはblendファイルからの相対参照で設定されます。
1の場合、blendファイルとキャッシュフォルダを一緒に移動すれば、移動先でもシミュレーション結果をそのまま使うことができます。
2の場合、blendファイルを移動するとキャッシュフォルダとの相対位置が狂うので、シミュレーション結果が使えなくなります。
そのため、流体シミュレーションを行う際は、まず最初にblendファイルをどこかに保存しておくと、その後の管理がしやすくなります。
[フォルダ名は日本語不可]
キャッシュフォルダが作成されるフォルダツリーの中に1つでも日本語名のフォルダが含まれていると、キャッシュが保存されず、シミュレーションが正常に動作しなくなります。 特にPCのアカウント名を日本語で作成していると、ユーザーフォルダ名も日本語になるため、そのサブフォルダ全てがシミュレーション用に使えなくなります。 こういう場合は、どこか別の場所にシミュレーション用のフォルダを用意する必要があります。
[キャッシュフォルダ名]
キャッシュフォルダ名は、そのフォルダのパスを元に自動で生成されます。 同じフォルダに複数のblendファイルがあり、それぞれに流体シミュレーションを設定すると、キャッシュフォルダ名はどれも同じになります。 キャッシュフォルダ名が重複していると、別々のシミュレーションが同じキャッシュを参照するので、AでベイクしたキャッシュがBから上書きされるといった不具合が発生します。
こういう場合は重複を回避するため、先に作成されたキャッシュのフォルダ名とキャッシュディレクト リを手動で変更します。
フロー(Flow)
フローは流体の発生源です。 液体・煙・炎はフローから流れ出します。※流体を消失させる出口にすることもできます。いずれ別の記事で解説します。
フロー
クイックエフェクトの初期設定では、フローの挙動は「ジオメトリ」になっています。 ジオメトリは、シミュレーションの開始時に「そのオブジェクトの形をした液体の塊」を発生させます。
フローオブジェクトはどんな形でもOKです。
いろいろな形のフローオブジェクト
フローオブジェクトをレンダリング したくない場合は、アウトライナー でレンダリング 非表示に設定します。
フローのレンダリング 表示切り替え
以上、「水の塊をばしゃんと落とす」解説編でした。
※添削・構成アドバイス :相方