UE4でHDRな天球画像を使う場合、Radiance HDRフォーマットから一発でインポートできて都合がいいのですが
最近aokcubさん(@aokcub_cg)の高品質なHDR天球画像AoSKY(http://aokcub.net/cg/dome)がRadiance HDRフォーマットに対応していただけたので、せっかくなのでHDRな天球画像を簡単に扱えるブループリントを組んでみました。
ビデオはこちら。(ビデオ中で拡大画像にするとマウスカーソルがズレていまして、カラーピッカーを使っている所はシーン内の太陽付近の色をピックアップしています)
デフォルトではエンジン内の天球画像を使うようになっていますが、AoSKY(http://aokcub.net/cg/dome)のHDRフォーマットの16kはUE4のコンテンツブラウザにインポートするだけで利用できるようになります。(インポート時に内部でキューブマップへ変換されます)
BP_SkyLightSphereというブループリントをレベルに配置して、Sky Texutreにインポート頂いたテクスチャを設定するだけで利用できます。
※なのですが、デフォルトだとUE4が実行時に512x512を使ってしまい天球画像の解像度低くぼやけてしまいます。インポートしたテクスチャキューブをダブルクリックしてプロパティ中のMaximum Texture Sizeを1024等に変更してください。(2048や4096も使えますが、変更後に数十分キューブマップへの変換作業で待たされます。4096にすると水平方向の解像度が4k4=16kになり、16k素材の解像度に近くなります。また、8192は設定できるのですが、エンジン設定をもろもろいじらなければならないのと、水平方向の解像度が8k4=32kになるので元の素材の16kから考えるとオーバースペックです。)
※キューブマップになっている事を確かめるにはMaximum Texture Sizeを16、FilterをNearestに設定した画像を設定して空を見回してみるとわかりやすいかと。
また、AoSKYを実際に利用される場合はAoSKY画像に同梱されている利用規約を守られるようお願い致します。
SkyLightAndSphere.zip
という名前でファイルを添付しました。(UE4.6.1のプロジェクトウィザードからブループリント版のBlankプロジェクト上で作成してあります)
展開してできるSkyLightAndSphereというフォルダをマイドキュメントの「Unreal Projects/プロジェクト名/Content」フォルダにコピーしてください。
■BP_SkyLightSphereの使い方
- BP_SkyLightSphereをレベルに配置します。
- レベルから太陽を想定した既存のDirectional Lightがある場合は削除します。(BP_SkyLightSphere内にDirectional Lightがあり競合するため、削除しないで使い続けることも可能です、その場合はBP_SkyLightSphereのSun Mobility TypeをNoneにしてください)
- レベルにSkyLightがある場合は削除します。(BP_SkyLightSphere内にSkyLightがあり競合するため「Use It as Sky Light」をオフにすることでBP_SkyLightSphere内のSKyLightをOFFにすることも可能です)
- レベルにデフォルトで配置されている天球系のスタティックメッシュ等も削除してください。場合によってはフォグ系も削除した方が良いかと思います。
- Sky Textureにテクスチャキューブ(天球のHDR画像をインポートすると自動的になります)な天球画像を設定します。
- Sky Intensityはデフォルトで1.0になっていますが、スカイライトのIBL的な適用具合を調整できます。
- Sun Pitchは太陽が水平線から何度上昇しているかという値です、デフォルトでは10度となっています。(AoSKYの場合サイトに各素材毎に太陽の角度が記載されています)
- Sun Yawで太陽の方向を変える事も可能です。(HDR画像の真正面に太陽光的な光源があることを想定していますが、そうでないHDR画像もあるので、その場合はこの値を調整してください)
- Virtual Sun Positionはエディタでは直接いじれませんが、Sun PitchとYawを変更するとこのマーカーで太陽の位置がどこに設定されているかわかります。
- Sun Mobility TYpeはBP内の太陽を想定したDirectional Lightの可動属性を変更します。
- Sun Colorで太陽の色を設定します。
- Sun Intensityで太陽の強さを指定します。
※スカイライトのIBLだけであれば太陽は特に必要ないのですが、影を出すためにデフォルトではBP内部で太陽を想定したDirectional Lightを利用しています。
AoSKYの作者様情報はこちらになります。
Copyright (c) 2014, aokcub
http://aokcub.net/