91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity中Lod和Occlusion Culling的示例分析

發布時間:2022-01-05 14:30:03 來源:億速云 閱讀:151 作者:小新 欄目:大數據

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

Lod和Occlusion Culling

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

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

Occlusion Culling(遮擋剔除)

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

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

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

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

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

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

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

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

Lod

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

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

  • 實現LOD優化,為它添加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距離這個球的距離區域劃分。

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

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 我們在需要對小球進行渲染的距離區域中添加小球的Mesh網格信息,這樣在這個Camera到小球的距離內,場景就是對小球進行渲染。

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

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

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

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

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

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

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

以上方案的缺陷。

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

動態解決方案。(LOD)

  • 這時我們使用腳本來控制。而LOD的核心也就是在距離遠的時候將小球的MeshRender組件失活我們根據這個核心點去編寫代碼。

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

    • 完成簡單的動態LOD功能。

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

  • 場景測試。

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




Unity中Lod和Occlusion Culling的示例分析

動態LOD2.gif

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

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

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

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

Unity中Lod和Occlusion Culling的示例分析

Paste_Image.png

以上是“Unity中Lod和Occlusion Culling的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仙游县| 延吉市| 泰安市| 土默特左旗| 荥阳市| 邢台市| 丹棱县| 逊克县| 钟山县| 平泉县| 南宁市| 新源县| 泰来县| 平原县| 马关县| 离岛区| 阿克陶县| 灌南县| 龙海市| 平塘县| 蒙自县| 宜良县| 胶南市| 岳西县| 岑溪市| 陈巴尔虎旗| 博客| 敦煌市| 内丘县| 扎囊县| 清丰县| 沙河市| 石阡县| 利辛县| 南雄市| 建瓯市| 东乌珠穆沁旗| 嘉峪关市| 荥阳市| 连平县| 敦煌市|