日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity场景优化

發布時間:2024/3/26 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的物體)
代碼如下

using UnityEngine;public class LayerBlankingDistance : MonoBehaviour {public float Distance ; //定義顯示距離public int Layer ; //定義被剔除的層級float[] distance = new float[32];//經過測試 只能夠在Start函數中使用void Start(){//Layer層顯示的距離在Distance內 超過這個距離就不會顯示distance[Layer] = Distance;//將數組賦給攝像機的LayerCullDistanceCamera.main.layerCullDistances = distance;} }

隨便掛在場景某個空物體上就行(好像只能寫在start上 其他生命周期似乎沒效果?)
記著把要消除隱藏的gameobject的層級(Layer)換一下
運行代碼,效果如下

層級消隱距離

3LOD
有點像mipmap的感覺,由遠到近不同精細程度的模型依次加載,LOD技術可以根據物體與相機的距離,動態調整物體的細節層次。優點是可以節省GPU處理能力,提高總體性能;缺點是對于某些場景可能無法提供足夠的細節層次,影響圖像質量。用的不好的話有點突然“炸開”的感覺
建了三種不同精細程度的模型(原諒我的美術成績為0的功底)


然后在場景中建立一個空物體 掛載LOD Group組件 就這個

然后可以由遠到近一次掛載 LOD2 LOD1 LOD0即可 拖到組件上
拖拽后場景的空物體會增加這幾個孩子


拖動組件攝像機 效果如下(有種裂開的感覺)

LOD

如果有錯的地方歡迎大家批評指正

總結

以上是生活随笔為你收集整理的unity场景优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。