微信小程序怎么寫寧波seo排名優(yōu)化價格
unity_Occlusion_Culling遮擋剔除學習
文檔:
https://docs.unity.cn/cn/2019.4/Manual/occlusion-culling-getting-started.html
沒徹底搞明白,但是會用,雖然也不熟練
設(shè)置遮擋剔除
打開遮擋剔除面板
設(shè)置場景物體。設(shè)置為靜態(tài)
設(shè)置場景
烘焙場景
運行查看效果
遮擋剔除面板參數(shù)
Objcet
點擊一個模型之后Object 窗口可以有信息
Occluder Static(靜態(tài)遮擋物)
如果游戲?qū)ο笫莿討B(tài)的,這個游戲?qū)ο罂梢栽谶\行時充當被遮擋物,而不能充當遮擋物。
這些游戲?qū)ο蟛粫苿?#xff0c;但會阻擋后面的游戲?qū)ο?br /> 適合作為靜態(tài)遮擋物的游戲?qū)ο蟀ㄖ行偷酱笮偷膶嶓w游戲?qū)ο?#xff08;例如墻壁或建筑物)。要被設(shè)定為靜態(tài)遮擋物,游戲?qū)ο蟊仨殱M足以下條件:
具有 Terrain 或 Mesh Renderer 組件不透明在運行時不移動
Occludee Static(靜態(tài)被遮擋物)
這些游戲?qū)ο蟛粫苿?#xff0c;但會被靜態(tài)遮擋物遮擋。
任何可能在運行時被遮擋的游戲?qū)ο蠖歼m合設(shè)定為靜態(tài)被遮擋物,包括小的或透明的游戲?qū)ο蟆R辉O(shè)定為靜態(tài)被遮擋物,游戲?qū)ο蟊仨殱M足以下條件:
具有任何類型的 Renderer 組件在運行時不移動
動態(tài)的遮擋物
如果游戲?qū)ο笫莿討B(tài)的,這個游戲?qū)ο罂梢栽谶\行時充當被遮擋物,而不能充當遮擋物。
要確定動態(tài)游戲?qū)ο笫欠癯洚敱徽趽跷?#xff0c;可以在任何類型的渲染器組件上設(shè)置 Dynamic Occlusion 屬性。啟用 Dynamic Occlusion 后,渲染器在攝像機的視圖中被靜態(tài)遮擋物 (Static Occluder) 阻擋時,Unity 會剔除渲染器。禁用 Dynamic Occlusion 后,渲染器在攝像機的視圖中被靜態(tài)遮擋物 (Static Occluder) 阻擋時,Unity 不會剔除渲染器。
與LOD
如果使用了 LOD 組,則 Unity 會使用靜態(tài)遮擋物的基礎(chǔ)細節(jié)級別游戲?qū)ο?(LOD0) 來確定要遮擋的對象。如果游戲?qū)ο蟮妮喞?LOD0 和其他 LOD 級別之間變化很大,這個游戲?qū)ο罂赡懿贿m合設(shè)定為靜態(tài)遮擋物。
效果
動態(tài)遮擋物
遮擋者與被遮擋者
如果物體可以遮擋其他物體就是遮擋者,如果不想讓遮擋其他物體就是被遮擋者。
遮擋區(qū)域
如果有一些地區(qū)需要細致的檢查遮擋,則使用這個。
在場景中創(chuàng)建一個空物體,然后附加:Occlustion Area
設(shè)置大小即可,unity會細致的檢查這個區(qū)域內(nèi)的遮擋關(guān)系。
Bake
Small Occluder
設(shè)置閾值,當大于這個值的物體物體會被設(shè)置為 遮擋著,遮擋其他物體.
決定了單元格的大小,數(shù)值越小越細致,但是更加消耗性能
所以考慮使用“遮擋區(qū)域 ” 來繪制需要著重注意的區(qū)域,而不是調(diào)整小這個值。
Smallest Hole 最小洞
允許unity在遮擋剔除過程中忽略非常小的洞,比如透過門縫看不到屋內(nèi)的物體,必須打開門或者這個洞足夠大
Backface Threshold
背面閾值, 建議使用默認參數(shù),渲染的時候顯示背面的比例。
Visualization 可視化
在運行的時候可視化遮擋剔除的數(shù)據(jù)
Camera Volume 攝像機體積
Visibility Line
Portals
Occlusion Portal_遮擋入口
如果它是開放的,那么這個體積不會作為遮擋者起作用,而當我們關(guān)閉它時,一它就像一個遮擋者,并且可以遮擋其后的物體。
簡單來說是:如果想遮擋 遮擋入口 后面的東西,就關(guān)閉,不想讓其遮擋則開啟。
遮擋剔除原理
遮擋剔除會在 Unity Editor 中生成有關(guān)場景的數(shù)據(jù),然后在運行時使用該數(shù)據(jù)來確定攝像機可以看到的內(nèi)容。這種生成數(shù)據(jù)的過程稱為烘焙。
在對遮擋剔除數(shù)據(jù)進行烘焙時,Unity 將場景劃分為多個單元,并生成描述單元內(nèi)幾何體以及相鄰單元之間可見性的數(shù)據(jù)。然后,Unity 盡可能合并單元,以減小生成的數(shù)據(jù)的大小。要配置烘焙過程,可以在 Occlusion Culling 窗口中更改參數(shù),并在場景中使用遮擋區(qū)域。
在運行時,Unity 會將這些烘焙的數(shù)據(jù)加載到內(nèi)存中,并且對于每個啟用了 Occlusion Culling 屬性的攝像機,將會對數(shù)據(jù)執(zhí)行查詢以確定該攝像機可以看到的內(nèi)容。請注意,啟用遮擋剔除后,攝像機將執(zhí)行視錐體剔除和遮擋剔除。
“遮擋剔除”過程可防止 Unity 為那些被其他游戲?qū)ο笸耆珦踝?#xff08;遮擋)的游戲?qū)ο髨?zhí)行渲染計算。
遮擋剔除的作用
防止無意義的渲染操作可以節(jié)省 CPU 和 GPU 時間。Unity 的內(nèi)置遮擋剔除在 CPU 上執(zhí)行運行時計算,這可能會抵消其節(jié)省的 CPU 時間。因此,當項目因過度繪制而具有 GPU 密集型特征時,遮擋剔除最有可能提高性能。
Unity 在運行時將遮擋剔除數(shù)據(jù)加載到內(nèi)存中。必須確保有足夠的內(nèi)存來加載此數(shù)據(jù)。
當場景中一些界限明確的小區(qū)域被實體游戲?qū)ο蟊舜烁糸_時,遮擋剔除的效果最好。一個常見的例子是通過走廊連接的房間。
如果被剔除了是否可以運行代碼?
在game 視圖看不到,但是還是會運行代碼。