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

2. シミュレーションを実行して表示する

煙を吐き出すオブジェクトを配置して再生する

煙を吐き出すためのオブジェクトを配置します。四角でも球でも何でも良いのですが、ここではとりあえず板から吐き出すようにしておきましょう。

Emitterとでも名前をつけておきます。

ちゃんとDomainの箱の中に入っていないと、この後何も起こらないので注意してください。
Emitter にもシミュレーションの設定 Fluid(流体)を追加します。

設定からタイプを Flow に設定します。
さらに、Flow Type として Smoke もしくは Fire + Smoke を選びます。これで、この物体から煙を出すことができます。

さらにFlow Behavior(フローの挙動)には、inflow(流入口)を設定します。
この設定で、Emitterが煙を吐き出し続けることになります。

Flow Source (フローソース)の設定で、煙の吹き出し口としては、ポリゴンその物(Mesh)か、パーティクルシステムを選べます。パーティクルから煙を出してもおもしろいのですが、まずは Mesh を選びます。

煙シミュレーションを実行する前に、ドメインのキャッシュ設定をしておきます。

タイプは幾つかあり、Replay(*1)ではプレビュー時に自動でシミュレーションとベイクを行います。
明示的にベイクボタンを押してベイクを実行するモードは Modular と Final があります。
Modular は幾つかの要素ごとにバラバラに独立してベイク(*2)ができ、Final の場合はまとめて全部ベイクします。

(*1)Replay は軽い設定にして何度もトライ&エラーを試みるときに使うのが良いようです
いざ実際にレンダリングするときには Modular や Final できっちりとベイクしてレンダリングをしなければいけません。

(*2)煙のシミュレーション本体、細部の情報を追加で加えるノイズ情報、など何種類か重いデータがあるので、
それぞれ独立にベイクするか、全部まとめて処理するかを選べるということになっています。

Replay モードで、自動的にシミュレーションを行うようにして再生をするか、
もしくはBake(ベイク)ボタンを押して、明示的にシミュレーションを行ってキャッシュを保存しておきます。
うまくシミュレーションできれば、Blender画面上でEmitterから灰色の煙が立ち昇ります。

ちなみにデフォルトの設定(解像度64)で250フレーム分の再生をした時点で、blendcache_filename というフォルダに1.48GB程の計算結果が出力されています。
一回トライするだけでこの有様なので、キャッシュファイルの保存先は、RAM Diskの利用が強く推奨です。
上の動画は、ソリッドモードでのプレビュー表示です。
ところがこれをレンダリングプレビューで見ると…あれっ、薄い。

ソリッドモードでの煙は、濃さの情報などがあまり使われていないので、レンダリング時の出力とずいぶん違います。
煙の濃さの調整がまだまだ必要なようです。 (また、煙を吐き出している Emitter も非表示にしないと邪魔ですね。)

煙の見た目を調整する (Cycles)

煙が薄いので、Density の設定を大きな値にします。
この数が密度に掛け合わされます。

とりあえずくっきりはっきり見たいので10倍にしてみます。
また、影とのコントラストを上げるため、煙の色を白にしてみます。
くっきりとした煙が表示されました。しかし、よく見ると煙がのノイジーに表示されています。
(図はノイズを目立たせるため、多少低めのパラメータでレンダリングしました)
Cycles レンダリング設定で、ボリュームの項目の Step Sizeを小さくすることで、精度が上がります。(レンダリング時間は伸びます)
また、当然ですが、全体のサンプリング数自体の設定にも依存することになります。
だいぶノイズが取れて、きれいになりました。
とはいえ、2.81 以降は デノイズ機能が以前よりもさらに強化されているので、そこまでパラメータをあげなくても良いかもしれません。

煙の見た目を調整する (Eevee)

この状態で、Cycles から Eevee に切り替えるとだいぶ見た目が変わってしまいます。

床に落ちる影が Emitter からのものだけですが、これはEeveeの機能の制限として仕方ありません。
しかし表示の濃さなどもだいぶ違います。
実は、Eevee のレンダリングの設定(ボリュームの設定)は、デフォルトはあまり品質が高くない上に、
シーン全体に漂う霧のようなボリュームを想定した設定になっています。

箱の中の煙を観察するような場合には、だいぶ設定を変えないと奇麗に見えません。
Start から End までの距離とサンプル数の設定で、カメラを基準にしてどの範囲を何回評価して描画するかを決めています。
今回のような場合、デフォルトの100m先まで計算をしても、ドメインの範囲外なのでほとんど無駄になっています。

1m から 10m にしたところ、密度が適切に表示されました。

範囲を狭めるのと同じく、サンプル数を増やすのも有効です(ただし上限は256です)
影も設定されていなかったので、Volume Shadows (ボリューメトリックシャドウ)を有効にします。
影のサンプル数も、16だとシーン全体に広がるようなボリュームでまばらにサンプルを取るような時に使うサンプル数です。
今回のような場合には足りないのでサンプル数を上限(128)まで上げてみたところ、光源の反対側に少し影が表示されました。

(若干Cyclesよりも影が薄い傾向があるようです)
実は、ボリュームの計算は Tile Size の大きさごとに行われています。
デフォルト状態だと8ピクセルごとに計算することになっているので、煙に細かな構造があるときは、タイルサイズを小さくします。

Tile Size を4ピクセルにしたところ、若干表示の品質が上がりました。
ただ、今回は単純なマッシュルーム型なので、あまり差は目立たないですね。
Eeveeでは、ボリュームからソリッドな物体に落ちる影は表現できませんが、ソリッドな物体から落ちる影をボリュームに反映させることはできます。

地面に落ちている影をみると、影の精度が悪いように見えますが、これはデフォルトの影の設定が粗いからです。
影の設定をあげればもっと奇麗な影になります。

inserted by FC2 system