Simulator Scene in Unity3D – MantisLOD

簡介

當我們在製作大型場景或是AI模擬器場景時,常常會遇到效能不足的狀況,當然前幾篇有解說到Unity幾種效能優化的方法,但最快且最有效能的方法就是從物件本身來著手。透過物件的Mesh Baker與製作物件的LOD都是很好的方法。

在過往製作LOD的方式都必須將物件進入3D軟體進行減面並重新匯入至Unity中(這是比較嚴謹的作法),但耗費的時間相對較多,因此Unity Asset Store提供許多快速製作LOD的套件,可直接在Unity Editor中進行作業,我挑出兩個套件來實做,並在本篇介紹Mantis LOD Editor Professional,達到快速完成且不失畫面品質的做法。

Mantis LOD Editor Professional

在我們都有此套件的前提下來說明此,可以到Asset Store下載此外掛,並且你擁有一個高級模型(面樹很多沒關係),我們就來開始做實驗吧。

當匯入此套件時,你會在Assets中看到上圖紅底線資料夾。接著在場景中放置你所準備好的物件,並在元件區新增LOD程式,Add Component → Mantis LOD Editor Professional ,如下圖所示,假如你的模型面數較多時,因為此程式會計算該模型的面數,所以需要稍後片刻,面數少則反之(但建議還是不要太多面較好,20000面以下操作起來比較流暢)。

這套建也有Auto LOD的作法,相較下方要介紹的套件較為複雜,所以這邊我們就來講土法煉鋼法,但怎樣都比丟到3D軟體減面來的快。說回正題,加入此元件後可以看到下圖,密密馬馬的都是解說,來講解一下。

1.Save Progressive Mesh – 這功能是產生一個LOD ScriptObject檔案,此檔案用意是透過下方程式碼來控制自動LOD的模式,而可以看到他產生的檔案就如下圖中Progressive Mesh資料型態,而下方有許多要調整的參數以後有機會再來介紹。

然而他產生的ScriptObject的大小跟下方第三點Max LOD Count有關,在那邊可以調整自動LOD的階層,程式也會自動幫你分階。而這選項不是我們本篇實驗要產生的檔案。知道一下就好。

2.Save Current Mesh – 這按鈕會產生透過你調整第10點Quality與其他toggle按鈕的功能generate出一個該Quality的Mesh檔案,本篇實驗的就是此功能。

3.Max LOD Count – 搭配 Save Progressive Mesh所設定的LOD階層數量。

4.Protect Boundary (default) – 所有開放邊界將得到保護;反之,開放邊界的某些平滑部分將被巧妙地合併。兩種方式都將保護uv邊界和材料邊界。開啟後系統會自動做保護邊界的動作,避免不必要的mesh破裂。

5.More Detail – 保留更多詳細信息,僅當達到最高LOD時才切換它,否則,請不要選中它以獲得最佳結果。

6.Protect Symmetry – 將保留所有對稱的uv映射,僅在製作更高的LOD時才應檢查它;否則,請不要勾選它以獲得最佳結果。

7.Protect Hard Edge – 所有硬邊緣將保留;如果要獲得最大抽取,請不要選中它。

8.Beautiful Triangles (default) – 選取後會生成漂亮的三角形,但結果可能不會比傳統方法更好,如果發生這種情況,請不要選中它。

9.Triangles – 顯示當前三角形數和總三角形數。這邊就是你在按下 Save Current Mesh 按鈕之前面數參考的依據,根據你的LOD Level來衡量要多少的面數。

10.Quality – 搭配Triangles面數互動的拖曳bar,一樣是搭配本篇重點 Save Current Mesh 產生的Mesh檔案所控制的功能。拉下去你就知道會發生什麼事了,場景的物件也會跟著變化。

經過一連串講解後,歸納一下,本篇需要注意的就是上方的3、9、10這三個參數,而在要產生不同階層的Mesh前我們先做一個容器,如上圖。
Step 1 : 先新增一個空物件,在之後要塞入不同階層的LOD Mesh。
Step 2 : 加入LOD Group元件。
Step 3 : 系統預設的階層有4階 LOD 0 , LOD 1 , LOD 2 , Cullled,假如你想刪減就在上面案右鍵新增或刪除LOD Degree,並可以拖拉百分比,代表攝影機與物件的位置距離所呈現的不同LOD階層。
Step 4 : 透過 Mantis LOD 所產生的Mesh直接拖曳到此區,系統自動會放在Step1新增的GameObject下。

接著透過 Mantis LOD製作不同階層的LOD Mesh,由於我預設五種階層所以就製作100 , 80 , 60 , 40 , 20五種,如上圖調整好物件Quality並按下 Save Current Mesh ,會跳出另存新檔的畫面,你就儲存在你指定的Unity資料夾中,存好後可以看到左下角有儲存成功的Mesh檔案。可以看到新增好的香蕉Mesh拓樸都不一樣,如下圖。

把所有剛剛新增的Mesh拖到場景中,並且賦予每個物件相同材質球。接著再把相對應的階層物件拖拉到LOD0-Culled,即可完成快速LOD了,如下圖。

小結

雖然以上是需要付費的軟體,但是好用有效是最重要的,經閱讀並親自實做過後,可以發現幾乎場景中的物件都不需進入3D軟體來減面輸出成不同LOD的mesh來匯入,真的可以省去大半時間,在下一篇我們會提到另一個優化效能的主題”Mesh Baker”,這兩個搭配起來再加上之前的Unity Editor效能優化小撇步,就可以省去許多系統耗能。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *