文系の blender 4.0 - 4.2 プリンシプル Principled BSDF 全解説
すこし偉そうなタイトルですが、ここでは、blender のマテリアル作成の中心機能である Principled BSDF について索引的にすべての機能を整理してみました。
なるべく専門用語を避け、可能なかぎり平易なことばで説明することを心がけました。
ただし、あくまで理系能力の極端に乏しいわたしの理解範囲内になります。間違いがある場合はお知らせいただければ幸いです。
環境 Blender 4.0.2 , Mac Mini M1 OS 14.2
プリンシプル BSDF とは
これまで種別に分かれていたシェーダーをひとつにわかりやすくまとめたblender の主要シェーダー。
光のふるまいを物理的にシミュレートするPBR(物理ベースレンダリング)の概念に基づき、現実に存在するほとんどすべての物質のリアリスティックな質感をこれひとつで表現できる。
ベースカラー | Base Color
従来のディフューズシェーダーを引き継いだマテリアル表面のカラー情報。 単色を設定、あるいは画像等のテクスチャを接続できる。
メタリック | Metallic
マテリアルの金属の性質をもつ割合を表す数値。デフォルトのゼロは非金属、値が大きいほど金属の(金属光沢と呼ばれる鏡面反射率の高い)性質を表現する。
すべての無機物はほぼ金属か非金属に明確に別れ、中間の物質はごくまれにしか存在しない。このため、物理的には値はゼロあるいは 1.0 が正しいと思われる。
あるいは中間の値は、特殊な光沢のある布素材などSF的マテリアルには有効かもしれない。
粗さ | Roughness
マテリアルの表面のなめらかさを表す値。値が小さいほどなめらかになり、ゼロでは鏡のような表面になる。また、値が大きいほど粗くなり、1.0 の場合、表面での乱反射のため、鏡面反射がまったく起こらない。
現実には、完全に粗い、あるいはなめらかな表面は存在しないため、フォトリアルなマテリアルの場合、ノイズテクスチャ等で表面のなめらかさの不均一性を加えることにより、より現実感のあるマテリアルを表現できる。
IOR | Index of Refraction
光の「屈折率」を表す数値。光は物質の内部を通る際、速度を大きく落とし、そのため内部で折れ曲がる。この屈折率(光の曲がる角度)は、物質によってそれぞれ異なる。
手前は伝播(Transmission)のウェイトを 1.0 としたガラス球。屈折率の違いから、同じ位置にある背後の球のみえかたが異なる。また、IORが高いほど光の反射も強い。
このため、おもにマテリアルの鏡面反射の強さを操作したり、素材に合った物理的に正しい屈折率を設定する際に用いられる。
アルファ | Alpha
物質の透明度を表す数値。値が低いほどマテリアルは「透明」になる。
ガラスなどの透明物質はどれだけ透明であっても光の屈折があったり、影ができたりするが、アルファの場合は、その物質が存在しなくなる割合といっていいかもしれない。
おもに、透過PNG画像のように、マテリアルの一部を非表示状態にするために利用される。
ノーマル | Normal
ノーマル(法線)は、面の向きを示すベクトルのこと。
通常は、ノーマルマップやバンプノードを接続し、画像やテクスチャの白黒/青赤の情報をノーマルの情報に変換する。
上のマテリアルでは、ジオメトリ(形状)上はまったく平らな面であっても、あたかもそこに起伏があるような擬似的な操作を加えている。
ジオメトリ上で面を細分化し細かな起伏をつくるのは処理の負担が大きいため、負担を軽くしながら表面の凹凸、起伏を表現するために用いられる。
サブサーフェス | Subsurface
サブサーフェス(Subsurface Scattering)では、人の肌などの有機的物質内部での光の散乱をシミュレートする。
メソッド | Method
ランダムウォーク | Random Walk - デフォルトの物理的に忠実な方式。
Christensen-Burley - 物理的再現性には劣るが負担が軽い。
ランダムウォーク(スキン) | Random Walk (Skin) - ひとの肌に特化した方式で、下の半径(Radius) はベースカラーによって自動設定される。
ウェイト | Weight
サブサーフェスが適用される割合。通常は、1.0 かそれに近い値を設定することが多い。
半径 | Radius
光がマテリアル内部で散乱する平均距離を表す。上から、X、Y、Z はそれぞれ、Red、Green、Blue の散乱の深さを表し、表面下で散乱して返ってくる光の色調を指定できる。
スケール | Scale
散乱の深さを m 単位で指定できる。このため、オブジェクトのスケールも影響する。直径 1m の球オブジェクトならば、中心まで散乱させたい場合は 0.5 m とするなど。
IOR
Random Walk (Skin)のみ設定可。人の肌のIORは 0.57 。
異方性 | Anisotropy
Random Walk、Random Walk (Skin)のみ設定可。値がゼロは全方向に散乱し、値が大きい場合は散乱の方向が限定される。ひとの肌の平均的な異方性は 0.8。
スペキュラー | Specular
スペキュラーは物質の表面の鏡面反射のこと。この反射により、そのマテリアルには光沢がある、と認識できる。
分布 | Distribution
CGX および Multiscatter GGX を選択できる。CGXの方が処理が軽いが、物理的再現性に劣る。
IORレベル | IOR Level
鏡面反射の強さを調整できる。デフォルトの 0.5 は影響なしの値。ゼロの場合、鏡面反射はまったく起こらない。1 の場合は、強さが2倍になる。
チント | Tint
鏡面反射光が帯びる色を設定できる。ただし「非金属」マテリアルの場合は、鏡面反射光は色を帯びることがないので、物理的には正しくなく、またここでも正しい効果を得ることができない。
異方性 | Anisotropic
CD やフライパンの表面にみられるような微細な溝の影響による独特な反射をシミュレートする。通常は 1.0 とする。
異方性の回転 | Anisotropic Rotation
異方性の方向を回転できる。1 は360度、0.25 は90度など。
タンジェント | Tangent
入力 > タンジェント ノードを接続し、異方性の方向軸を指定できる。
伝播 | Transmission
物質の内部で光が伝わる割合を指定できる。値が大きいほど透明になる。ガラスや水などは通常、ウェイトを 1.0 とする。
アルファと異なり、同じ「透明」でも、光の屈折や、表面の反射、影などの物理的影響を伴う。
コート | Coat
塗装膜やワックスといったオブジェクト表面のコーティングの影響を表現する。ウェイトの値が大きいほど影響が大きい。
シーン | Sheen
絹やベルベット生地などにみられる色彩の変化をシミュレートする。ウェイトの値が大きいほど影響が大きい。以前の名称はベルベットだったが、布以外にも使える、という改称だろう。
粗さ | Roughness
すこし紛らわしいが、表面のなめらかさを示す数値ではなく、チント色の影響を示す数値。1 = 100%
チント | Tint
ウェイトの値によって、おもに周辺部の色調を指定できる。左はウェイトゼロ。そこへ、中央はやや青を加え、右は多めに白を加えた。
放射 | Emission
LEDのようなマテリアルからの発光を表現する。
カラー(発光色)、および、強さを設定できる。
Thin Film | 薄膜
マテリアル表面に、ナノメートル(10億分の 1 )単位の非常に薄い膜を設置できる。
薄膜の IOR | IOR
薄膜の光の屈折率。大きいほど反射色の変化も大きいようだ。
まとめ
このプリンシプルBSDFが導入される以前は、シェーダーノードは細かく機能別に分かれていて、すこし特殊なマテリアルになると、大量のノードが複雑に絡み合い、わたしを怯ませていました。
しかし、とくに4.0以降、プリンシプルBSDFはよりコンパクトに、ユーザーフレンドリーになりました。
プリンシプルBSDFの設定値のなかには、IOR、サブサーフェス、異方性など、これまで耳にしたこともないものもありますが、それらがなにを表現する際に使われるのかを軽く頭にいれておくだけで、無駄なトライアンドエラーも減り、マテリアル作りはとても楽になります。
参考になれば幸いです。
この記事が気に入ったらサポートをしてみませんか?