您好,登錄后才能下訂單哦!
小編給大家分享一下Unity中Lod和Occlusion Culling的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Lod和遮擋剔除。
Occlusion Culling:Occlusion Culling 技術是指當一個物體被其他物體遮擋住而相對當前攝像機為不可見時,可以不對其進行渲染。遮擋剔除操作在Unity引擎中并不是自動進行的,這時因為在很多情況下離攝像機較遠的物體先被渲染,而靠近攝像機的物體后被渲染,從而覆蓋了先前渲染的物體(這被稱為重復渲染overdraw)。遮擋剔除不同于視椎體剔除(Frustum Culling)視椎體剔除只是不渲染攝像機視椎范圍之外的物體,而被其他物體遮擋但依然在視椎范圍之內的物體則不會被剔除。(當使用遮擋剔除功能時,視椎體剔除依然有效)
遮擋剔除:在我們的場景中,如果物體1在Camera渲染中遮擋了另一個物體2,那物體2就不會再Camera中進行渲染,雖然物體2沒有在Camera中進行渲染但是在整個游戲場景中這個物體同樣存在。為了優化效率,這里就需要使用遮擋剔除。
Lod: 如果一個物體離我們的Camera很遠,我們自然就看不見這個物體(或者只能看見一個“小點”)。但是這個物體在場景中仍然會根據它的頂點結構進行渲染并消耗性能。這時候為了優化,如果它離我們的Camera距離很遠,我們就不需要對它進行渲染,也就是Lod。
遮擋剔除功能在Unity中使用Occlusion Culling(遮擋剔除)組件來進行實現
首先我們需要對需要進行遮擋以及被遮擋的物體進行烘焙。
在烘焙的時候,我們需要對遮擋的物體和被遮擋的物體進行選擇不同的情況不同的解決方案。(比如一個玻璃物體遮擋住了另一個物體這時我們也應該對玻璃后的物體進行渲染)
這里不考慮這種情況,直接進行烘焙。
Paste_Image.png
烘焙完成以后,這里我們將Occlusion Culling的屬性從Edit改為Visualize來查看效果。
Paste_Image.png
這時無法再Camera中渲染出來的物體,在場景中也不會進行渲染。
Lod功能,unity內置的組件也會為我們提供了一套解決方案。(LOD Group組件)
首先我們先創建一個小球,可以看見camera已經距離很遠,此時只能看見一個小點。但它仍然是場景中進行了渲染。
實現LOD優化,為它添加LOD Group組件。
Paste_Image.png
Paste_Image.png
Paste_Image.png
其中LOD 0,LOD 1分別為Camera距離這個球的距離區域劃分。
我們可以在這些相對距離區域中選擇是否要在這個距離對小球渲染。
Paste_Image.png
Paste_Image.png
我們在需要對小球進行渲染的距離區域中添加小球的Mesh網格信息,這樣在這個Camera到小球的距離內,場景就是對小球進行渲染。
到我們拖到LOD 2的距離區域后段時,這時場景會認為小球在距離Camera這么遠的距離時不需要對小球進行渲染了,則小球就沒有被渲染。(只是取消了小球的渲染,并不是enable等于false,所以小球的網格信息仍然存在。)
Paste_Image.png
這時如果你覺得這個距離小球還需要被渲染,你就通過Add為這個距離區域添加上小球的render。小球會被渲染出來。
Paste_Image.png
Paste_Image.png
如果你對這些距離區域都不是你自己想要的,你同樣可以對區域進行編輯并創建新的距離區域。
Paste_Image.png
Paste_Image.png
運行游戲來觀察效果,當小球具體我們Camera超過我們的渲染的距離區域時,小球就不會進行渲染。(盡管小球仍然在我們Camera的視野范圍之內
以上完成的操作都是靜態的物體,但是在我們的實際項目開發中,NPC,Monster,建筑物等都是動態生成的。這種情況肯定就無法烘焙成靜態的。
這時我們使用腳本來控制。而LOD的核心也就是在距離遠的時候將小球的MeshRender組件失活我們根據這個核心點去編寫代碼。
為我們的Camera添加一個LODAndOcclusionController的腳本。
完成簡單的動態LOD功能。
Paste_Image.png
場景測試。
這時我們可以發現當Camera和小球的距離超過5米的時候,小球則不會進行渲染。小球是動態運動的也同樣沒有關系。
動態LOD2.gif
使用Ray射線來進行判斷。
我們將所有需要進行遮罩剔除的物體添加Tag為Occlusion。
并為我們的Camera添加腳本。
Paste_Image.png
以上是“Unity中Lod和Occlusion Culling的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。