unity场景优化
近期實習過程中遇到了場景模型多加載慢的問題,所以了解一下場景優化
unity在場景優化過程中往往是選出不動的物體勾選static靜態批處理 或者讓美工盡可能減少模型面數,或跟產品溝通減少粒子特效之類的,Unity3D場景渲染優化的技術,包括遮擋剔除、層消距離技術、LOD(細節層次),旨在提高性能和減少卡頓。
所以本篇博客記錄以下技術:
1.遮擋剔除 2.層消距離技術3.LOD
**
1.遮擋剔除
**
遮擋剔除技術允許Unity僅渲染屏幕上可見的物體,從而減少處理物體的數量,提高性能。優點是可以顯著提高幀率(雖然我想這么干了,但產品說用視頻就可以了哈哈哈哈 ),缺點是需要一定的預處理(提前烘培,就跟上篇文章提到的燈光烘培差不多),并且在動態場景中可能不夠靈活。(有點類似打標簽 選出遮擋剔除的物體即可)
選中需要遮擋剔除的物品 勾選 下圖所示
“Occluder Static” 是指用來當作遮擋物的靜態物體,它可以用來加速渲染效率。當 Unity 檢測到一個靜態物體可以當作遮擋物時,它會將其標記為 “Occluder Static”。
“Occludee Static” 是指被遮擋的靜態物體,它可以被標記為 “Occludee Static”,從而避免這些物體被渲染,從而提高渲染效率。
然后烘培場景 在windows->Rendering->Occlusion Culling
Bake并等待即可
效果如下視頻
遮擋剔除
**
2層消距離技術
**
層消距離技術可以根據物體與相機的距離,動態調整物體的細節層次。這樣可以減輕GPU的負擔,提高總體性能。優點是可以根據需要動態調整細節層次,缺點是需要精確控制合適的細節層次,以避免影響圖像質量。
關鍵點在于把需要層消的物體打上特定的 Layer也就是層
然后我們需要讓Camera"知道"這些層(最近在做地圖意識到這一點的 地圖上的紅點可以是另一個layer的物體)
代碼如下
隨便掛在場景某個空物體上就行(好像只能寫在start上 其他生命周期似乎沒效果?)
記著把要消除隱藏的gameobject的層級(Layer)換一下
運行代碼,效果如下
層級消隱距離
3LOD
有點像mipmap的感覺,由遠到近不同精細程度的模型依次加載,LOD技術可以根據物體與相機的距離,動態調整物體的細節層次。優點是可以節省GPU處理能力,提高總體性能;缺點是對于某些場景可能無法提供足夠的細節層次,影響圖像質量。用的不好的話有點突然“炸開”的感覺
建了三種不同精細程度的模型(原諒我的美術成績為0的功底)
然后在場景中建立一個空物體 掛載LOD Group組件 就這個
然后可以由遠到近一次掛載 LOD2 LOD1 LOD0即可 拖到組件上
拖拽后場景的空物體會增加這幾個孩子
拖動組件攝像機 效果如下(有種裂開的感覺)
LOD
如果有錯的地方歡迎大家批評指正
總結
- 上一篇: 摊牌了,访客预约操作如此简单
- 下一篇: 别浪费自己的高学历!