2017年5月11日木曜日

VrayMaterial(VrayMtl)の内部計算の検証

気が付けばほぼ一年ぶりの更新・・・。

昔に(2012年)個人で検証したVrayMaterial(VrayMtl)のShaderの計算に関するメモ。このままだとただ埋もれるだけだなと思い公開する事にしました。分かり辛く、大した情報でもないのであれですが、埋もれるくらいなら、どこかで誰かの役に立てば、、、と思い。

注意
エレメント出力して数値を確認して合っているかの確認を行ったものの、メーカーに問い合わせたりした訳ではないので、実際の所は不明。また、メモなので分かり辛いの申し訳ないです。5年ほど前の検証なので今はまた違ってるかも。

フレネルを考慮しない場合
reflection = x; // x = GUIから等から入力された値
refraction = (1.0 - reflection) * x; // x = GUIから等から入力された値
diffuse = 1.0 - refraction - reflection; // diffuse

反射 0.5、 屈折 0.5と入力した場合
reflection = 0.5 //反射率
refraction = (1.0 - 0.5) * 0.5 = 0.25 //屈折率
diffuse = 1.0 - 0.5 - 0.25 = 0.25 //拡散反射率
がレンダリングで用いられる値

各rawやfilterの値について










Vrayは、これらの計算をRGB各チャンネルで行っている。

エネルギー保存の計算による色の破綻
計算の性質上、以下のような設定をした際などに設定していない色が表れる事がある。
例:diffuseをグレー[0.5, 0.5, 0.5] reflectionを赤色[1.0, 0.0, 0.0]に設定した場合
入力していないシアンが表れる














先程のシェーダーの計算式に値を入力してみると、レンダリング時のdiffuseカラーが[0.0, 0.5, 0.5]とシアンの色になってしまっている。

このような現象を望まない場合は、以下の2つの方法などで対応が可能
①Energy preservation mode:を「Monochrome」とする
Energy preservation mode:Monochrome
このように設定する事で、割合の計算をしたのちにRGBの値を掛けるようになり
直感的な色味が反映される。一方で「エネルギー保存則」の精度が落ちるとも言われており、
メリットデミリットがあるようだ。ちなみに、※Mentalrayのベーシックなマテリアルはこのタイプのようで
アーティスティックを配慮してそのようにしているのでしょうか?
(海外のどっかのメンタルレイのサイトでそのような解説を見たような気が)

※s2013_pbs_mia_notes.pdfより


















②VrayBlendMatrialを用いる
VrayBlendMaterialを用いてブレンド具合で調整。
この方法だと物理ベースが担保される。
Additive modeにチェックを入れると物理ベースが破綻する。
この辺りの判断はワークフローなどにもよるので自己責任で。
特別な理由がなければ、基本的にはチェックを入れずに作業をするのが良いとされている

0 件のコメント:

コメントを投稿