前回に引き続き、GameDev Texture Sheet の説明です。チャンネルパッキングなど見ていきます。
前回は説明しなかったチャンネルパッキングを見ていきたいと思います。チャンネルパッキングとは何かというと、ただ単にレンダリング画像に好きなチャンネルを入れて出力するものです。
Texture Previewの所で、Beauty、Normal、Packedそれぞれの情報をComposite Viewで見ることが出来ます。Composite View で何も表示されない場合は一度 GameDev Texture Sheet のアセット内部にあるCOPネットワークに入ると表示されるようになります。
Channel Packing した物を出力する方法
Render Emission LayerをONにすると、Channel Pack Normal, Emission, Alpha という所が選択出来るようになります。ここをONにすることでチャンネルパックした画像を出力することが出来ます。ちなみにONにするとNormal Map 出力欄が灰色になり無効になります。
プロパティ画面上面にあるRenderボタンは連番画像出力用で、これを元にスプライトシート作成します。シート作成用にはMaps内にあるRenderボタンから作成できます。先に連番画像をレンダリングしていないと何も出力されないので気をつけましょう。
Unrealのシェーダー(炎)サンプル
下の様になります。炎のエミッションをグローするような設定がされてます。
詳しくはSideFXのページで英語で解説されています。サンプルファイルもあるので是非ためしてみてください。
注意点
前回のブログで Blend N and RGB Lights の部分で法線情報をブレンドできると書きましたが、ここの値を0(ジオメトリの法線情報)にした場合と、1(RGBライトの情報)になるわけですが、0 にしたまま使うと法線のY情報が逆になってしまうようで、ゲームエンジン内でライトを当てると光が逆になってしまいます。ですがデフォルトで0.5でブレンドされてるのであまり気にしなくてもいいかもしれません・・・。
Unrealで法線マップしてライティングした結果:
左がブレンド0、右がブレンド1です。
あと、RGBライトレンダリング用のROPのCandidate Objects の値が * に設定されているので、これを削除しておかないと、もしシーン内に別のオブジェクトが合った場合、そのオブジェクトもレンダリングされてしまうので注意しましょう。