真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Unity中Lod和OcclusionCulling的示例分析

小編給大家分享一下Unity中Lod和Occlusion Culling的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

目前成都創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運營、企業(yè)網(wǎng)站設(shè)計、洮南網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

Lod和Occlusion Culling

  • Lod和遮擋剔除。
    Occlusion Culling:Occlusion Culling 技術(shù)是指當一個物體被其他物體遮擋住而相對當前攝像機為不可見時,可以不對其進行渲染。遮擋剔除操作在Unity引擎中并不是自動進行的,這時因為在很多情況下離攝像機較遠的物體先被渲染,而靠近攝像機的物體后被渲染,從而覆蓋了先前渲染的物體(這被稱為重復(fù)渲染overdraw)。遮擋剔除不同于視椎體剔除(Frustum Culling)視椎體剔除只是不渲染攝像機視椎范圍之外的物體,而被其他物體遮擋但依然在視椎范圍之內(nèi)的物體則不會被剔除。(當使用遮擋剔除功能時,視椎體剔除依然有效)

遮擋剔除:在我們的場景中,如果物體1在Camera渲染中遮擋了另一個物體2,那物體2就不會再Camera中進行渲染,雖然物體2沒有在Camera中進行渲染但是在整個游戲場景中這個物體同樣存在。為了優(yōu)化效率,這里就需要使用遮擋剔除。
Lod: 如果一個物體離我們的Camera很遠,我們自然就看不見這個物體(或者只能看見一個“小點”)。但是這個物體在場景中仍然會根據(jù)它的頂點結(jié)構(gòu)進行渲染并消耗性能。這時候為了優(yōu)化,如果它離我們的Camera距離很遠,我們就不需要對它進行渲染,也就是Lod。

Occlusion Culling(遮擋剔除)

  • 遮擋剔除功能在Unity中使用Occlusion Culling(遮擋剔除)組件來進行實現(xiàn)

    • 首先我們需要對需要進行遮擋以及被遮擋的物體進行烘焙。

    • 在烘焙的時候,我們需要對遮擋的物體和被遮擋的物體進行選擇不同的情況不同的解決方案。(比如一個玻璃物體遮擋住了另一個物體這時我們也應(yīng)該對玻璃后的物體進行渲染)

    • 這里不考慮這種情況,直接進行烘焙。

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 烘焙完成以后,這里我們將Occlusion Culling的屬性從Edit改為Visualize來查看效果。

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 這時無法再Camera中渲染出來的物體,在場景中也不會進行渲染。

Lod

  • Lod功能,unity內(nèi)置的組件也會為我們提供了一套解決方案。(LOD Group組件)

  • 首先我們先創(chuàng)建一個小球,可以看見camera已經(jīng)距離很遠,此時只能看見一個小點。但它仍然是場景中進行了渲染。

  • 實現(xiàn)LOD優(yōu)化,為它添加LOD Group組件。

     

    Unity中Lod和Occlusion Culling的示例分析

    Paste_Image.png

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 其中LOD 0,LOD 1分別為Camera距離這個球的距離區(qū)域劃分。

  • 我們可以在這些相對距離區(qū)域中選擇是否要在這個距離對小球渲染。

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 我們在需要對小球進行渲染的距離區(qū)域中添加小球的Mesh網(wǎng)格信息,這樣在這個Camera到小球的距離內(nèi),場景就是對小球進行渲染。

  • 到我們拖到LOD 2的距離區(qū)域后段時,這時場景會認為小球在距離Camera這么遠的距離時不需要對小球進行渲染了,則小球就沒有被渲染。(只是取消了小球的渲染,并不是enable等于false,所以小球的網(wǎng)格信息仍然存在。)

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 這時如果你覺得這個距離小球還需要被渲染,你就通過Add為這個距離區(qū)域添加上小球的render。小球會被渲染出來。

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 如果你對這些距離區(qū)域都不是你自己想要的,你同樣可以對區(qū)域進行編輯并創(chuàng)建新的距離區(qū)域。

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 運行游戲來觀察效果,當小球具體我們Camera超過我們的渲染的距離區(qū)域時,小球就不會進行渲染。(盡管小球仍然在我們Camera的視野范圍之內(nèi)

以上方案的缺陷。

  • 以上完成的操作都是靜態(tài)的物體,但是在我們的實際項目開發(fā)中,NPC,Monster,建筑物等都是動態(tài)生成的。這種情況肯定就無法烘焙成靜態(tài)的。

動態(tài)解決方案。(LOD)

  • 這時我們使用腳本來控制。而LOD的核心也就是在距離遠的時候?qū)⑿∏虻腗eshRender組件失活我們根據(jù)這個核心點去編寫代碼。

    • 為我們的Camera添加一個LODAndOcclusionController的腳本。

    • 完成簡單的動態(tài)LOD功能。

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 場景測試。

    • 這時我們可以發(fā)現(xiàn)當Camera和小球的距離超過5米的時候,小球則不會進行渲染。小球是動態(tài)運動的也同樣沒有關(guān)系。

Unity中Lod和Occlusion Culling的示例分析

動態(tài)LOD2.gif

動態(tài)解決方案。(遮擋剔除)

  • 使用Ray射線來進行判斷。

  • 我們將所有需要進行遮罩剔除的物體添加Tag為Occlusion。

  • 并為我們的Camera添加腳本。

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

以上是“Unity中Lod和Occlusion Culling的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站欄目:Unity中Lod和OcclusionCulling的示例分析
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/ihpsss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部