今回は、Mia_materialについての補足です。
Mia_materialの特徴の一つに、エネルギー保存の法則があります。
(ここではMentalrayについて述べますが、Vrayでも応用がきくと思います)
エネルギー保存とかいうと、難しく聞こえますがバッサリ切って捨てると、
”受けた光(エネルギー)より強くは光らない”ということです。
式で書くと Diffuse(拡散) + Reflection(反射) + Refraction(透過・屈折) <=?1 (100%)
そもそもDiffuse=1(100%)、Reflection=1(100%)、Refraction=1(100%)とはどういう状態か。
全ての光を拡散反射し、全ての光を鏡面反射し、全ての光を透過・屈折させる、という感じでしょうか。
ちょっと絵が想像できませんね。
実際、Diffuse=1、Reflection=1、Refraction=1と設定した場合、レンダリング結果はどうなるのか?
どうやらmia_materialではうまい具合に、それぞれの値を調整して合計が1以下になるように調整してくれるようですが、どういう風に調整しているのか?
すべての要素が均等にスケールされるのか、それとも特定の要素が優先されるのか?
この疑問に対し、マニュアル曰く
- 透明度は、拡散からエネルギーを取得します。たとえば、透明度が 100 の場合、拡散はゼロになります。
- 反射は拡散と透明度の両方からエネルギーを取得します。たとえば、反射が 100 の場合、拡散と透明度は両方ともゼロになります。
相変わらずよくわかりませんw
ひとまず上のをマニュアル1,2としておきます。
意訳すると
マニュアル1は、(Reflection事はひとまず置きにして)、DiffuseとRefractionだけ考えると、
DiffuseとRefractionの合計の値が1(100%)を超えたら、その分Diffuseが減るよ、ということです。まだちょっと分かりにくいのでグラフで。
図2の場合、Diffuse100%,Refraction40%で設定値の合計が100%を超えた分、出力結果でDiffuse値が減少してDiffuse60%,Refraction40%になっています。
同様に図3の設定値の場合、Diffuse値はすべてRefractionに喰われてしまい0%になってます。
この場合、Diffuse値をどう設定しようと出力結果には表れないことになります。
実際にMaya上でレンダリングして確認してみます。
最初、DiffuseWeight=1.0、カラーを赤に設定し、そこから徐々にRefraction(Transparency)の値を増やしていきます。(Reflectivityは常に0に設定)
Refractionの値が上がるに従って、Diffuseの赤が弱くなっているように見えませんか?
Refractionが1(100%)になった状態ではDiffuseのカラーをいくら変更しても結果には影響ありません。
マニュアル2は、上の要素のReflection(反射)が入ったものです。
またざっくり意訳すると、Reflection(反射)の方がDiffuse(拡散)、Refraction(屈折)より優先されますよ、ということ。グラフにすると。
Diffuse(拡散)もRefracion(屈折)もReflection(反射)もすべて100%で設定すると、Reflectionが優先され全反射の物体になります。
では、Reflection(反射)が100%以外の場合、どうなるのでしょう?
経験則ですが、たとえばRefraction(反射)が50%とすると、残りの50%に対してマニュアル1が適応されるのではと予測します。
Diffuse=100%, Refraction=60%, Reflection=50%の場合、まずReflectionが優先され50%の出力を確保し、残りの50に対してReflectionが60%、つまり30%の出力を確保、残った20%がDiffuseの取り分という感じです。
(ただ、マニュアルには明記されてないので確証はありませんが)
グラフにしてみました。
確かめてみましょう。
先のSample Movie AにReflectionの要素を足して確認してみます。
ReflectionはBRDFを考慮せず、すべての角度で同じ反射率になるように設定してあります。
=Sample Movie B=
なんかそれっぽいですかね。(あくまで予測の域ですが)
力関係をまとめるとこうなります。
Diffuse(拡散) < Refraction(屈折) < Reflection(反射)
ちなみに、これにReflectionカラーや、Refractionカラーが入ってくるとまた、少しややこしくなってきますが、mentalrayでは明度に対してエネルギー保存が適応されているようです。
(すみません、これも経験則です。ちなみに、Vrayにはエネルギー保存を明度のみで行うか、RGB成分も含めて行うか選択できたりもしますね。難しいっぽい感じに書くと、各RBG成分に対してもエネルギー保存の法則が適応されるのか?例えば、Reflectionカラーを赤に設定した場合、DiffuseやRefractionから赤の成分が減少したりするのかどうか?)
さて、今回はエネルギー保存の法則に焦点をあててみました。
フォトリアルな質感を求められる場合など、このあたりの挙動を頭の片隅においておくと、求める結果に早くたどりつけるのではないでしょうか?
蛇足として、Miaマテリアルで受けたエネルギー以上に光らせたい場合はどうするのかというと、一つにAdditional_Colorを使う方法があります。
もう一つに、Diffuse Colorとかで色を選ぶヤツ(Color Chooser)のValueに1以上の値を入れる方法もあります。どちらもサクッと超えます。
Mayaは2013の英語版を使用しています。
最新のバージョンとは異なる可能性がありますのであしからず。
以上、今回はここまで。
間違い勘違い等ありましたらどしどしご指摘を!
決して分かりやすい解説ではなかったように思うので、
参考にさせていただいたサイトのリンクを以下にのせました。
ここより分かりやすいかも。
参考サイト
http://eijikitada.blogspot.jp/2010/09/cgshader-type.html
http://www.slideshare.net/SIGTART/ss-6903030
http://gs.inside-games.jp/news/376/37690.html
コメント