【Unity】Unity 5.x 光照貼圖動態替換 貼圖不顯示

寫在前面

Unity的光照貼圖在5.0版本做出了重大的改善,從 Beast全局光照系統替換爲Enlighten全局光照系統。

Lighting Data Asset記錄了整個場景的GI數據(Global Illumination (GI)不僅記錄直接從光源擊中表面的光(直接光),也可以記錄模擬光從一個表面反射到其他表面的間接光的系統)以及整個場景所需要的光照信息。包括實時lightmaps, 烘焙過的 lightmaps, light probes, reflection probes 和一些記錄這些如何協同工作的額外的數據。

生成的Lighting Data Asset(Lightmap Snapshot在Unity 5.3之後又重新命名爲了Lighting Data Asset),當加載場景時,光照貼圖也會自動加載(你懂得,自動就代表着想做出變更就是與他這個自動的過程相悖)
那麼運行時Lighting Data Asset可以替換來達到替換光照貼圖的效果麼?
答案是 不可以。因爲Lighting Data Asset是一個只可以Editor使用的資源

正題

首先關於替換Lightmap的方法
在這個不能運行時替換Lighting Data Asset的前提條件下,當需要加載or替換一組已經烘焙的光照貼圖,就不能通過任何藉口方法直接作出替換。所以官方給出了一種解決方案:
https://forum.unity3d.com/threads/problems-with-instantiating-baked-prefabs.324514/#post-2177524
解答詳見六樓,我此處就不做贅述。

另外同樣運用這個方法(記錄每一個mesh的lightmapOffsetScale和lightmapIndex)的,也提供一篇博客
http://blog.csdn.net/langresser_king/article/details/48914901

關於我遇到的一個坑,我沒有找到帖子有提到,也就發出來給大家一個參考。(發這篇的主要原因)

那麼總算進入我這篇文章真正想敘述的部分了。
我的工程,一直爲同一個Scene,加載不同的地圖的地圖預製來切換場景,即 換地圖等價爲加載地面模型的整體預製件,附帶一組已經Bake好的Lightmap。

PC環境下,我的一切Lightmap加載都完全正常。
當我導出到Android平臺下,Bake的Lightmap顯示不出(有兩種表現:Mesh表面沒有光感,Mesh表面全黑色)

問題情況很容易描述,直接說明解決方法吧。
最終解決的情況是這樣的。

① 場景的 LightmapSetting設置成Non-Directional

② 場景指定的Lighting Data Asset,從一個LightmapList渲染長度爲0的Lighting Data Asset,變更爲一個長度大於等於2的Lighting Data Asset(我渲染後是2張Lightmap),即 設定一個LightmapList長度大於當前渲染張數的Lighting Data Asset。

關於LightmapList長度的說明:
這裏寫圖片描述

再進行安卓打包,場景顯示就正常了。

重點

寫這個文章的時候,我嘗試重現我說過的問題,提供一些截圖的時候。我發現我並不能重現
所以我很懷疑我做出的這個解決方案的正確性,請各位閱讀之後做一個參考,而不是一個絕對正確的解決方案。
所以這篇寫的如此不嚴謹很是抱歉,但是我確實是這個方案下解決了問題,也就發出來了。

轉載請註明,出自喵喵丸的博客 (http://blog.csdn.net/u011643833/article/details/77505642

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章