Blenderの流体シミュレーションで「水の塊をばしゃんと落とす」実践編
※記事製作時のバージョン:Blender2.90.1
簡単な見本を作りながら、流体シミュレーションの使い方を紹介していくシリーズ。
第1回は、「水の塊をばしゃんと落とす」やり方です。
今回の記事は長いので、前・後編に分けています。
この実践編では、実際にシーンを作成。
次の解説編では、今回使用する機能やパラメーターについて詳しく説明します。
解説編はこちらのリンクからどうぞ。
流体シミュレーションの予備知識
流体シミュレーションは、リアルな液体・煙・炎を作り出すシミュレーションです。
※画像出典:Reference/Release Notes/2.82/Physics - Blender Developer Wiki
液体シミュレーションと気体(煙・炎)シミュレーションは、Blender2.81まで別々でしたが、2.82からは「Mantaflow」という1つの流体シミュレーションに統合されました。
「流体」と聞くと、なんとなく液体のことだと思ってしまいますが、「流動性のある物体」を指します。
つまり気体も液体も流体で、同じ計算方法でシミュレーションできるのだそうです。
2.81以前の方式に比べ、Mantaflowには次の特徴があります。
- シミュレーション結果の動きと形が綺麗。
- 液体と気体(煙・炎)の基本的な操作方法が同じなので、操作を覚えやすい。
「覚えやすい」とは言っても、流体シミュレーションはパラメーターが多く、最低限必要なものを覚えるだけでもなかなか大変です。
そこでこのシリーズでは、簡単な見本を作りながら、流体シミュレーションの操作方法に少しずつ慣れていこうと思います。
なお、液体と気体(煙・炎)では、液体の方が扱いが簡単です。
まずは液体の初歩から始めて、Mantaflowの操作自体に慣れてきたら、気体(煙・炎)へも進む予定です。
実践「水の塊をばしゃんと落とす」
今回作るのは、こちらのアニメーション(150フレーム)です。
では、サクッと作ってみましょう。
1. 適当な場所にblendファイルを保存。
2. 追加 > メッシュ > ICO球(Ico Sphere)
3. ICO球を選択した状態で
「オブジェクト > クイックエフェクト > クイック液体」をクリック。
クイックエフェクトにより、次の2つが自動で追加されます。
アニメーション再生すると、ICO球から発生したパーティクルの塊が落ちて、ばしゃんとなる様子がシミュレートされます。
4. アニメーションの終了フレームと、ドメインのシミュレーション終了フレームを、両方とも150に変更。
5. ドメイン設定「液体 > メッシュ」にチェックを入れ、アニメーション再生をする。
パーティクルの形を元に、液体のメッシュが生成されます。
6. ドメイン設定「設定 > 分割の解像度(Resolution Divisions)」を64に変更して、アニメーション再生をする。
液体の形がきめ細かくなります。
7. シミュレーションのベイク(計算結果の固定処理)をする。
(1) 「キャッシュ > タイプ」を「モジュール」に変更
(2) 「キャッシュ > リジューム可能(Is Resumable)」にチェックを入れる
(3) 「設定 > データをベイク」をクリック
(4) 「液体 > メッシュ > メッシュをベイク」をクリック
以上で「水の塊をばしゃんと落とす」シミュレーションは完了。
仕上げに背景などを設定します。
8. 追加 > メッシュ > 平面
液体の下に平面を配置して床にします。
- スケール×10
- 液体の下に移動(位置は目測でOK)
9. 追加 > ライト > サン
- 強さ:3
- 向きは好きなように
10. ワールドに環境テクスチャを設定。
環境テクスチャの映り込みで、単色背景に比べて液体の色合いに変化が出るため、よりリアルになります。
- 環境テクスチャは何でもOK。
- 背景ノードの強さは、環境テクスチャに応じて設定。
11. 液体のマテリアルを設定。
液体のマテリアルはドメインに設定します。
基本形はクイックエフェクトで自動設定されているので、下の画像を参考にカラーなどを変更します。
13. レンダーエンジンをCyclesにする。
以上で設定は終了。
構図を決めてレンダリングしたら完成です。
マテリアルについて
クイックエフェクトでドメインに自動設定されるマテリアルは、「グラス」と「ボリュームの吸収」で構成されています。
水など透過系の液体は、このままグラスで作るのが簡単です。
泥水、ペンキ、牛乳、血液、水銀、ゲルなど半・不透明の液体は、プリンシプルBSDFで作ります。
グラス
液体の色はグラスのカラーで設定します。
粗さは表面の滑らかさ。
液体は「0」のままにします。
IOR(屈折率)は、実際の液体に基づいた値にします。
自動設定の初期値(1.330)は水の屈折率です。
これらのパラメーターは、プリンシプルBSDFで伝播を「1」にした場合の「ベースカラー」「粗さ」「IOR」と同じ働きです。
詳しくはこちらの2つの記事を参照してください。
ボリュームの吸収
ボリュームの吸収を使うと、液体の厚さに応じて色味が付くようになります。
液体の色を濃いめ、または暗めにしたい場合、グラスのカラーだけで調節すると全体に色が付いてしまい、今イチな結果になります。
ボリュームの吸収を併用すると、よりリアルな深みのある液体が表現できます。
薄め・明るめの液体の場合も、ボリュームの吸収を軽く効かせておくと、なんとなく良い感じの質感になります。
CyclesとEEVEEの違い
透過系の液体のレンダリングには、Cyclesの方が向いています。
EEVEEの屈折は簡易表現で、カメラから見て一番手前の面だけを処理するので、水しぶきのように複雑な形状では物足りない結果になります。
ただし、アニメーションの場合は動きでディテールがまぎれるため、EEVEEで充分な場合もあります。
EEVEEはメッシュ形状に基づくボリュームには対応していないため、マテリアルにボリュームの吸収を設定していても無効になります。
EEVEEで屈折表現をするには専用の設定が必要です。
詳しくはこちらの記事を参照してください。
以上、「水の塊をばしゃんと落とす」実践編でした。
次回の解説編で、今回使用した機能やパラメーターについて詳しく説明します。
※添削・構成アドバイス:相方