今回はエネルギー保存の法則についてです。
Arnoldをはじめ、最近のレンダラーについてるPBR系のマテリアルでは標準機能になってるのではないかと思います。
実際どう動いて調整されているのか見てみたいと思います。
エネルギー保存の法則とは
物体が反射・散乱として返す光エネルギーの総量は、入射してきた光エネルギーを超えないという原則です。
自己発光する物体の場合、反射光とは別に発光が加算されるため観測される輝度が入射光より大きく見えることがありますが、発光しない物体では返される光量は必ず入射光以下になるというものです。
テストシーンの準備
エネルギー保存の法則がアーノルドのシェーダーでどんな風に動いてるのか見てみましょう。
Ai Sky Dome LightとSphereのシーンを作ります。
こんな感じです。
Ai Sky Dome LightはColor、Intensityなどはいじらず、Samplesだけ3にしました。
この状態のライトはすべての方向から1の力で光を当てるので、エネルギー保存の法則によりレンダーされた球体の返す色の最大の強さは1になるはずです。
シェーダーはAi Standard Surfaceを使います。
Ai Standard Surfaceのエネルギー保存の動きを見てみる
まず、Diffuseのみを返すシェーダーを準備しました。
BaseのWeightとColorは1(白)に、SpecularのWeightとColorは0(黒)に設定しました。
他のパラメーターは設定変更していません。
これでDiffuseのみ色がつくシェーダーになったはずです。
これでレンダーしてみます。
Arnold Render ViewのPixelタブで見てみると、球体にカーソルを合わせるとbeautyとdiffuseの項目は1を返していることがわかります。
1の光を当てたのでDiffuseが1の光を返した。
ここまで問題無いですね。
それではシェーダーにSpecularを足してみます。
Roughnessは0です。
これでレンダーしてみます。
Specularの数値が足されましたね。
Diffuseの数値は変えてないはずなのにBeautyは1になってます。
AOV別で見るとdiffuseが0.891に落ちており、specularに0.11という数値が入っているのがわかります。
Specularが足されたため、Standard SurfaceはDiffuseの数値を下げて1を越えないように調整したといえると思います。
これがAi Standard Surfaceにおけるエネルギー保存の挙動になります。
この調整は自動で行われています。
それぞれのAOVの画像も見てみましょう。
※beautyの例とカーソル位置が違うので数値は違います。
この画像だけだとわかりにくいのですが、外側に行くにつれて少し暗くなっています。
こちらはspecularのAOVの画像です。
※こちらもbeautyの例とカーソル位置が違うので数値は違います。
こちらは外側に行くにつれ明るくなっているのがわかると思います。
specularが明るくなる分だけ、diffuseが暗くなっていくということです。
Pixelタブの数値を見てもらうとピックする場所がどこでも、diffuseとspecularを足すと1なのが確認できると思います。
このような形でArnoldはエネルギー保存のルールを自動で適用してくれてます。
まとめ
以上がエネルギー保存の法則の動きの解説になります。
AOVを増やせば増やすほど複雑な結果になってきますが、自動処理ですので無理なシェーダーを組まない限りは問題ありません。
基本的なPBRのルールを守っていればほとんど意識することなく適用されます。
PBRの基礎をおさえつつ、シェーダーの動きを把握してしっかりハンドリングして質感を設定していけるといいですね!



