Blenderであそんでみた

3D-CGソフトBlenderの小技や豆知識など。

プリンシプルBSDFのスペキュラーについて

f:id:hainarashi:20200916182021j:plain

※記事製作時のバージョン:Blender2.90

 

プリンシプルBSDFで、いろいろな質感表現の方法を探っていくシリーズ。
第6回はスペキュラーについてです。
「○○の作り方」という枠に収まらないので、単独で解説します。

 

「スペキュラー」って何?

非金属の鏡面反射率を設定するパラメーターです。
この値が大きいほど、サーフェスの反射・光沢が強くなります。

f:id:hainarashi:20200909162606j:plain

スペキュラー

 

レンガやコンクリートアスファルトなどは光を反射しないような気がしますが、実は反射します。
レンガに横~斜めから光を当てると白く光って見える、これがレンガの反射光です。

f:id:hainarashi:20200910135027j:plain

レンガの反射光

 

レンガに限らず、すべての物質は光を反射する性質を持ちます。

なので「マテリアルの光沢を消したい」場合でも
スペキュラーを「0」にしてはいけません。

スペキュラーを「0」にしてしまうと、上のレンガのような「光の当たる角度によって生じる光沢」まで生じなくなってしまいます。

こういう場合は粗さを上げて、光沢が「見えなく」なるようにします。

f:id:hainarashi:20200910161927j:plain

光沢を消す時は粗さを上げる

 

スペキュラーの調整方法

スペキュラー「0~1」は、反射率 0~8% に対応します。
スペキュラーの初期値「0.5」は、反射率 4% に当たります。
これはほとんどの材質で良い具合の反射になるので、基本的にそのままでOKです。

 

スペキュラーの調整は、

  1. まず粗さを調整して、光沢の鮮明さ(ぼやけ具合)を決める
  2. その上で光沢の強さそのものを変えたい場合に、スペキュラーを変更する

という手順で行います。

 

実測によると、現実の物質(非金属)の反射率は 2~5%の範囲なので、スペキュラーを変更する場合はこれを換算した「0.25~0.625」の範囲で調整します。
スペキュラーを変更する際の決まりや指標的なものは特に無いようなので、画面上の見た目を元に好みで調整します。

 

細かいひび割れや窪みの表現

スペキュラーには

  1. 材質自体の質感表現をする
  2. 細かいひび割れや窪みで光が入らない場所を表現する

という二種類の使い方があります。
前項は1の説明でした。この項では2について説明します。

 

下の画像を比べてみてください。

f:id:hainarashi:20200918090954j:plain

板張り比較

Bの方が、よりリアルに見えると思います。
この違いはスペキュラーマッピングの有無が元になっています。

Aのマテリアルは

という2つの要素で作っています。 

これだけでは板の隙間部分に光沢ができてしまい、違和感があります。

f:id:hainarashi:20200918091709j:plain

Aのマテリアル

本来ならば、板の隙間部分には光が入らず、光沢はできないはずです。
しかしバンプによる凹凸は擬似的な表現なので、実際に板の隙間が窪んでいるわけではありません。
そのため、隙間(のはず)の部分にも板面と同じ強さで光が届き、光沢ができてしまうのです。

そこで、スペキュラーマッピングを追加したのがBのマテリアルです。

f:id:hainarashi:20200918091702j:plain

Bのマテリアル

スペキュラーマッピングにより、板面のスペキュラーは「0.5」、隙間の部分は「0」にしてあります。
これで隙間には光沢が無くなり、よりリアルな板張りを表現できるようになりました。

 

このように、スペキュラーは

  • 細い溝
  • ひび割れ
  • 小さい穴

などで光が届かず光沢ができない(弱い)表現に使うことができます。

※余談ですが、これらの「細かい陰」の元になるテクスチャを「キャビティマップ」と言います。キャビティ(cavity)とは「空洞」「窪み」「穴 」のことです。

 

こちらはスペキュラーマップ(キャビティマップ)の効果がとても良く分かる動画です。
※プリンシプルBSDFが導入される前の動画なので "Refrection Map" という呼び方になっています。

www.youtube.com

 

金属での反射率の操作方法

スペキュラーは非金属でのみ働くパラメーターです。
金属(メタリック「1」)の場合、スペキュラーの値を変えても反射率は変化しません。

f:id:hainarashi:20200918133204j:plain

金属のスペキュラー(効果無し)

金属の反射率はベースカラーで操作します。
光沢を減らしたい部分はベースカラーの明度を下げます。
黒(V=0)で全く光を反射しなくなります。

f:id:hainarashi:20200918133158j:plain

金属の反射率操作

 

ガラスや水などでの反射率の操作方法

ガラス・水・宝石など(伝播「1」)では、反射率はIOR(屈折率)と連動して自動で設定されるようになります。
この場合、スペキュラーの値を変えても反射率は変化しません。
詳しくはこちらの記事を参照してください。

hainarashi.hatenablog.com

 

ラフネスマッピングとの使い分け

例えばタイル張りの場合、目地部分はそんなに深く窪んでいるわけではないので、光は普通に中まで届きます。
しかし目地の部分まで光沢があると、おかしな感じになります。

f:id:hainarashi:20200918104819j:plain

タイル張り比較

実物で考えると、これは「タイルはツルツル、目地はザラザラ」という表面の粗さの違いが原因です。
こういう場合は、スペキュラーではなく粗さで違いを出します。

f:id:hainarashi:20200918105745j:plain

ラフネスマッピング

 

補足と余談

反射率とF0

この記事では解りやすいようにスペキュラーを「反射率」と表現してきましが、正しくは「ある面に垂直に光が当たった時のフレネル反射率」です。
(これを「F0」と言います)

この辺りの詳しい説明は、個人が趣味で使う分には必要ないので省きます。
興味のある方は、記事のラストで紹介している参考サイトなどを参照してください。

 

光を反射しない物質

「すべての物質は光を反射する性質を持つ」と書きましたが、反射率が 0%に近い物質もあります。
例外中の例外なのでマテリアル作成的に気にする必要はありませんが、モノとして面白いので紹介しておきます。

logmi.jp


それと、ブラックホールは反射率 0%だそうです。これも例外ですね。

 

 

以上、スペキュラーについてでした。

 

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

 

twitter

灰ならし (@hainarashi) | Twitter

 

使用した3Dモデル

 

参考サイト

Principled BSDF の使い方

『THE COMPREHENSIVE PBR GUIDE Volume 1: The Theory of PBR by Allegor…

『THE COMPREHENSIVE PBR GUIDE – Vol. 2: Practical guidelines for creat…

DONTNOD Physically based rendering chart for Unreal Engine 4 | Sébastien Lagarde

Physically Based Materials | Unreal Engine Documentation

PBRマテリアルのテクスチャは実際どのようなテクスチャなのか – tkmkrocket_tech

フレネル反射率について - OLD hanecci’s blog : 旧 はねっちブログ

 

改訂履歴

2022年2月14日 ガラスなど、透過系材質の反射率設定に関する説明を追加。