CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender 3.5】VDBファイルを使ってボリューム(炎・雲など)を作る方法
こんにちは!
コチラの記事では、フリーの3DCGソフト「Blender」を使う上でのヒントになる情報を発信しています。
今回は、「VDBファイル」という形式で、ボリュームオブジェクトをBlenderにインポート・エクスポートして利用する方法を紹介します。
HoudiniやEmbergenなどの外部ソフトで作った炎・雲をBlenderにインポートしてボリュームオブジェクトを作る方法や、Blenderの物理演算(シミュレーション)の結果をエクスポートする方法を紹介していきます。
VDBファイルとは?
VDBとは「Volumetric, Dynamic grid that shares several characteristics with B+trees,」の略(開発者Ken Museth氏の論文より)で、ボリュームデータをやり取りする共通のデータフォーマットのことです。
VDBは「Open VDB」というデータ規格(ライブラリ)に整理されていて、Blender, Houdini, Embergenなどさまざまなボリュームを用いるソフトウェアで採用されています。
VDBファイルを使用することで、他のソフトで作ったボリュームをBlenderに読み込んでリアルな雲・火炎を表現したり、その逆にBlenderの物理演算(シミュレーション)で作った煙などをエクスポートすることができます。
本記事では、BlenderへのVDBファイルのインポート・エクスポートする方法、およびインポートしたVDBを活用する方法を紹介します。
BlanderにVDBファイルをインポートしてボリュームオブジェクトを作る方法
他のソフトで作ったVDBファイルをBlenderにインポートする方法を紹介します。
また、ボリュームのマテリアル設定やレンダリング設定についてもあわせて紹介していきます。
VDBファイルのダウンロード先
VDBファイルは、さまざまなサイトから無料で入手することができます。
たとえば、以下のサイトから炎や雲などのVDBを無料で入手できます。
- OpenVDBのサンプルファイル: https://www.openvdb.org/download/
解像度の高いファイルをダウンロードできます。 - JangaFX:https://jangafx.com/software/embergen/download/free-vdb-animations/
シミュレーションソフト「Embergen」で生成したリアルな炎・煙などのVDBファイルをダウンロードできます。
動画用の連番VDBファイルとしてダウンロードできるものもあります。
ダウンロードしたVDBファイルは、コチラのように「.vdb」の拡張子が付いています。
また、アニメーションを書き出したものは「_(数字)」の連番になっています。
ボリュームオブジェクト(雲・炎など)を作成する
ダウンロードしたVDBファイルを元に、Blender上でボリュームオブジェクトを作成する方法を紹介します。
やり方は非常にシンプルです。
3Dビューポート上で「Shift+A」→「ボリューム」→「OpenVDBをインポート」を選択してください。
Blenderファイルビューの画面が立ち上がるので、VDBファイルを選択して「Open VDBボリュームをインポート」を選択してください。
すると、コチラのようにVDBが読み込まれ、ボリュームオブジェクトが生成されます。
ちなみに、コチラのようにエクスプローラーからBlenderの3Dビューポートにドラッグアンドドロップするだけでもボリュームオブジェクトを作ることができます。
連番のVDBからアニメーションを生成したい場合は、Blenderファイルビューの画面で「Shift」を押しながら複数選択し、「Open VDBボリュームをインポート」を選択してください。
タイムラインを再生すると、こんな風にアニメーションとして動かすことができます。
マテリアルの設定
OpenVDBを読み込んだだけではマテリアルが設定されていないので、レンダリングしても結果が表示されません。
そのため、以下の手順でボリュームマテリアルを設定してください。
「雲・煙の場合」と「炎の場合」で設定項目が少し異なるので、分けて紹介します。
雲・煙の場合
シェーダーエディターを開き、「新規」をクリックしてマテリアルを追加すると、「プリンシプルボリューム」というシェーダーが追加されます。
マテリアルの色・密度を表示するために、3Dビューポートをレンダープレビューに切り替えてください。
このとき、レンダーエンジンが「Eevee」のままだとボリュームがきれいに表示されないため、「レンダープロパティ」→「レンダーエンジン」を「Cycles」に切り替えてください。
色・濃度の調整を行うために、ライティング(HDRI画像など)を追加します。
自然光を表現できる「HDRI画像」については、コチラの記事で設定方法を解説しているのであわせて参考にしてみてください。
レンダープレビューを見ながら、プリンシプルボリュームの「カラー」と「密度」を調節します。
雲の場合は「異方性」の値を少し調整するとよりリアルになります。
ボリュームマテリアルについては、コチラの記事で詳しく解説しているので、あわせて参考にしてみてください
炎の場合
マテリアルを追加するところまでは煙・雲の場合と同様です。
炎の場合は、「黒体の強度」「黒体のチント」「温度」のパラメータが重要です。
デフォルトでは黒体の強さは0のままなので、炎は表示されません。
「黒体の強度」の値を少し大きくすると、炎が明るく表示されるようになります。
「黒体のチント」で炎の色を、「温度」で炎のコントラストを調節することができます。
ちなみに、流体シミュレーションソフト「Embergen」から出力したVDBの場合は、コチラのように黒っぽくなってしまい炎が見えない場合があります。
そのような場合は、「密度」を「0」にすると炎が見えるようになります。
なお、コチラのようにセルルック風のマテリアルを設定することもできますが、その場合は「ボリュームのメッシュ化」が必要です。
やり方は後で解説します。
Blenderの物理演算機能を使用して、リアルな炎を作成する方法については、コチラの記事で紹介しているので合わせて参考にしてみてください。
ボリュームのレンダリング方法
最後に、VDBから生成したボリュームのレンダリング方法を紹介します。
静止画のレンダリング方法
レンダリングする際はカメラが必要ですので、必ずカメラオブジェクトを追加して配置してください。
カメラオブジェクトの追加方法・使い方についてはコチラの記事を参考にしてみてください。
静止画の場合は、トップバーの「レンダー」→「画像をレンダリング」からレンダリングできます。
Cyclesレンダーで静止画をレンダリングする方法については、コチラの記事で紹介しているのであわせて参考にしてみてください。
動画のレンダリング方法
ボリュームをアニメーションレンダリングする方法を紹介します。
動画として出力する場合は、以下のとおり出力プロパティの設定が必要です。
- フレーム範囲(開始・終了フレーム)
- ファイルフォーマット:FFmpeg動画
(動画編集ソフトを使ってPNGからMP4に変換する場合は、PNGでよいです) - エンコーディング
- コンテナ:MPEG-4
- 動画→「動画コーデック」:H.264
また、爆発などの場合は、「レンダープロパティ」→「モーションブラー」にチェックを入れてボリュームモーションブラーを有効にしておくのがオススメです。
コチラの流体シミュレーションの例のように、下から上へと燃え上がる炎の動きを表現することができます。
設定したら、トップバーの「レンダー」→「アニメーションレンダリング」(またはCtrl+F12キー)で動画をレンダリングします。
出力先を設定していない場合は、「Cドライブ」直下の「tmp」というフォルダにレンダリング結果が保存されます。
最終的に、こちらのようにリアルな炎のアニメーションをレンダリングすることができました。
アニメーションレンダリングの方法については、コチラの記事で詳しく解説しているので、あわせて参考にしてみてください。
VDBからメッシュオブジェクトを作る方法
VDBのボリュームオブジェクトから、セルルックの炎を作成する方法を紹介します。
メッシュオブジェクトの作成
以下手順で、ボリュームからメッシュオブジェクトを作ります。
- オブジェクト:ボリュームオブジェクトを選択
- グリッド名:ボリュームオブジェクトのプロパティのグリッド名を参照します(デフォルトは[density])。
- しきい値:メッシュ化する範囲を設定します。
- 適応力:細かい形状を無視して、単純化します。
- スムーズシェーディング:出力されるメッシュにスムーズシェーディングを適用
VDBのグリッド名は、ボリュームオブジェクトを選択して「オブジェクトデータプロパティ」を表示すると「グリッド数」の項目に表示されます。
マテリアルの設定
マテリアル設定の前に、レンダーエンジンは「Eevee」に設定しておきます。
(Cyclesでもよいですが、出力結果に差は出ないのでレンダリングが軽いEevee推奨です)
マテリアルを追加して、シェーダーエディターで以下のノードを追加します。
- 入力→フレネル
- コンバーター→カラーランプ
- シェーダー→放射
コチラのようにノードを接続します。
カラーランプの「補間」は、「一定」に設定し、黄色と赤の2色で塗り分けます。
「フレネル」の値を調節することで、赤と黄色の範囲を調節することができます。
最終的なレンダリング結果はこんな感じです。
アニメ調の画を出力することができる「セルルック」のマテリアルの設定方法については、コチラの記事で解説しているので、あわせて参考にしてみてください。
VDBをエクスポートする方法
Blenderの物理演算で作成したボリュームオブジェクトを、VDBとしてエクスポートする方法を紹介します。
ちなみに、物理演算以外で作成したVDBをBlenderからエクスポートする方法は今のところ見つけられていませんが、もしわかったら追記します。
物理演算の結果をVDBで保存する
物理演算の結果をベイクすると、VDBファイルが保存されます。
物理演算プロパティの「キャッシュ」で「タイプ」を「全て」、「ボリューム形式」で「OpenVDB」を選択して「すべてベイク」をクリックしてください。
VDBファイルは、Blender内で「ボリュームをメッシュ化」したり、他のソフトにエクスポートすることができます。
気体の流体シミュレーションをベイクする方法については、コチラの記事で紹介しているので合わせて参考にしてみてください。
まとめ
VDBファイルをBlenderにインポートしてボリュームオブジェクトを作る方法や、BlenderからVDBをエクスポートする方法を紹介してきましたが、いかがだったでしょうか?
Blenderの物理演算機能も以前と比べてどんどん進化してきていますが、外部ソフトで生成したVDBを利用することでさらにリアルな表現ができるので、ぜひコチラの記事の方法を参考にしてみてください。
最後に、今回のまとめです。
- VDBファイルとは?:ボリュームデータをやり取りする共通のデータフォーマット
- BlanderにVDBファイルをインポートしてボリュームオブジェクトを作る方法
- VDBファイルのダウンロード先:OpenVDB・JangaFXなど
- ボリュームオブジェクト(雲・炎など)を作成する:「Shift+A→ボリューム→OpenVDBをインポート」または3Dビューポートに直接ドラッグアンドドロップ
- マテリアルの設定:プリンシプルボリュームシェーダー
- 雲・煙の場合:色・密度・異方性
- 炎の場合:黒体の強さ・黒体のチント・温度
- ボリュームのレンダリング方法
- VDBからメッシュオブジェクトを作る方法
- メッシュオブジェクトの作成:メッシュオブジェクトを追加して「ボリュームのメッシュ化」モディファイアー
- マテリアルの設定:フレネルと放射シェーダー
- VDBをエクスポートする方法
- 物理演算の結果をVDBで保存する:
物理演算プロパティの「キャッシュ」で「タイプ」を「全て」、「ボリューム形式」で「OpenVDB」を選択して「すべてベイク」
- 物理演算の結果をVDBで保存する: