[教程] 淺談Unity裡面的模型優化
阿新 • • 發佈:2019-02-10
如圖所示,使用Max提供的Asset Tracking功能列出缺失的檔案,選擇這些標註為File Missing的檔名稱,再使用Set Path指定出貼圖的檔案位置。
設定好貼圖檔案的位置後,在檢視內的模型就能正確的顯示出紋理效果。
另外還需要知道場景內的模型面數與單一個模型的面數與點數訊息,在檢視的設定裡面找到Statistics的欄位,勾選Polygon與Vertex Count,按下Apply完成設定。
如果檢視內沒顯示出面數的訊息,可嘗試按下7鍵即可,Total記錄的是場景內所有模型的面與點數量,右邊顯示的數值則是目前所選的模型,例如這個木箱模型面數高達216,點數為218。
選擇中間的木箱模型Crate_01,我們發現這個模型面數驚人的低,只有6個面與8個頂點,但是看起來的效果似乎跟第一個木箱完全相同,這表示第一個木箱在製作時,有過多的點與面是被製作人員浪費掉了,那麼我們應該如何處理呢?
在視圖裡我們發現模型的結構有不必要的線段,將其選擇出來後,按下Ctrl + 倒退鍵即可將這些線段從模型表面移除,注意不是按下Delet鍵,這兩者的功能有區分,一個是移除,一個是直接刪除,需注意操作方式的不同。
如圖所示,在刪除多餘的線段後,模型的面數降低到78,都是與旁邊的模型面數比較起來還是相距甚遠,看來還有其他的地方是可以再進行優化的。
Max的石墨工具裡提供了PolyDraw > Optimize的功能,這裡面有多種的快捷鍵設定,可以方便的讓我們在模型上進行點線面的優化工作。
按下Shift + 左鍵將點拖曳到另一個點上面即可完成焊接,如圖所示,將模型角落上的三個點往分別拖到中間的點進行焊接。
經過了點的焊接處理,現在面數降低到30的數量,如果要達到右邊模型的6面結構,那麼就必須再精簡模型的線段來達到最節省的面數。
現在我們看看Crate_01的面數是6面,綠色線條表示模型上面採用了拆分貼圖的方式來完成紋理的製作,開啟Unwrap UVW即可看到對應的貼圖設定。
Crate01的模型採用的是六個面所組合而成的貼圖,而Crate02採用的則是將每一個面都指定到一個貼圖上面。
底下是Crate_02使用的貼圖方式:
將模型輸出到Unity,從視圖裡面看起來,這三個木箱模型並沒有明顯的區分,呈現出來的效果基本一致。
接著看看Game視圖裡面的狀態,Draw Calls為2, Saved batching為1,不少朋友對這兩個數值不是很理解,現在我們來分析下情況,以場景內有三個模型來說,Draw Call為2表示場景內有兩個物件共用了一個材質,而另一模型則是使用了另一個材質,所以才會顯示出這兩個不同的數字,Draw Calls越低,Fps的數值越高就能讓遊戲玩起來更為流暢,所以程式人員想盡辦法的就是降低Draw Call的值。
場景內左邊的兩個模型共用了Crate_DM的材質,而最右邊的模型則是使用了Crate_DM01,貼圖的內容雖然不同,但是在Unity場景裡面我們並沒法看出模型之間的差異。
將Crate_DM這個材質新增到最右邊的模型,現在看看Draw Calls的數值降為1,batching上升為2,這表示三個模型共用了同一個材質,所以batching就增加為2。
將模型複製為9個,我們發現Draw Calls仍然為1,batching的數值上升到8,FPS數值的表現也相當的良好,現在我們理解了此方法可有效的提升遊戲效能,往後程式人員跟美術溝通時就能清楚的指出造成遊戲執行效果不佳的可能問題。
而朋友們更關心的是還有那些優化手段是美術與程式應該注意的呢? 在後面的教程裡面,我們將會陸續的介紹不同的優化方法與可結合的外掛,如果在操作上有疑慮的朋友也歡迎到本帖內留言討論,更多的技術交流與分享請加入:
納金網3dsmax技術交流群 - 284146304
納金網Unity技術交流群 - 218689657