Blenderであそんでみた

3D-CGソフトBlenderの小技や豆知識など。

Blenderの流体シミュレーションで「水の塊をばしゃんと落とす」実践編

f:id:hainarashi:20201108214303j:plain

※記事製作時のバージョン:Blender2.90.1

 

簡単な見本を作りながら、流体シミュレーションの使い方を紹介していくシリーズ。
第1回は、「水の塊をばしゃんと落とす」やり方です。

 

今回の記事は長いので、前・後編に分けています。
この実践編では、実際にシーンを作成。
次の解説編では、今回使用する機能やパラメーターについて詳しく説明します。

 

解説編はこちらのリンクからどうぞ。

hainarashi.hatenablog.com

 

流体シミュレーションの予備知識

流体シミュレーションは、リアルな液体・煙・炎を作り出すシミュレーションです。

f:id:hainarashi:20201107214503j:plain

流体シミュレーション(Mantaflow)の煙と炎

※画像出典:Reference/Release Notes/2.82/Physics - Blender Developer Wiki

 

液体シミュレーションと気体(煙・炎)シミュレーションは、Blender2.81まで別々でしたが、2.82からは「Mantaflow」という1つの流体シミュレーションに統合されました。

「流体」と聞くと、なんとなく液体のことだと思ってしまいますが、「流動性のある物体」を指します。
つまり気体も液体も流体で、同じ計算方法でシミュレーションできるのだそうです。

 

2.81以前の方式に比べ、Mantaflowには次の特徴があります。

  • シミュレーション結果の動きと形が綺麗。
  • 液体と気体(煙・炎)の基本的な操作方法が同じなので、操作を覚えやすい。

「覚えやすい」とは言っても、流体シミュレーションはパラメーターが多く、最低限必要なものを覚えるだけでもなかなか大変です。

そこでこのシリーズでは、簡単な見本を作りながら、流体シミュレーションの操作方法に少しずつ慣れていこうと思います。

 

なお、液体と気体(煙・炎)では、液体の方が扱いが簡単です。
まずは液体の初歩から始めて、Mantaflowの操作自体に慣れてきたら、気体(煙・炎)へも進む予定です。

 

実践「水の塊をばしゃんと落とす」

今回作るのは、こちらのアニメーション(150フレーム)です。

vimeo.com

 

では、サクッと作ってみましょう。

 

1. 適当な場所にblendファイルを保存。

f:id:hainarashi:20201105101742j:plain

blendファイル保存

 

2. 追加 > メッシュ > ICO球(Ico Sphere

3. ICO球を選択した状態で
 「オブジェクト > クイックエフェクト > クイック液体」をクリック。

f:id:hainarashi:20201205151504j:plain

クイックエフェクト

 

クイックエフェクトにより、次の2つが自動で追加されます。

  • ドメインオブジェクト(流体シミュレーションの計算領域)
  • ICO球にフロー(液体の発生源)の設定

f:id:hainarashi:20201205151511j:plain

自動設定

 

アニメーション再生すると、ICO球から発生したパーティクルの塊が落ちて、ばしゃんとなる様子がシミュレートされます。

f:id:hainarashi:20201105112737j:plain

パーティクルアニメーション

 

4. アニメーションの終了フレームと、ドメインのシミュレーション終了フレームを、両方とも150に変更。

f:id:hainarashi:20201106212316j:plain

フレーム数の設定

 

5. ドメイン設定「液体 > メッシュ」にチェックを入れ、アニメーション再生をする。

パーティクルの形を元に、液体のメッシュが生成されます。

f:id:hainarashi:20201204125921j:plain

メッシュ生成

 

6. ドメイン設定「設定 > 分割の解像度(Resolution Divisions)」を64に変更して、アニメーション再生をする。

液体の形がきめ細かくなります。

f:id:hainarashi:20201204125914j:plain

解像度変更

 

7. シミュレーションのベイク(計算結果の固定処理)をする。

 (1) 「キャッシュ > タイプ」を「モジュール」に変更
 (2) 「キャッシュ > リジューム可能(Is Resumable)」にチェックを入れる
 (3) 「設定 > データをベイク」をクリック
 (4) 「液体 > メッシュ > メッシュをベイク」をクリック

f:id:hainarashi:20201204130806j:plain

シミュレーションのベイク

 

以上で「水の塊をばしゃんと落とす」シミュレーションは完了。
仕上げに背景などを設定します。

 

8. 追加 > メッシュ > 平面

液体の下に平面を配置して床にします。

  • スケール×10
  • 液体の下に移動(位置は目測でOK)

f:id:hainarashi:20201111222927j:plain

床を配置

 

9. 追加 > ライト > サン

  • 強さ:3
  • 向きは好きなように

f:id:hainarashi:20201111222918j:plain

ライトを配置

 

10. ワールドに環境テクスチャを設定。

環境テクスチャの映り込みで、単色背景に比べて液体の色合いに変化が出るため、よりリアルになります。

  • 環境テクスチャは何でもOK。
  • 背景ノードの強さは、環境テクスチャに応じて設定。 

f:id:hainarashi:20201112202351j:plain

環境テクスチャを設定

 

11. 液体のマテリアルを設定。

液体のマテリアルはドメインに設定します。
基本形はクイックエフェクトで自動設定されているので、下の画像を参考にカラーなどを変更します。

f:id:hainarashi:20201204142920j:plain

マテリアルを設定

 

12. ICO球をレンダリング非表示にする。

13. レンダーエンジンをCyclesにする。

f:id:hainarashi:20201204133219j:plain

レンダリング設定

 

以上で設定は終了。
構図を決めてレンダリングしたら完成です。

f:id:hainarashi:20201103093304j:plain

完成

 

マテリアルについて

クイックエフェクトでドメインに自動設定されるマテリアルは、「グラス」と「ボリュームの吸収」で構成されています。

水など透過系の液体は、このままグラスで作るのが簡単です。
泥水、ペンキ、牛乳、血液、水銀、ゲルなど半・不透明の液体は、プリンシプルBSDFで作ります。

f:id:hainarashi:20201120143438j:plain

シェーダーの使い分け

 

グラス

液体の色はグラスのカラーで設定します。

粗さは表面の滑らかさ。
液体は「0」のままにします。

IOR(屈折率)は、実際の液体に基づいた値にします。
自動設定の初期値(1.330)は水の屈折率です。

これらのパラメーターは、プリンシプルBSDFで伝播を「1」にした場合の「ベースカラー」「粗さ」「IOR」と同じ働きです。
詳しくはこちらの2つの記事を参照してください。

hainarashi.hatenablog.com

 

hainarashi.hatenablog.com

 

ボリュームの吸収

ボリュームの吸収を使うと、液体の厚さに応じて色味が付くようになります。

液体の色を濃いめ、または暗めにしたい場合、グラスのカラーだけで調節すると全体に色が付いてしまい、今イチな結果になります。
ボリュームの吸収を併用すると、よりリアルな深みのある液体が表現できます。

f:id:hainarashi:20201121170147j:plain

深みのある液体の色表現

 

薄め・明るめの液体の場合も、ボリュームの吸収を軽く効かせておくと、なんとなく良い感じの質感になります。

 

CyclesとEEVEEの違い

透過系の液体のレンダリングには、Cyclesの方が向いています。

EEVEEの屈折は簡易表現で、カメラから見て一番手前の面だけを処理するので、水しぶきのように複雑な形状では物足りない結果になります。

ただし、アニメーションの場合は動きでディテールがまぎれるため、EEVEEで充分な場合もあります。

f:id:hainarashi:20201205154713j:plain

CyclesとEEVEEの比較

 

EEVEEはメッシュ形状に基づくボリュームには対応していないため、マテリアルにボリュームの吸収を設定していても無効になります。

f:id:hainarashi:20201205161954j:plain

EEVEEではボリュームの吸収が無効になる

 

EEVEEで屈折表現をするには専用の設定が必要です。
詳しくはこちらの記事を参照してください。

hainarashi.hatenablog.com

 

 

以上、「水の塊をばしゃんと落とす」実践編でした。 
次回の解説編で、今回使用した機能やパラメーターについて詳しく説明します。

 

※添削・構成アドバイス:相方

 

twitter

灰ならし (@hainarashi) | Twitter