Blenderシェーダーノード辞典/グラスBSDF(Glass BSDF)
※記事製作時のバージョン:Blender 3.4
⇒ Blenderシェーダーノード辞典/目次
概要
グラスシェーダーは、水やガラスのような光を透過する物質の質感を作るノードです。
その他、氷・宝石・アクリル・酒・蜂蜜・食用油・ガソリン・オイルなどの質感にも使えます。
グラスシェーダーの各パラメーターの働きと設定方法は、以下のようになります。
カラー(Color)
透過光の色に影響を与えます。
ガラスに色をつける感じです。
カラーの明度(V)は、透過光と反射光の減衰に影響します。
白(V:1)の場合はまったく減衰せず、元の光と変わらない明るさで透過・反射します。
Vが小さくなるほど透過光と反射光は弱く(暗く)なり、黒(V:0)では完全に光を透過・反射しなくなります。
カラーは自由に設定してOKですが、完全な白(V:1)にはしない方が良いです(デフォルトはV:1)。
完全な白にすると、透過光の明るさが全く変化しない不自然なまでに透明すぎるガラスや水になります。
私の個人的な目安ですが、V(明度)は0.875以下で設定すると良いと思います。
※なお、ダイヤモンドなどではV:1にすることもあります。
粗さ(Roughness)
サーフェスの粗さを操作するパラメーターです。
透過光と光沢の鮮明さに影響します。
この値が小さいほどクッキリして、大きいほどモヤけます。
すりガラスや、汚れ・傷などで表面が曇ったガラスを表現できます。
IOR(屈折率)
Index of Refractionの頭文字で、直訳するとズバリ屈折率です。
ガラスなどを透かして見ると向こうが歪んで見えるのが屈折ですが、その歪みの強さを表します。
[1.0]が屈折無し。値が大きくなるほど歪みも大きくなります。
IORは実際の物質に基づいた値を設定するのが基本です。
見た目が劇的に変化するものではありませんが、正しいIORを設定すると、確実に「そのものの感じ」になります。
主な透過系の材質のIORは次の通りです。
IOR:材質
1.31:氷
1.33:水
1.45:ガラス・アクリル・ポリプロピレン・食用油脂・石油製品(ガソリン・灯油・オイルなど)
1.54:水晶・琥珀
1.57:アクアマリン・エメラルド・ポリスチレン・PET・ポリカーボネート・ポリ塩化ビニル
1.63:トルマリン・トパーズ
1.76:ガーネット・サファイア・ルビー
1.98:ジルコン
2.41:ダイヤモンド
この一覧は、使いやすいように数値を簡略化しています。
あまり厳密な数値にこだわりすぎると扱うのが大変なので、このくらい大まかにまとめた方が実用的です。
IORと反射率
現実の物質にはIORが高い物体ほど光を強く反射する(反射率が高い)という性質があります。
宝石がキラキラ輝くのは、IORが高いためです。
特にダイヤモンドは、最高クラスのIORなので反射率も高く、強く輝きます。
グラスシェーダーにはこの仕組みが組み込まれていて、IORを設定すると最適な反射率に自動で調整されます。
「IORは実際の物質に基づいた値を設定するのが基本」というのは、この点でも重要になります。
下の画像は、IORの値による反射光の変化です。IORが大きいほど、反射光が強く輝くようになります。
なお、この「IORが高い物体ほど反射率が高い」という性質は、フレネル反射という物理現象に基づくものです。
フレネル反射については、フレネルの記事で詳しく解説しています。
Distribution(分布)
サーフェスの粗さを表現するための計算方式を選択するパラメーターです。
シャープ、GGX、複合散乱GGX、ベックマンの4種類があり、それぞれ透過光と反射光の見た目が変化します。
各方式の特徴は次のようになります。
シャープ(Sharp)
粗さを表現しないモードです。粗さの値は無視され、完全に滑らかな面の透過光と反射光が描画されます。GGX
3DCGで標準的に使われる方式です。複合散乱GGX(Multiple-scattering GGX)
GGXと同じ方式ですが、反射光が暗くなりすぎるのを防ぎます。ただしGGXよりも計算が重くなります。ベックマン(Beckmann)[Cyclesのみ対応]
物理的に正確な透過光と反射光が表現できますが、計算が重くなります。
下の画像は、CyclesでDistributionを切り替えた比較です(粗さは[0.2]で固定)。
ガラスなどの質感としてはベックマンが一番きれいな仕上がりになるので、基本的にはデフォルトのベックマンのまま使用すればOKです。
なお、ベックマンはCyclesのみ対応です。
EEVEEでベックマンを選択した場合は、GGXとして描画されます。
※マニュアルには複合散乱GGXも[Cyclesのみ対応]と書かれていますが、実際にはEEVEEでも機能するようです。
※Distributionの仕組みについては、光沢シェーダーの記事でより詳しく解説しています。
EEVEEでの屈折表現について
今回の見本画像は、すべてCyclesでレンダリングしています。
EEVEEを使用すると、屈折の具合が異なります。
Cyclesのレンダリングは「現実をできるだけ再現する」方法なので、時間がかかりますが、屈折もほぼ現実と同じになります。
EEVEEは「最低限のレンダリングをして、屈折や反射はそれらしく見えるように後付けで画像処理をする」方法なので、非常に高速ですが、少し不自然な屈折になります。
また、EEVEEで透過・屈折を描画するには、専用の設定をする必要があります。
※EEVEEの透過・屈折の設定方法については、私のブログ『EEVEEで屈折の設定方法』を参照してください。
ノーマルを使った設定方法
グラスシェーダーでのバンプマッピングやノーマルマッピングは、反射と屈折の両方に影響します。
窓ガラスやペットボトルなどは、ノイズテクスチャを使ったバンプマッピングで表面の歪みを表現すると、より自然な見た目になります。
また、模様を細かくしたノイズテクスチャ(またはボロノイテクスチャ)を元にバンプマッピングを設定すると、表面がボコボコした視線をさえぎるためのガラスも作れます。
(このようなガラスを型ガラスといいます。)
深みのある色合いの作り方
グラスシェーダーのカラーを単色で設定すると、全体的に変化のない均一な色合いになります。
特に濃いめの色にしたい場合、単色設定では、かなりどぎつい色になってしまいます。
レイヤーウェイトとミックスカラーでカラーに変化をつけると、見る角度によって色味の変わる、深みのある色合いを表現できます。
この手法はEEVEEでも有効です。
EEVEEの屈折は簡易表現なので、単色設定ではかなり変化のない平面的な見た目になりますが、レイヤーウェイトを使うと立体感を補うことができます。
ボリュームを使う方法
別の手法として、グラスシェーダーとボリュームの吸収を組み合わせると、オブジェクトの厚みに応じて濃淡が変化するリアルな色合いを表現できます。
ボリュームの吸収の[カラー]と[密度]は、メッシュの厚さによって見え具合が変わるので、画面で確認しながら好みで調整します。
なお、この手法はCycles専用です。
EEVEEはメッシュ形状を元にしたボリュームの描画に対応していないため、この手法は使えません。
※モディファイアー[メッシュのボリューム化(Mesh to Volume)]も試してみましたが、うまく描画されませんでした。
プリンシプルBSDFとの違いと使い分け
水やガラスなどの質感は、プリンシプルBSDFでも作ることができます。
※このような質感を作る場合は、プリンシプルBSDFの[伝播]を[1]にします。
グラスシェーダーとプリンシプルBSDF(伝播:1)は、質感的には大差ないので、次のように使い分けます。
単純に水やガラスなどを作る場合
⇒ グラスシェーダーを使った方が簡単に設定できます。マテリアルの一部だけをガラスなどの質感にする(テクスチャで透過のON・OFFを切り替える)場合
⇒ プリンシプルBSDFの方が向いています。「きれいな水が、だんだん濁っていく」というような、透明・不透明が切り替わるマテリアルアニメーションを作る場合
⇒ プリンシプルBSDFの方が向いています。
【使用した3Dモデル】
Material ball in 3D-Coat - Download Free 3D model by 3d-coat (@3d-coat) [a6bdf1d] - Sketchfab is licensed under Creative Commons Attribution
よろしければサポートお願いします。いただいたサポートは次の記事の制作費になります。