模型+燈光測試結果:
執行之前使用的Draw Calls和內存
執行之后使用的Draw Calls和內存
模型合並規則:
1、非同樣的靜態模型才需要合並 同樣模型(復制的)不用合並
2、UV無重復的模型可用Mesh Baker合並 重復的Mesh Baker會出錯 有需要可以在制作軟件里合並
3、使用同樣材質模型可以合並 使用不同材質的模型不能合並
4、合並模型貼圖大小必須為2的N次冪 需選擇合適大小以免浪費空間或效果不理想 不要通過貼圖設置另外更改大小
燈光烘焙優化場景效果和資源方法:
1、所有相同物體使用相同材質並使用一個Scale
2、所有能合並的同樣節點的模型或者共用材質的模型一律合並
3、所有重復使用的模型 頂點上限為900除以貼圖張數
4、Occlusion Bake需要根據模型大小來自定義尺寸以免效果不好或浪費時間
5、烘焙時候把環境燈光關閉 把烘焙燈光打開確認范圍 根據需要開啟或關閉全局照明(GI)如關閉GI則只烘焙AO 把陰影和烘焙燈光做成Lighting Data(多物體多燈光情況下 烘焙AO速度比烘焙GI快N倍)
6、打開環境燈光(如在移動設備上運行只能使用一盞主光)隱藏或者刪除烘焙燈光如沒有動態模型需要實時計算光影的話最好關閉shadow
其他注意:
1、移動設備上盡量少使用景深、反射、霧效等功能嚴重影響運行速度
2、移動設備上盡量少使用自定義shader 容易出現未知錯誤
3、移動設備上使用Light Probe、 Reflection Probe無效
具體操作步驟:
建模步驟:
1、頂點數盡量少 使用貼圖來表現物體細節(Color、AO、Normal等)
2、整個場景所有模型的UV單元格大小基本一致
3、節點數量一樣的模型(復制的)使用同一個材質
4、一個組合的模型(如整個機械)使用多張貼圖需把所有貼圖合並到一張上
5、無動畫的共用材質的模型合並為一個模型(如機械上的兩個或多個部件)
6、沒有動畫或者不會交互但是會重復利用的模型盡量合並合並后總頂點數不超過900除以貼圖數(1張貼圖900頂點上限 2張450 3張300 以此類推) 頂點數超出則拆分模型
u3d Mesh Baker步驟:
1、菜單欄>Game Object>Create Other>Mesh Baker>Multi-Mesh andMaterial Baker
2、Hierarchy中選擇創建的Mesh Baker在Inspector中選擇MB3_Texture Baker腳本使用Open Tools For Adding Objects添加需要合並貼圖的object
3、彈出窗口選擇目標模型 可使用靜態或者激活選項來篩選 選擇完畢后更改Using Lightmap Index為不過濾 使用Add SelectedMeshes命令添加到列表中
4、檢查添加模型無誤后 使用CreateEmpty Assets For Combined Material創建一個合並貼圖使用的新材質 指定路徑 然后執行Bake Materials Into Combined Material
5、選擇MB3_Multi Mesh Baker腳本 使用Bake生成新的合成Mesh]
6、原Mesh隱藏或刪除(刪除節省資源,但一定要確定該模型不會再被使用)
u3d烘焙步驟:
1、導入模型后做成Scale為1的預制體 被調用時盡量不要更改Scale
2、不需要動態載入資源的靜態物體盡量不要用腳本載入
3、布置好場景后打開Occlusion 根據需要bake的場景空間大小和模型細節程度選擇適當的bake尺寸
4、bake完后 打開Lighting 設置scene中關閉Skybox、Sun(設為None)
4.1、如使用Light Probe、 Reflection Probe 打開Precomputed Realtime GI 關閉Baked GI
4.2、如不使用Light Probe、 Reflection Probe 需要烘焙陰影則關閉Precomputed Realtime GI 打開 Baked GI 設定合適的 Baked Resolution、 Baked Padding(Unity3d 5.4.0.b18 勾選Ambient Occlusion)
5、如Auto Build選項被打開則需關閉(節省時間) 並點擊Build下拉菜單執行Clear Baked Data
6、根據需求創建燈光(盡量減少Realtime燈光數量和shadow數量以及點光源數量以節省系統資源)
7、在Lighting 設置Object里篩選Renderers 設置靜態物體合適的Scale inLightmap大小(地形為1或者更大 大建築障礙物0.5-1樹木石頭等小障礙物0.1-0.5)
8、在Lighting 設置Object里篩選Lights把所有Realtime光源隱藏 所有Bake光源打開執行Build 等候執行讀條完成 期間勿對場景進行操作
9、Build完成后 把所有Realtime光源打開 所有Bake光源隱藏或刪除(刪除節省資源,但一定要確定該光源不會再被使用)
10、主光源打開shadow其余光源按情況決定是否打開shadow 按需求決定是否開啟Skybox和Sun