Ue4で高品質なhdr天球を導入してみよう!

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の使い方

  1. BP_SkyLightSphereをレベルに配置します。
  2. レベルから太陽を想定した既存のDirectional Lightがある場合は削除します。(BP_SkyLightSphere内にDirectional Lightがあり競合するため、削除しないで使い続けることも可能です、その場合はBP_SkyLightSphereのSun Mobility TypeをNoneにしてください)
  3. レベルにSkyLightがある場合は削除します。(BP_SkyLightSphere内にSkyLightがあり競合するため「Use It as Sky Light」をオフにすることでBP_SkyLightSphere内のSKyLightをOFFにすることも可能です)
  4. レベルにデフォルトで配置されている天球系のスタティックメッシュ等も削除してください。場合によってはフォグ系も削除した方が良いかと思います。
  5. Sky Textureにテクスチャキューブ(天球のHDR画像をインポートすると自動的になります)な天球画像を設定します。
  6. Sky Intensityはデフォルトで1.0になっていますが、スカイライトのIBL的な適用具合を調整できます。
  7. Sun Pitchは太陽が水平線から何度上昇しているかという値です、デフォルトでは10度となっています。(AoSKYの場合サイトに各素材毎に太陽の角度が記載されています)
  8. Sun Yawで太陽の方向を変える事も可能です。(HDR画像の真正面に太陽光的な光源があることを想定していますが、そうでないHDR画像もあるので、その場合はこの値を調整してください)
  9. Virtual Sun Positionはエディタでは直接いじれませんが、Sun PitchとYawを変更するとこのマーカーで太陽の位置がどこに設定されているかわかります。
  10. Sun Mobility TYpeはBP内の太陽を想定したDirectional Lightの可動属性を変更します。
  11. Sun Colorで太陽の色を設定します。
  12. Sun Intensityで太陽の強さを指定します。

※スカイライトのIBLだけであれば太陽は特に必要ないのですが、影を出すためにデフォルトではBP内部で太陽を想定したDirectional Lightを利用しています。

AoSKYの作者様情報はこちらになります。
Copyright (c) 2014, aokcub
http://aokcub.net/

地平線付近で、テクスチャが歪んでしまうようです。

手持ちのHDR画像で試してみたのですが、地平線付近で歪みが発生しました。
使用したテクスチャは、こちらのサイトにあります。
http://joostvanhoutte.com/marmoset-skies/

mishimatsuさん、ご指摘ありがとうございます!

はい、確かに歪んでいました…。キューブマップのテクスチャ座標を算出する際に、天球用のメッシュの法線を使っていたのですが
このメッシュは/Engine/EditorMeshes/EditorSkySphere.EditorSkySphereを使っていまして、使われているポリゴンも荒く法線もそれほど良いものではありませんでした。

天球のピクセルのローカル座標をテクスチャ座標とするように変更しました。
上記リンク先のファイルを更新しましたので再取得をお願いします~。
(zipファイルごと更新していますが、変更はマテリアルM_SkySphereのみとなっています)

こちらで試した感じでは、上記画像でも歪みは見られなくなっていました。

ぜひ皆様ご活用ください。

こちらUE4 Ver4.9.2で使わせて頂きたいと思っています。
Zipファイルをダウンロードするために権限が必要になっていたので申請させて頂きました。
宜しくお願い致します。

bbsさん、ありがとうございます。

Google Driveで公開していたファイルが弊社都合で非公開になってしまっていましたのでBOXの方で共有させていただきます。

https://epicgames.box.com/s/lr0ib83dp9kbxi2b78wjvthjmjivw2m6
こちらからダウンロードしてみてくださいませ~。

下田様
確認遅くなり申し訳ございません。
ありがとうございます!ダウンロードさせていただきました。