Fumaris — GPU Smoke & Fire Simulation for Blender
出典: venousfx.gumroad.com

Blender向け拡張機能「Fumaris」は、GPUで煙や炎をシミュレーションし、プレビューを見ながら設定を調整できます。CPUで変更のたびにベイク(計算結果をキャッシュに保存する処理)する手順を減らし、見た目も再ベイクせずに調整できます。

計算中のプレビューで設定を調整

Blender標準の流体シミュレーション基盤「Mantaflow」では、設定を変更するたびにCPUでベイクし、計算の完了を待つ必要があります。FumarisはGPUでシミュレーションを実行し、計算中のプレビューを見ながら設定を調整できます。

開発者のMichael Venousは、自動車のアニメーション制作で、細かな調整のたびに計算を待つ負担を減らすため、リアルタイムで変更できる仕組みを作ったと説明しています。Fumarisは画面全体ではなく、ビューポートの大きさに合わせた画像をGPUでレイマーチングしてBlenderへ返し、プレビュー中の操作性を保ちます。

シミュレーションは一時停止・再開でき、煙や炎をボリュームとして確認できます。色や密度、炎の明るさなども、ベイクをやり直さずに変更できます。

NVIDIA FlowとBlenderの設定

Fumarisは、画面操作とシーンの書き出しを担うPythonアドオンと、GPUで計算するネイティブランタイムの2つの部分で構成されます。シミュレーションにはNVIDIAのFlow GPUソルバーを使い、WindowsとLinuxではVulkan、Apple Silicon搭載Macでは同梱のMoltenVKを介したMetal環境で動作します。

シミュレーション設定は1つのオブジェクトで管理し、Blenderのコレクションを使って放出源、衝突物、作用物、流出先を指定します。計算領域には煙の周囲に疎なグリッドを使うため、オブジェクトの寸法を固定する必要はありません。

放出源にはメッシュ、パーティクル、Geometry Nodesのポイント、OpenVDBのソースを利用できます。速度、温度、発散などの属性で放出を制御し、別々のキャッシュ枠に複数のベイク結果を保存できます。

OpenVDBを使ったレンダリング

Fumarisの出力形式であるOpenVDBは、ボリュームデータをソフトウェア間で受け渡し、保存するためのライブラリおよびファイル形式です。BlenderのボリュームオブジェクトはOpenVDBファイルを扱う入れ物で、ファイルは別のソフトウェアやBlenderの流体シミュレーションキャッシュから生成できます。このため、Fumarisの出力をBlenderの通常のボリュームレンダリング手順につなげられます。

OpenVDBファイルには複数のグリッドを含められ、それぞれがボリュームの異なる層を表します。Blenderではグリッドの名前とデータ型を一覧で確認できます。ボリュームのレンダリングには既定でPrincipled Volumeシェーダーが使われ、通常はdensity、color、temperatureという名前のグリッドを参照します。

これらの名前のグリッドがない場合は、シェーダーノードで別のグリッド名を選びます。ボリュームデータの描画は煙のシミュレーションと同様に扱われ、FumarisはCyclesとEEVEEの標準的なボリュームレンダリングに対応します。一方、FumarisはMantaflowとは異なるソルバーを使うため、同じ設定値を入力しても結果は一致しません。

対応環境と入手方法

FumarisはWindows、Linux、macOSに対応し、Blender 5.2以降で動作します。NVIDIA Flowの実行経路は、Windows・LinuxではVulkan、Apple SiliconではMoltenVK経由のMetalです。

FumarisはGumroadで入手できます。導入後は、シーン内のオブジェクトやコレクションで放出源などを指定し、プレビューを見ながらシミュレーションを調整します。