簡介
這篇完全是實驗性質,目的是驗證出透過Unity3D內建的功能與優化場景套件相互配合應用下,如何搭配是最省效能且不失物件的精細度。
前提是我們都會使用MeshBaker、Mantis LOD、LOD Group,而提出幾種實驗的排列組合,如下表,Item Object有Original Object , Use LOD Group , Use Mantis LOD , Use MeshBaker , Mantis LOD + MeshBaker , MantisLOD + MeshBaker + LODGroup這六種,我們就來看看哪種搭配是比較好的。
實驗過程
我們在場景中新增了六種不同的功能排列組合所產生的物件,如上圖,可以先來看看每個物件的基礎資料。
1. Original Object –
使用Mantis LOD來看看每個項目的三角面數有多少,標示Original有三個物件,有148308個三角面。Batches使用了26個Batches。
而選擇Camera位移距離時,距離10M: Batches使用了30個Batches, 距離50M:26-Batches,100M:22-Batches,150M:18-Batches,無限:12-Batches。
2.Only LOD Group –
Only LOD Group物件有三個LODGroup三個物件,並在每個Group中有5個物件,總共15個物件,所以他的三角面數多達438402,Batches使用了10個Batches。
而選擇Camera位移距離時, 距離10M: Batches使用了30個Batches, 距離25M:26-Batches,90M:22-Batches,120M:18-Batches,無限:12-Batches。
3.Only Mantis LOD –
Only Mantis LOD物件有三個物件,三角面數使用了MantisLOD縮減到總共有32004面,Batches使用了10個Batches。
而選擇Camera位移距離時, 距離10M: Batches使用了30個Batches, 距離50M:26-Batches,100M:22-Batches,150M:18-Batches,無限:12-Batches。
4.Only Mesh Baker –
Only Mesh Baker物件只有一個,三角面數為32004面,Batches使用了4個Batches。
而選擇Camera位移距離時, 距離10M: Batches使用了16個Batches, 距離50M:14-Batches,100M:12-Batches,150M:10-Batches,無限:2-Batches。
5. Mantis LOD + MeshBaker –
Mantis LOD + MeshBaker物件有一個,三角面數為32004面,Batches使用了4個Batches。
而選擇Camera位移距離時, 距離10M: Batches使用了16個Batches, 距離50M:14-Batches,100M:12-Batches,150M:10-Batches,無限:2-Batches。
6. MantisLOD + MeshBaker + LODGroup –
MantisLOD + MeshBaker + LODGrop物件有五個物件,三角面數439160面,Batches使用了4個。
而選擇Camera位移距離時, 距離10M: Batches使用了16個Batches, 距離50M:14-Batches,100M:12-Batches,150M:10-Batches,無限:2-Batches。
實驗結果
經過實驗結果列出以下表格,讓大家瞭解一下。一個是單純物件對於場景中所使用到的Batches數字,另一個表格是移動攝影機時所使用到的Batches數。
靜態測試 –
Item | Mantis LOD | Mesh Baker | LOD Group | Triangles | Batches |
1. | ○ | ○ | ○ | 148308 | 26 |
2. | ○ | ○ | ● | 438402 | 10 |
3. | ● | ○ | ○ | 32004 | 10 |
4. | ○ | ● | ○ | 32004 | 4 |
5. | ● | ● | ○ | 32004 | 4 |
6. | ● | ● | ● | 439160 | 4 |
距離測試 –
Item – Batches | 10M | 50M | 100M | 150M | ∞ |
1.Original Object | 30 | 26 | 22 | 20 | 12 |
2.Only LOD Group | 30 | 26 | 22 | 20 | 12 |
3.Only Mantis LOD | 30 | 26 | 22 | 18 | 12 |
4.Only Mesh Baker | 16 | 14 | 12 | 10 | 2 |
5.Mantis LOD+MeshBaker | 16 | 14 | 12 | 10 | 2 |
6.MantisLOD+MeshBaker+LODGroup | 16 | 14 | 12 | 10 | 2 |
綜合以上兩個表格所呈現的吃效能顯示當然是什麼都不做的物件1所耗的效能最高,而物件2的面數相較於物件1是多了3倍,但是效能卻比之少了許多。接著我們把物件3-5拿來一起看,可能是單一物件所使用到的材質都是同一種,所以Batches數量是一樣的使用了4個Batches,通常使用到LOD Group的物件面數都是呈現比較多的。
接著我們看到表二,他是代表我們的LOD Group對於Batches有沒有效果,這次的實驗看起來是沒什麼改變,我覺得可能是此物件透過ManticLOD減面的效果有限,從100的30000面至20的10000面,在未來可以多做這方面的實驗。
而這篇的實驗重點我們得出了,其實使用MeshBaker這個工具就可以節省很多系統資源了,除非場景中有非得顯示到細節到不行的物件,我們在使用LOD Group或是組合拳 MantisLOD+MeshBaker+LODGroup 。