1. 程式人生 > >【Unity】unity中關於遊戲場景的優化——遮擋剔除

【Unity】unity中關於遊戲場景的優化——遮擋剔除

遮擋剔除,當一個物體被其他物體遮擋住而不在攝像機的可視範圍內時不對其進行渲染。.遮擋剔除在3D圖形計算中並不是自動進行的。因為在絕大多數情況下離camera最遠的物體首先被渲染,靠近攝像機的物體後渲染並覆蓋先前渲染的物體(這被稱為重複渲染"overdraw").遮擋剔除不同於視錐體剔除.視錐體剔除只是不渲染攝像機視角範圍外的物體而對於被其他物體遮擋但依然在視角範圍內的物體,則不會被剔除.注意當你使用遮擋剔除時你依然受益於視錐體剔除(Frustum Culling

視錐體剔除後的效果如下圖所示:

遮擋剔除後的效果如下圖所示:

遮擋剔除的設定步驟:

(1)     在場景中選擇所有你希望應用遮擋剔除的場景物體,在檢視面板(

Inspector)中,選擇右上角的Static選項,將其中的Occlusion Static  Occludee Static打上對鉤。

物體全影技術需要考慮兩方面因素:靜態遮擋物(occluder)和靜態被遮擋物(occludee)。前者定義於幾何學的角度,全影技術會將它們構建成單一、穩定的模型;後者定義於可見性的角度,全影技術通常會通過遮擋資料對其進行測試。從幾何學角度來講,遮光物是由大量的帶有“Occluder static”標識的設定組成的,而被遮擋物體的標識則是“Occludee static”。


一個經驗法則,預設情況下,如果不是所有的渲染器作為被遮擋的物體,你最好預先設定好大多數配置,以便於在全影技術下可以自動剔除不必要的景物。同樣,也是在預設的情況下,多數的靜態渲染器(static renderers)都可以作為遮光物,只要確保你的渲染器不是透明的即可。

但是,如果物體的縫隙很小(像是濃密的植物),你又想透過它們看到景物,只是減小這些縫隙的最小值是沒有用的,而應該從渲染器中移除這些遮擋標識(occluder flag)。

2)使用遮擋剔除視窗(Window->Occlusion Culling)再點選Bake->Bake