物理ベースレンダリング(2) glTFシェーダの基礎

前回は物理ベースレンダリング(PBR)とglTFの概要について紹介しました。今回はMetasequoia 4内でどうglTFを扱うかを基礎から解説します。

Ver4.7で既にglTFシェーダと、glTFを格納するglbファイル入出力を搭載していましたが、当初はglbファイル出力をしない人には縁のない機能だったかもしれません。しかし、Ver4.8.0で物理ベースレンダリングに対応したパストレーシングが搭載され、ここでglTFシェーダは従来のPhongに代わるパストレーシングレンダリング向けの標準シェーダとしての位置付けとなりました。glbファイルを扱わなくても、パストレーシングレンダリングで高品質な画像を得たい人は、まず材質にglTFシェーダを割り当てるところから始まりとなります。

一度も使ったことのない方、また既に使っている方にもおさらいとして一から説明していきます。

glTFシェーダの設定

材質パネル内の[設定]を押して[材質設定]画面を開いた状態で、[シェーダ]欄を[Phong]から[glTF (PBR)]に切り替えます。

シェーダを変更すると[諸設定]の内容が切り替わり、また[Specular-Glossiness設定]と[拡張設定]が折りたたまれた状態で表示されます。この3つのグループ内の各項目がglTFシェーダ向けのパラメータとなります。

PhongよりもglTFシェーダをメインに使うなら、毎回切り替えるのが面倒なので、glTFシェーダを標準にしましょう。glTFシェーダに切り替えた材質を選択した状態で、材質パネルの[他]内の[標準材質として設定]メニューを呼び出すと、以降新規に作成した材質は登録された内容と同じになります。やっぱりPhongに戻したいときはメニュー横の矢印を押してください。

金属感・粗さ

前回も簡単に解説しましたが、物理ベースレンダリングにおいては[金属感]と[粗さ]の2つのパラメータが質感の設定に大きく寄与します。

この2つの値を変更しながら、プレビュー表示上でどう変わるか観察してみましょう。縦方向に[金属感]、横方向に[粗さ]を変えて並べた結果がこちらです。

リアルタイムプレビュー表示

金属感が0のときは光の反射によるハイライトが付きません。金属感が0より大きくなるとハイライトが確認できるようになりますが、粗さが小さい左下のほうでは全体が暗くなります。

粗さに注目してみます。粗さが小さいうちは丸いハイライトの大きさが変化していきますが、0.7くらいになると輪郭がぼけてきて、1.0になるとハイライトがわからなくなります。

今度は環境マップを適用した状態でプレビュー表示を観察します。

環境マップ適用時のリアルタイムプレビュー表示

金属感・粗さの変化に対する傾向は同じですが、金属感が1に近づくにつれて背景の環境マップがくっきり反射してくるのがわかります。また、粗さが高くなるほど環境マップがぼやけて、元の画像がどんなかわからなくなります。

ちなみに、パストレーシングでのレンダリング結果がこちらになります。

パストレーシングレンダリング

おおむね同じような結果ですが、プレビュー表示とは環境マップのぼやけ具合などは微妙に異なります。これは、プレビュー表示が高速化やメモリ軽量化などのために処理を簡略化していることが一因です。(もう少し違いを小さくできないか検討中…)

ちなみに、glTFシェーダはすべてのパラメータがDirect3DやOpenGLによるリアルタイムのプレビュー表示に反映されます。材質設定ウィンドウ内の左上の小さい球体だけでなく、プレビュー表示と材質設定を並べて、実際のオブジェクトを観察しながら値を調整すると効率がいいでしょう。

並べて表示するには広めのモニター推奨

周囲光の影響について

glTFシェーダを適用したとき、Phongに比べて全体に白っぽいのが気になることがあります。

Phongもですが、glTFシェーダでもプレビュー表示には[周囲光]が影響します。光の当たらない箇所を暗くしたい場合、[照光]内の▼ボタンから[光源設定]を呼び出し、[光源]タブ内の明るさ(V)を下げてください。

明るさを0にすると、光の当たらない箇所は真っ黒になります。適当と思う明るさを設定してください。

なお、周囲光はプレビュー表示にのみ適用されます。パストレーシングレンダリングやglbファイル出力には影響しません。

拡張設定

Ver4.8.3ではPBR向けの拡張仕様に一通り対応しました。

[諸設定]グループの下側にある、閉じた状態の[拡張設定]をクリックすると、拡張設定内の各パラメータが表示されます。

チェック項目とその下に値の入力が並んでいますがが、チェックをオンにするまで各項目の値の設定はできません。

拡張設定は数が多くて一度に紹介できませんので、次回以降で説明していきます。