Blenderでは、煙や霧、水中の濁りなど、半透明なものや大気の中を通過する光を表現したいときに使われるのがVolume系マテリアルノードです。
でも、いざ使おうとすると「Absorptionって何?」「そもそも大気とか水の濁りって何?」と迷ってしまうことも多いのではないでしょうか。
実はVolumeノードは煙や雲だけでなく、飲み物の濃さや光がにじむような演出にも使える、なかなか多機能で便利なノードです。
この記事では、Blender 4.4で使えるVolume系マテリアルノードの基本的な使い方と、どんな場面で使えるのかを紹介していきます。
「ボリュームマテリアルって難しそう…」と思っていた方も、ぜひ使ってみてください。
この記事は、BlenderのVolume系ノードについて解説した初心者~中級者向けの記事です。
難易度
※Blender4.4で作業しています。4.3でVolume scatterノードにいくつかのフェーズのオプションモードが搭載されました。また、旧バージョンだと設定が異なっているかもしれませんので注意してください。
Volumeとは?
Volumeとは、中身のある空間(中空じゃない)を定義するマテリアルで、空気・煙・霧・液体のような半透明で厚みのある物質を表現します。
現実の空間は、空気や大気や水蒸気やチリなど無数の微粒子で満たされています。たくさんの細かい物質があることで、光が当たったときに複雑な動きをし、より豊かでキレイな景色になります。窓から光が差し込むだけでも、細かい埃が見えたり、やわらかい光になってとても美しく見えます。
でも3DCGの空間では、デフォルトでは空間には何もありません。だから、現実に近づけるために、Volume系のノードはその空間に微粒子が大量にあるかのように計算してくれるわけです。

主に計算されるのは以下の2つ:
空間の微粒子に光が当たると、一部は多方向にランダムに散乱し、一部は微粒子にエネルギーが吸収され、弱くなって出てきます。
- 散乱(Scattering)
光が微粒子に当たって、いろんな方向に飛び散る - 吸収(Absorption)
光が進むにつれて、エネルギーが微粒子に吸収され少しずつ弱くなる(エネルギーを失う)

レンダーエンジンでの見え方の違い
EEVEEは簡易的・疑似的な計算をしてレンダリングしているので、Volume(密度ある領域)に光が当たり多方向に散乱するような細かい大量の計算は苦手です。
右図のように、平坦なのっぺりとした見え方に見えてしまいます。
また、ノードやオプションによってはEEVEEでは使えないものもあります。
今回は主にCyclesでの見え方で解説しますが、おおまかな形の煙など、EEVEEでも表現が可能なものはあります。

Volume系ノードの種類
Volume系ノードは以下の4つがあります。
- Volume Info(ボリューム情報)
- Principled Volume
- Volume Absorption(ボリュームの吸収)
- Volume Scatter(ボリュームの散乱)

特徴
特徴として、普通のシェーダーノードはマテリアルのSurface(表面)で作用しますが、Volume系ノードはVolume出力に接続され、内部のマテリアルとして作用します。
※Emissionノードはどちらにもつなげる特殊なノードです。

※表面につなぐシェーダーは透過されたシェーダーを使わないと中身のVolumeが見えません。
Volume Infoノードは物理演算をしたときの情報が出力されており、炎などのシミュレーションで使います。普段は使いません。詳しくは以下の記事に書いています。
Principled VolumeノードはVolume AbsorptionとVolume Absorptionが合体したようなノードで、更にEmissionやBlackbodyなどの機能もあります。かなり細かく調整ができます。
以下、Volume Infoノード以外のノードそれぞれについてまとめていきます。
Volume Absorption(ボリュームの吸収)
Volume Absorptionノードは、特定の光の色を吸収させることで、空気や水などの透明な物質に色味を与えるためのノードです。
Blenderのマニュアルでは、主に「水」や「色付きガラス」の表現に使われると紹介されています。

例えば、Colorに緑を設定すると、光が大気中の微粒子にぶつかったとき、赤が吸収され、緑や青などの色が透過し、その領域が緑色になって見えます。
吸収される色じゃなくて、最終的に透過する色をセットすることになります。

Color
透過した色。設定した色が透過色のようにつきます。白に設定すると無色透明になります。

Density
密度を上げると、色が濃くなります。

利用法
色付きガラス、水
表面にGlass BSDFのような色が透過するシェーダーをつけることで、色付きガラス、色付き水、のような表現ができます。
Glass BSDFにもColorの設定があり、ガラス自体に色を付けることもできます。
違いとしては中身に色がついているのか、表面に色がついているのか、でぱっと見違いがわからないこともあります。
他にもゼリーや、半透明とか透明のもので色がついてるものなどに利用できそうです。


煙
Volume ScatterノードとMix Shaderで合成して使うことで、煙を表現することができます。
Volume Scatterは光の散乱を調整します。黒い煙は光の吸収と散乱が起こっているので、合成して使うことで煙っぽくなります。

Volume Scatter(ボリュームの散乱)
Volume Scatterノードは、光がボリューム(体積)を通過する際に散乱し、周囲に向かってぼんやりと薄れていくような、柔らかい見た目を作り出します。
一般的に、霧・もや・大気など、光が広がるような効果を再現したいときに使われます。

このノードは、光が物質内でさまざまな方向に拡散されることで、そこに何かが満ちているような空気感や奥行きを演出するのに役立ちます。
Color
光の中でどの色の成分が散乱されやすいかを指定します。
たとえば、赤を設定すると、赤い光が周囲に散乱されるため、フチの部分や側面に赤みが現れることがあります。逆に、後ろにある背景を透かして見ると、赤い成分が散乱して失われた結果、補色である青や緑っぽく見えることもあります。
※散乱の程度が変わるので、密度によっては異なる色に見えることがあります。

白に設定した場合はそのまま白い色になります。
Density
ボリュームの密度です。

Anisotropy
光が散乱されるときの方向を変えることができます。-1は光の進行方向から見て後ろ向き、0はどの方向にもバラバラに、+1は前向きに散乱されます。
実際光を当ててみると、-1に近いときは光が入射する側に光が散乱するので明るく、0はどの角度にも散乱、1に近い数値では光が出てくる側に散乱しているのがわかります。


Volume Scatterの各フェーズの説明
Volume Scatterノードは、光の散乱の方向性(フェーズ)を選択できます。大気や水中、宇宙空間など、特定の環境に適した散乱モデルも用意されています。

Phase(フェーズ)とは?
光がどの方向に散乱されやすいか(前・後・全方向)を決めるもの。
これによって、煙や霧、大気などの見た目が大きく変わります。
Henyey-Greenstein
- 簡単でよく使われる散乱モデル
- 主に 生体組織などの散乱を近似するのに使われる
Fournier-Forand(※Cycles専用)
- 水中での散乱を再現するのに適したモデル
海中で光が広がる感じ、青く濁る感じに向いている
Backscatter
後方向散乱で、値が大きいほど澄んだ水。小さいほど濁っている。

Draine(※Cycles専用)
- 宇宙空間のチリ(宇宙塵)による散乱を再現する
- 星雲や銀河、SF系の表現で使うと雰囲気が出る
Alpha
0はHenyey-Greenstein、1はCornette & Shanks(物理的により正確な散乱計算)、0.5は半々のブレンド

Rayleigh(レイリー)(※Cycles専用)
- 光の波長よりも小さな粒子による散乱
青空や、夕焼けなどの空気による色の変化に使える

Mie(ミー)(※Cycles専用)
- 光の波長より大きな粒子による散乱
- 例:霧、雲、煙、ミストなど
濃い霧や雲を再現する時にリアルになる
光が白く拡散し、全体がぼんやりする
Diameter
散乱を引き起こす粒子の直径(単位:マイクロメートル µm)

Volume Scatterの利用
WorldのOutputにもVolumeをつなぐことができるので、大気や霧などを付けるのに役立ちます。
ライトを当てるとゴッドレイ(God Rays)またはボリュームライト(Volumetric Light)と呼ばれるような、散乱した白っぽい光の帯の効果が出ます。

範囲を指定していなかったのでさっきは空間のボリュームが見えませんでしたが、Light Pathノードで範囲を指定すると見えるようになります。
Light Pathについては以下の記事に書いています。

Principled Volume
多機能なVolume系ノードです。ボリュームの散乱と吸収が同時に設定でき、さらにEmissionでの発光やBlackbody(黒体放射)による色の設定ができます。
※Attribute系の入力は上でも書きましたが、基本的には物理演算での出力が入ります。

Color
散乱のカラーだとマニュアルには書いてありますが、そのまま色がつくだけです。白や黒も設定できます。

Density
Densityはボリュームの密度で、挙動はVolume Scatterノードのものとほぼ同じです。
Anisotropy
AnisotropyもVolume Scatterノードのものと同じです。
Absorption Color
吸収のカラーは、Volume Absorptionノードのカラーと同じですが、散乱のカラーを黒に近づけないと色がきちんと出てきません。

Emission Color, Strength
色をつけて発光させることができます。
ボリューム密度を高くする、他の散乱・吸収カラーを黒などで影響しないようにすると発色がよくなります。

Blackbody, Temperature
Blackbody Intensity
黒体放射の強さ。物理的に正確にするには、1に設定します。
Blackbody Tint
黒体放射の色合い。Blackbodyノードと、温度を設定することで、物理的にリアルな光の色を設定できます。
Temperature(温度)
黒体放射の温度をケルビンで表します。

Principled Volumeの利用
炎、煙
黒体放射で色を出すことでリアルな炎を表現できます。右図ではPrincipled VolumeノードのEmissionで光を発光させています。
炎や煙のマテリアルについては以下の記事で詳細に解説しています。

ゼリー、ようかん、飲み物系
透明感があって、中に何か詰まってたり溶けたりしてるものを再現できると思います。
果肉とかもいけるはずと思ってやってみました。



他にもおしゃれな半透明の容器とか、いろいろできると思います。
まとめ
Volume系のノードは機能が多かったり、使える場所が多岐にわたっていて、自分も全く使いこなせてる気はしないです。それでも少し使ってみると、今まで表現できなかったものが作れるようになってとても楽しいです。
注意としては、Volumeの表現はPCに負荷をかけやすいので重くなりがちです。重くなりそうだったり遠目で目立たないシーンなら、画像や替わりになりそうなマテリアルなど別の手段を使うことも検討してみてもいいかもしれません。
それにしてもやっぱり素材の観察力は必要ですね、実物を見てみるとほんとにたくさん発見があるというか、やっぱり現実にはシンプルなものなんてあんまりないですね。