テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】IBLの背景(SkyBox)を動的に変更する

f:id:tsubaki_t1:20161210172124g:plain

IBL(イメージ・ベースド・ライティング…HDR画像を元に光源を再現する)手法を使うと、非常に背景に馴染む3D表現が出来ます。

これを今回はある目的のためにリアルタイムに更新してみます。

Skyboxの更新

Unityでは、Skyboxを更新する事でIBLを表現しています。
なのでSkyboxを更新すればOKです。

SkyboxはCubemapを元に更新しているので、渡したCubemapを更新します。

また RenderSettings.customReflectionを更新してSkyboxの環境マップも反映させます。
特にMetalicが高い材質の物は光を全て反射するので、CubemapReflectionを反映させないと初期の環境マップが反映され続けるため、見た目が微妙になります(下の図ではCubemapReflectionを黒一色から変更していないので、CubemapReflectionが黒一色になっています)

f:id:tsubaki_t1:20161211024818g:plain

gist.github.com

注意

IBLが動作するのはLightingのAmbient SourceがSkyboxを指している時のみです。ここがColorやGradientを指していると反応しません。
またAmbient GIがBakedに設定されていても動作しません。

f:id:tsubaki_t1:20161210175813j:plain

 

関連

tsubakit1.hateblo.jp

どうでも良いけど、血界戦線OPの主人公を中心のカメラが回ってるシーン超好き