Unity Lightmap動態加載研究


什么情況下需要Lightmap?
移動平台上目前暫時還不能開實時光影效果,會卡成幻燈片。所以就需要將光影烘焙到貼圖上。

什么情況下需要動態加載Lightmap?
1.當項目拋棄了Unity的多場景模式,也就是說整個項目只有一個scene,資源全部都是以AssetBundle的形式動態加載。
資源全部由自己來加載和卸載。加載出來的資源,需要設置LightmapIndex和LightmapScaleOffset。
2.根據時間變換,游戲中需要切換白天,黑夜的效果。也就是動態切換兩張烘焙貼圖。

網上的資料都是4.6版本或者之前的。
參考:http://blog.sina.com.cn/s/blog_697b1b8c0101frao.html
我測試了之后,是沒有問題的。
步驟:
1.美術提供烘焙好后的場景
(設UV2,自己生成或者U3D勾選導入設置面板生成的都可以,設靜態GAMEOBJECT烘培LIGHTMAP)
2.導出LightmapData,和每一個GameObject的LightmapIndex,LightmapScaleOffset
可以記錄到Json,Xml或者Unity提供的ScriptObject
3.打包資源AssetBundle
(包括場景prefab,記錄Lightmap信息的SceneLightmapData.asset,烘焙出來的貼圖)
4.加載AssetBundle,實例化,重新賦予LightmapIndex,LightmapScaleOffset

Unity3d中ScriptableObject是一個非常有用的類,它可以幫助開發者存儲一些希望保存的在運行時用到類的實例數據到文件里面。
我這里就用這種方式來記錄Lightmap信息。

測試:

但是Unity5.x版本不能成功。

不知是我沒找到方法,還是Unity以后會解決這個問題。
只是當下只能放棄動態加載的方式,只能直接場景打包,由U3D自行處理和Lightmap的關系。

測試工程:
鏈接:http://pan.baidu.com/s/1boxUT5d 密碼:28kh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM