17Oct
CG制作をお仕事にしていると、食事の時間が不規則になりがちです。
制作に没頭しているとあっという間に12時を過ぎてしまいます。一斉にお昼休みをとるような会社ならいいのですが、CGプロダクションは各自の裁量に任されている場合がほとんどなので、ランチタイムの時間を逃してしまい、お得なランチメニューを食べられないことが多々あります。
それでもよく探せば、遅くまでランチタイムをやっているところや、そもそもランチメニューなど無いところもあります。このブログもそんな時間に書き上げているので、冒頭からこんな話題になってしまったのですが、できれば早く書き終えて、ハラヘリを解消したいところなのです。
今日はあのとり料理にしようかな…
さて、気を取り直してシェーダー検証の続きです。
今回は
バンプマップ
ディスプレイスメントマップ
ベクターディスプレイスメントマップについてです。
1)
バンプマップとノーマルマップはaiStandardシェーダーの機能として搭載されています。
MentalRayのmiaマテリアルと同じような感じで使用できます。
オブジェクトの法線は変更されますが、ジオメトリは変更されないので計算が速いです。
2)
バンプマップに対してディスプレイスメントマップはジオメトリを直接変更させるため、aiStandardシェーダーの機能ではなく、上位のシェーディンググループのディスプレイスメント属性に接続させる必要があります。
ではレンダリング結果を見てください。
上:Block1はディフューズにテクスチャを貼っただけの状態です。
中:Block1Bump131はaiStandardシェーダーにバンプマップを接続。法線が変更され凸凹しています。
中:Block1Disp201はディスプレイスメントシェーダーを組み合わせて、実際にジオメトリを変化させています。
下:Block1Disp224はより大きく変化させた場合です。
ディスプレイスメントマップの場合は、シェーダーの設定だけでなく、ジオメトリシェイプにあるアーノルドタブからサブディビジョン(細分化)の設定が必要になります。
3)
ベクターディスプレイスメントマップは少々特殊です。
まずシェーダーコネクトを見て下さい。
シェーディンググループのディスプレイスメント属性にディスプレイスメントシェーダーを接続し、32bitのベクターイメージを読み込ませる必要があります。
オブジェクトのサブディビジョンも慎重に調整したレンダー結果がこちらです。
1枚のプレーンジオメトリが、ベクターディスプレイスメントマップで立体的に変異しています。
ベクターイメージによって立体的に変異
ベクターディスプレイスメントマップB
耳を増やしてみた
ベクターディスプレイスメントマップC
上:EARはベクターディスプレイスメントマップです。本来は32bitOpenEXRです。
中:VectorDisplacement141は本来のジオメトリ。シンプルなプレーンです。
中:VectorDisplacement347がベクターイメージによって立体的に変異された状態。
下:VectorDisplacement1029耳を増やしてみました。
その2 反射について
その3 屈折について
その4 SSSについて
その5 ディスプレイスメントについて
その6 ヘアーシェーダー