GIをリアルタイムに頂点カラーに焼き付けるツールの利用例実演
球面調和照明 詳細は難しい話なので動画参照してください。
ざっくりいうと頂点カラーにライティングをリアルタイムで適応させるものです。
以下の効果を狙います。
- 頂点カラーにグローバルイルミネーションやら影を焼き付けてレンダリング速度アップ
- レンダーマップで高速にGI要素をテクスチャーに焼き付ける
- レンダリング時間の高速化に。ただしシーンは大きなテコ入れが必要。
準備と実演。ICEの細かい説明はナシなので注意
まず準備しましょう。動画からリンク貼ってますがシーンデーターがダウンロード出来ます。
xsi.jankin.com/sphericalHarmonics.zip
中にはいっているPlugInをインストールしてください。アドオンではないですから手動で移動です。
改造します。上記のようにキャストシャドウがかなりガタつくので
Blur.VertexColorツールで最後ぼかして利用するのも良いです、が、GI要素までボケるので難儀です。
私の知識ではこの部分にブラーを入れるのが無理でした。
ひとまずOFFにできるようにします。
DirectDiffuseのコンパウンド、影を付ける箇所にIfノード挟んでOFFにできるようにしました。
ライト用のNULLを複製して利用すれば第二のライトが生成可能。
Set dataノードにポートを追加して、self.Diffuse2 を記述。
複製したDirectDiffuseを差し込みます。
ライティングさせたいオブジェクトを読み込みます。head_geoからICEノードを移植します。
- 新規オブジェクトに頂点カラー2つ追加。Vertex_Colorともう一つは、bentNormalにリネーム
bentNormalのほうはデータータイプをFloot(4バイトに変更)画像参照です。 - 新規オブジェクトにウェイトマップ適応。
- 移植したらエラーが出てる箇所を適切な物に修正します。
SH_GIノード、頂点カラーの指定場所を修正。例として
cls.UV_Cluster_AUTO.bentNormal.Colors ↓
cls.Texture_Coordinates_AUTO.bentNormal.Colors
細かい問題はICEの基礎なので省きます。
上手く設定できれば頂点カラーが反映されてます。
Vertex_Colorをプリセット保存すれば、別のシーンに移動することもできます。
このツールの利点はオブジェクトやライティング移動させるとリアルタイムにライトが変化することです。
レンダリングでは「Color_Map_Lookup」ノードで頂点カラーを読み込んで利用。
高速なGIとして利用するのが一番の目的なのですが…
何種類もライティング素材作るときにも使えそうだなと思い、別の用途で利用。
正直1枚だけとかならばRenderMapでメンタルレイのライト焼き付けたほうが早いことも有りますが、
あれはあれでエラーも多いですしトライアンドエラーが面倒だったりします。
うまく使い分けるのもひとつの手だと考えます。
GATORで移動させても良し。
テクスチャに焼き付ける際はRenderMapを利用。
頂点カラーは全てポリゴンの頂点数に依存しますので、解像度を上げたいならばローカルサブディビジョンリファインメントをしておきます。
一番初めに書いたとおり、落影は荒いので
全体をぼかす覚悟でBlurVertexColor PlugInや
ICEの機能を使ってぼかします。
こちら参照。messing-around-with-vertex-colors
以上です。カナリ端折りまくってますので質問あればTwitterとかで聞いて下さい。
外部リンク
- http://www.jankin.com Methodical Artist