LOD為Levels of Detail的簡稱,簡單來說即為多細節(jié)層次,不少朋友經(jīng)常聽到這個名稱,但是并不知道如何把這個技術(shù)運用在游戲里面,如果用百度查到的說法是:LOD技術(shù)指根據(jù)物體模型的節(jié)點在顯示環(huán)境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數(shù)和細節(jié)度,從而獲得高效率的渲染運算。
以上的解釋可能很多人看了是一頭霧水,還是不了解LOD的實際運用,以下讓我們通過一個簡單的案例來說明LOD的巧妙之處。
我們使用了3dsmax來說明LOD模型的制作,下載附件后打開場景文件,里面是三個面數(shù)不同的油桶造型,由左到右分別代表了高模,一般與低模的模型結(jié)構(gòu)。
選擇左邊的油桶模型,如圖所示,這個模型的數(shù)據(jù)為三角面712,頂點數(shù)358。
選擇右邊的模型,這個低模的數(shù)據(jù)很符合我們的要求,一般來說,用三個模型來制作LOD的效果就很足夠了,例如建筑場景里面,最遠端的房子只能看到類似盒子的效果,而鏡頭前面的樓房則是可以清楚的看到里面的許多細節(jié),但是鏡頭推進到遠處的樓房時,原來的盒子立即換成另一個可以戰(zhàn)勝細節(jié)的模型,這個就是LOD的運作原理。
將模型保存為FBX后,導(dǎo)入Unity進行測試,命名的方式建議是在物件的后面加上LOD的層級代號,這樣比較方便我們直接用名稱來選擇高模與低模。
在制作LOD之前,我們需要注意一個事情,那就是將不同面數(shù)的模型放在同一個位置,否則會發(fā)生模型位置錯亂的情況,如圖所示,使用Reset方式將中間的模型與低模移到與高模相同的位置。
接著建立一個空的Game Object,將其命名為prop_Barrell,我們準備用在這個空組件上面添加LOD的屬性。
選擇Component > Rendering > LODGroup,然后就可以對LOD開始進行設(shè)置的工作。
在LODGroup的設(shè)置里面列出了LOD的層級,底下的Add用來添加LOD所對應(yīng)的模型,操作方法是先選擇LOD : 0,按下Add,選擇場景里面的prop_barell_LOD0模型。
系統(tǒng)彈出一個提示,詢問是否將這個選擇的模型設(shè)置子物體,選擇Yes,Reparent即可。
如圖所示,在選擇Reparent后,LOD0的模型自動的設(shè)置為prop_Barell的子物件。
設(shè)置完成LOD:0的層級后,選擇LOD:1,按下Add,選擇場景內(nèi)的prop_barell_LOD1,接著選擇LOD:2,按下Add,選擇prop_barell_LOD2后即可完成整個LOD的設(shè)置。
現(xiàn)在滑動LODGroup上方的相機圖標來測試LOD的效果,模型在近處時使用的是LOD0所設(shè)置的高模,移到LOD1時則是顯示為一般進度的模型,而在LOD3的層級時,模型就換為低模,移到最后的Culled插件,模型已經(jīng)完全的消失了。
此外,我們還可以任意的修改每一個層級的作用范圍,只要拖動LOD分隔的線段即可,然后再根據(jù)相機的預(yù)覽來調(diào)整出最合適的LOD效果。