見出し画像

Blenderシェーダーノード辞典/フレネル(Fresnel)

※記事製作時のバージョン:Blender 3.3
Blenderシェーダーノード辞典/目次

概要

フレネルは、リアルな反射や光沢を表現するためのノードです。
現実の物質と同じ反射や光沢を簡単に作ることができます。

フレネルの働きを簡単に表現すると、「地の質感と反射光のミックス度合い(係数)の操作」となります。
使い方は、下図のようなノードツリーを用意し・・・

シェーダーミックスの係数にフレネルを接続すれば完了!
これで、現実の物質と同じ反射や光沢を再現できます。

フレネルは、フレネル反射と呼ばれる物理現象を元に、最適な反射率を計算してくれるノードです。
フレネル反射はすべての反射・光沢に共通する現象なので、現在のCGではリアルな質感表現に不可欠の基礎概念となっています。
知らなくても問題はありませんが、知っておくと世界の解像度が上がるので、ちょっと詳しく説明しておこうと思います。

フレネル反射の基礎知識

※ここではイメージをつかみやすいように、かみ砕いた表現で説明します。物理学的な正しい定義についてはWikipediaなどを参照してください。

フレネル反射とは、元々は物理学の用語で、光を透過する物質の表面に生じる反射のことを指します。
窓ガラスに景色が映り込んだり、海やプールの水面で太陽がきらめいたりするのがフレネル反射です。
※「フレネル」は、この現象を説明する数式を作った物理学者の名前です。

このような反射の場合、例えば、水面を真上から見ると水中まで見通せますが、斜め~水平方向から見ると周囲が映り込み、水中は見えなくなります。
このようにフレネル反射には、

  • 面を正面から見ると、反射は弱くなる

  • 面を見る角度が斜め~水平方向になるほど、反射が強くなる

という性質があります。

実はこの性質、水やガラスに限らず、すべての物質の反射(鏡面反射)に共通しています。
立体的な形をした物体の反射や光沢を観察すると、見る場所によって下の画像のように反射の強さが変化しますが、これはフレネル反射と同様な現象によるものです。

というわけで、CGにおいてフレネル反射を表す数式は、リアルな反射・光沢を表現する上で欠かせないものとなっています。

フレネルノードの仕組み

下の画像のように、フレネルは黒~白の明度情報を出力します。
これはカメラから見た面の向きを元に計算された、反射率のデータです。

反射率とは、その面に当たる光の強さに対する、反射光の強さの割合です。
例えば[100]の強さの光が当たって[40]の強さで反射したとき、反射率は[40%]になります。

反射率[40%]をノードで作るには、シェーダーミックスを次のように設定します。

シェーダーミックスの係数は「第2シェーダーの割合」を示すので、このように設定すると係数=反射率にすることができます。
上の場合は係数が[0.4]なので、光沢シェーダーの割合が[40%]、つまり反射率[40%]となります。

上の例では係数を単一の値で設定しているので、すべての面の反射率が[40%]になっています。
この係数にフレネルを接続すると、面を見る角度によって変化する自然な反射率が設定できます。

フレネルの出力は、面の反射率[0~100%]を[0~1]の値に変換したデータです。
白い部分ほど反射率が高く、黒い部分ほど反射率が低くなります。
これをシェーダーミックスの係数に入力することで、連続的に変化する屈折率が設定されます。

フレネルの設定方法

IOR(屈折率)について

フレネル反射では、面を見る角度だけでなく、その物質の屈折率も反射の強さ(反射率)に影響します。
屈折率が高いほど全体的な反射率も高くなります。
フレネルのIORは、この屈折率を設定するパラメーターです。
※「IOR」は「Index of Refraction(屈折率)」の頭文字です。

IORの設定方法

IORに実際の物質の屈折率を設定すると、その物質の質感(反射率)を再現することができます。
屈折率を調べる場合は、下記のサイトが参考になります。
材料の屈折率一覧表 | Material IOR List - 札幌デザイン制作会社 A4JP
屈折率一覧表 – 薄膜測定のための屈折率値一覧表

質感にそこまでこだわらない場合、画面上の見た目を元に好みでIORを設定してもOKです。
IORを感覚的に設定する場合のおおまかな目安は、以下のようになります。

  • 水やガラスなど、光を透過する材質のIOR
    水:1.33
    ガラス:1.45
    宝石:1.54~2.41

  • 光沢のある金属のIOR
    鉄:1.51
    ステンレス:2.76
    その他:1.45~2.7

  • その他一般的な材質(プラスチック、石、木材、etc…)のIOR
    プラスチック:1.45
    コンクリート:1.5
    その他:1.45~1.65

―――――――――――――――
【灰ならし裏ばなし】
「プラスチックや石、金属など、不透明な材質の屈折率はどうやって測定しているんだろう?」
と前々から疑問だったのですが、理工系の相方が教えてくれました。
反射率を測定して、フレネルの式に当てはめて逆算しているんだそうです。
・・・なんだか誤魔化されている気がしなくもありません。
それ本当に「屈折率」と呼んでいいのかなぁ・・・?―――――――――――――――

ノーマルを使った設定について

フレネルは、バンプマッピングやノーマルマッピングに対応しています。

シェーダーにバンプマッピングやノーマルマッピングを設定する場合は、フレネルにも設定すると、擬似的な凹凸に合わせたリアルな屈折率の変化が表現できます。

フレネルの使い処

プリンシプルBSDFには、フレネル反射の仕組みが組み込まれています。
フレネル単体で設定するよりも高度な仕組みで、[粗さ]の値に応じて、最適なフレネル反射になるよう自動で調整されます。
そのため、プリンシプルBSDFで基本の質感を作る場合は、フレネルノードを使う必要はありません。

フレネルは、プリンシプルBSDFでは表現できない特殊な反射・光沢を作る場合に使います。

使用例:特殊なコーティング

特殊な塗料やフィルムでコーティングされた材質は、光沢が特定の色を帯びることがあります。
プリンシプルBSDFでは光沢に特定の色をつけることはできないので、そのような場合は光沢シェーダーで設定します。
フレネルは、その際に使用します。
※表現したい光沢によっては、フレネルではなくレイヤーウェイトを使った方がいいこともあります。

フレネルとレイヤーウェイトの違い

レイヤーウェイトは、フレネルと同じく、カメラから見た面の向きを元に黒~白の明度情報を出力するノードです。
この2つはよく似た働きをしますが、設定方法と用途に次のような違いがあります。

  • フレネル
    設定方法:屈折率を元に、物理的な数式に基づいて設定する
    用途:現実の物質の反射率を再現する

  • レイヤーウェイト
    設定方法:画面上の見た目を元に、感覚的に設定する
    用途:いろいろなトリック的表現に使用する
    ※詳しい使い方は、レイヤーウェイトの記事を参照してください。

Blenderシェーダーノード辞典/目次

※添削・構成アドバイス:相方

【使用した3Dモデル】
Material ball in 3D-Coat - Download Free 3D model by 3d-coat (@3d-coat) [a6bdf1d] - Sketchfab is licensed under Creative Commons Attribution


ここから先は

0字

基本プラン

¥500 / 月
このメンバーシップの詳細

よろしければサポートお願いします。いただいたサポートは次の記事の制作費になります。