LOD技術有點類似於Mipmap技術,不同的是,LOD是對模型建立了一個模型金字塔,根據攝像機距離對象的遠近,選擇使用不同精度的模型。
它的好處是可以在適當的時候大量減少需要繪制的頂點數目。
它的缺點同樣是需要占用更多的內存,而且如果沒有調整好距離的話,可能會造成模型的突變。
通過一個例子來說明他的用處:
我們使用了3dsmax來說明LOD模型的制作,下載附件后打開場景文件,里面是三個面數不同的油桶造型,由左到右分別代表了高模,一般與低模的模型結構。
選擇左邊的油桶模型,如圖所示,這個模型的數據為三角面712,頂點數358。
選擇右邊的模型,這個低模的數據很符合我們的要求,一般來說,用三個模型來制作LOD的效果就很足夠了,例如建築場景里面,最遠端的房子只能看到類似盒子的效果,而鏡頭前面的樓房則是可以清楚的看到里面的許多細節,但是鏡頭推進到遠處的樓房時,原來的盒子立即換成另一個可以戰勝細節的模型,這個就是LOD的運作原理。
將模型保存為FBX后,導入Unity進行測試,命名的方式建議是在物件的后面加上LOD的層級代號,這樣比較方便我們直接用名稱來選擇高模與低模。
在制作LOD之前,我們需要注意一個事情,那就是將不同面數的模型放在同一個位置,否則會發生模型位置錯亂的情況,如圖所示,使用Reset方式將中間的模型與低模移到與高模相同的位置。
接着建立一個空的Game Object,將其命名為prop_Barrell,我們准備用在這個空組件上面添加LOD的屬性。
選擇Component > Rendering > LODGroup,然后就可以對LOD開始進行設置的工作。
在LODGroup的設置里面列出了LOD的層級,底下的Add用來添加LOD所對應的模型,操作方法是先選擇LOD : 0,按下Add,選擇場景里面的prop_barell_LOD0模型。
系統彈出一個提示,詢問是否將這個選擇的模型設置子物體,選擇Yes,Reparent即可。
如圖所示,在選擇Reparent后,LOD0的模型自動的設置為prop_Barell的子物件。
設置完成LOD:0的層級后,選擇LOD:1,按下Add,選擇場景內的prop_barell_LOD1,接着選擇LOD:2,按下Add,選擇prop_barell_LOD2后即可完成整個LOD的設置。
現在滑動LODGroup上方的相機圖標來測試LOD的效果,模型在近處時使用的是LOD0所設置的高模,移到LOD1時則是顯示為一般進度的模型,而在LOD3的層級時,模型就換為低模,移到最后的Culled插件,模型已經完全的消失了。
此外,我們還可以任意的修改每一個層級的作用范圍,只要拖動LOD分隔的線段即可,然后再根據相機的預覽來調整出最合適的LOD效果。
Unity的資源商店也提供了功能更為強大的LOD設置插件,以下為試用版的鏈接,如果是用於商業項目,請支持正版。
Smart LOD 1.0 - 大場景的優化神器(比unity自帶的優化效率更高!)
http://www.narkii.com/club/thread-320869-1.html
同樣還有Simple LOD等
在資產的導入管線基於LOD的命名約定
為了簡化LOD設置,Unity在模型導入時有一個命名約定。
簡單地創建你網格,名稱后綴為_LOD0,_LOD1,_LOD2等,會為你創建LOD組,並作出相應的設置。
請注意,該約定假定最高分辨率的網格的LOD后面的數字是最小的。
在質量設置你可以為每個平台條件LOD設置,特別是LOD偏移和最大LOD層次。