物理ベースレンダリング(6) 光沢・反射光・非照明

複数回にわたって紹介してきたglTFにおける物理ベースレンダリングですが、今回で最後となります。残りの拡張設定「光沢」「反射光」「非照明」を取り上げます。

光沢 (Sheen)

光沢は特にサテンのような艶のある生地を表現するのに有用です。

光沢がどのように影響するか、球体にライトを当てるとわかりやすいです。

左:光沢なし、右:光沢あり

上図の左右を比べると光沢の有無の違いは一目瞭然ですが、詳しく観察すると、光沢ありの場合はライトからの入射角が浅くなる箇所がリング状に明るくなっています。中心付近の反射光が入射角の深く箇所に影響するのと逆の関係であることがわかります。

光沢用のパラメータは「光沢係数」「光沢粗さ」の2つです。係数は光沢の強さを、粗さは光の反射をどれだけぼかすかを調整します。

左:光沢粗さ0.6、右:光沢粗さ0.2

なお、光沢の表示に関して不具合があったため、Ver4.8.3bで修正しています。それ以前のバージョンの方は必ずアップデートしてご利用ください。

反射光 (Specular)

反射光(スペキュラー)はPhongシェーダのものと同様です。glTFシェーダでは金属感・粗さで光源に対するハイライトがどのように写るか調整しますが、Phongに比べて直接的に調整しにくいと感じることがあります。

そこで拡張設定として「反射光」が追加され、反射光の調整用に「反射係数」と「反射色」の2つのパラメータが用意されています。

左:反射色を赤、真ん中:反射光の拡張設定オフ、右:反射係数0.3

元の状態(真ん中)に対して、色と係数を調整したものがそれぞれ左と右の状態です。反射光の色と強さを直接指定して質感を調整することができます。

非照明 (Unlit)

こちらは物理ベースレンダリング用のものではありませんが、glTFシェーダの拡張設定に用意されているので、ついでに紹介します。

従来からConstantシェーダがありましたが、それと同じ役割を持ちます。ライティングによる計算を一切行わず、単色でそのまま表示するものです。

左:通常のglTFシェーダ、右:非照明

敢えてライティングしたくないオブジェクトに対して指定してください。

最後に

glTFにおける物理ベースレンダリングを全6回で紹介してきました。各拡張設定とそのパラメータをざっと説明しましたが、サンプルもそれほど多くは用意できなかったので、この解説だけではまだそれほどわからないという方もいらっしゃるかもしれません。まずは実際にMetasequoia 4で操作して、パラメータを色々変えながら試してみてください。

glTFとその新しい拡張設定に対応したアプリなら、アプリ間で(ほぼ)同じ見た目を維持しながらデータを運搬することもできます。今後より多くのアプリ・サービスでglTFが利用され、glTFのデータも増えていくことと思いますが、その一助になれば幸いです。