PBRユーティリティ

TL上で少し話題になったPBR対応テクスチャがSubstanceDesignerで作れるかどうかという話。

実はPBR対応のテクスチャを作成するためのユーティリティがSDにはいくつか存在しています。

今回はそれらのノードの話を。

PBRに対応するとは?

そもそもPBR対応というのは、例えば石なら石として正しい色になっている、ということではありません。

石と言っても種類は色々ありますし、同種の石でも成分に違いは出ます。

同じ花崗岩でも瑞牆と小川山では色味の違いは出ますし、表面の凹凸も変わってきます。同じ山でも場所が違えば違ってきます。

どうしても瑞牆の花崗岩を再現したい!というのであれば、瑞牆に行って岩の写真を撮影するしかありません。

ではPBR的に正しいテクスチャとは何かというと、アルベドであれば黒の下限と白の上限です。

RGBすべての成分が0、RGBすべての成分が1という黒と白は現実には存在しません。

前者はすべての光を完全に吸収するのでブラックホール化何かでしょう。

後者は拡散反射なのに光を完全に反射します。ホワイトホール?いや、まあ、普通にないですね。

また、金属であれば純金属はその反射率がすでに求められています。

純度100%でなければ変化はするかもしれませんが、基本的には求められている反射率で問題ないはずです。

つまり、PBR的に正しいということと、特定の物体(瑞牆の阿修羅岩とか)の色が正しいというのは別の問題だということです。

特定物体の完全に正しい色がほしい、というのであればフォトスキャンするしかありませんが、そこまで特定の何かがないのであれば物理的に間違ってない値を使って目合わせでもいいんじゃないかな、と思っています。

もしも特定物体の正しい色がほしいのだ!という方はポリフォニーの内村氏が今年のCEDECで解説してた色彩工学の資料をお読みください。

http://d65.xyz/cedec2016

では、各ノードを解説していきます。

これらのノードは[Material Filters]->[PBR Utilities]の中にあります。

BaseColor/Metallic/Roughness converter

sd152.jpg

SDでは通常、BaseColor/Metallic/Roughness のパラメータでマテリアルを作成します。

しかしそれとは別に Diffuse/Specular/Glossiness のパラメータでマテリアルを作成するシステムも有ります。

このノードは通常の BaseColor/Metallic/Roughness で作成されたマテリアルを別のマテリアル表現に変換してくれます。

どのような種類があるかというとこんな感じ。

sd157.jpg

Diffuse…以外にも、VrayやArnoldといったレンダラにも対応しています。

あまり使う機会はないかもしれませんが、今までBaseColor方式で作っていたマテリアルを急遽別のシステムに出さなきゃいけないという場合には重宝するかもです。

PBR Albedo Safe Color

sd153.jpg

上でも書きましたが、PBRにおいてアルベドの黒と白は完全な黒と白にはなりません。

このノードはそのような黒や白を妥当は範囲にクランプしてくれるノードです。

例えば全て0の真っ黒を繋げるとこうなります。

sd158.jpg

グレーっぽくなっているのがわかりますよね。

なお、入力ピンの下の方はMetallicです。完全金属の場合はBaseColorは素通りされます。

そのような場合は本来何を入力しても真っ暗にしたほうが良かったのでは?と思ったり思わなかったり。

パラメータでDiffuseモデルにも変更ができます。

また、Torleranceパラメータで許容誤差を変動させることが出来ます。

このパラメータが0なら50 sRGBに、逆に1なら誤差とを大きく持って30 sRGBくらいまではクリッピングされません。

まあ、非金属のマテリアルを作って、その際にBaseColorに自身が持てないような場所に使う機能という感じでしょうかね。

PBR BaseColor/Metallic Validate

sd154.jpg

このノードも前者と同じようなノードですが、こちらはBaseColorをクリップしたりしません。

このノードの場合はBaseColorにミスがある部分が赤くなります。PBR的に正しい場合は緑です。

sd159.jpg

[Level]ノードでレベルを変更した結果として溝の部分が白飛びしています。

これがPBRのミスです。

この結果を利用して赤くなっている部分のベースカラーをマスキングすることも可能です。

目合わせでマテリアルを作っている場合は最後にこのノードを通して問題ないかだけは調べておく方がいいと思います。

PBR Dielectric F0

sd155.jpg

非金属物体の一部を選択してフレネル反射係数 f0 を取得します。

f0が求まるとIORなんかも求められますが、[Custom IOR] を利用すればIORから係数を求めることが出来ます。

何に使うの?と言われると、まあ、ちょっと困るねw

選択できる物体はこんな感じです。

sd160.jpg

PBR Metal Reflectance

sd156.jpg

最後はこちら。金属の反射率を金属の種類に応じて取得できるノードです。

今まではDONTNODのチャートを利用していたのですが、こちらを使ったほうが簡単でしょう。

何が選べるかは以下のようになっています。

sd161.jpg

代表的な金属は網羅されているかと。

というわけで今回はここまで。