1. 程式人生 > >unity資源優化外掛

unity資源優化外掛

轉載 來自:http://blog.uwa4d.com/archives/Resource_Plugin.html

工欲善其事必先利其器。在Unity官網的Asset Store上有不少給力的資源外掛,能幫助我們減少人力資源消耗的同時,更快更好地駕馭引擎。今天我們就從善用資源的角度,推薦兩款Unity熱門外掛,並介紹其使用技巧。

Mesh Baker

我們在專案開發的時候經常會大量使用大規模的Mesh,導致Draw Call過高。而Mesh Baker扮演了網格烘焙器的角色,其工作原理是將網格和材質合併,從而降低渲染的Draw Call。

下面,我們就來談談使用方法:

Texture Packing

我們常常會遇到角色網格相似,但是紋理繁雜細碎的情況。這時我們需要把紋理合並在同一張圖上。紋理拼合的操作面板如下圖所示:選擇不同的網格來拼合,Texture Baker自動分析其Shader,Size等屬性,最後點選Bake Material Into Combined Material,即可完成拼合。

UWA Tech Doc

Mesh Batching

在紋理拼合後已經形成為一張圖片了,這時候我們需要進行Mesh拼合,即使用Mesh Baker來烘焙網格。在此,我們新建一個新的GameObject,點選Bake就把3個Mesh烘焙在一個Object上了。

UWA Tech Doc

同時,在進行了這兩步之後,我們會發現Draw Call上的變化。

合併前

UWA Tech Doc

合併後

UWA Tech Doc

不難發現,合併前12個Draw Call,合併後只有2個,從而在一定程度上降低渲染壓力。

對Skinned Mesh進行拼合

Unity引擎無法原生支援蒙皮網格的Draw Call Batching,而Mesh Baker能將多個Skinned mesh合併。

UWA Tech Doc

UWA Tech Doc

經過合併後,人物的材質已經相同,所以我們能在上圖中看到這些角色只產生了一個Draw Call。同理,即使再加入更多的角色也能合併成非常少的Draw Call,從而減少渲染耗時。

除此之外, Mesh Baker還支援將Mesh Renderer與Skinned Mesh Renderer一起合併。比如開發中常用到的道具如帽子、劍等,使得角色在換裝時也只產生一個Draw Call,非常實用。

在使用skinnedmesh時有幾個注意點:

合併後將原始模型的Bone保持Active;
Disable原始模型的Skinned Mesh Renderer;
確保原始的Animation始終在執行;
如果需要Mesh Rendering與Skinned Mesh 一起合併,則需要保證在其在同一張Texture Atlas和Mesh容器中。

SimpleLOD

除了Mesh Baker,另一個外掛SimpleLOD也比較適合大規模場景的製作開發。在處理多人線上的專案(如MMO遊戲)時,按照我們以往的優化方法是儘可能降低Draw Call和減少渲染消耗,在遠處使用低階LOD,在Run-time時根據相機距離切換合適的LOD,使得在手機效能有限的情況下儘量渲染更多的角色,達到更好的效果。

而SimpleLOD恰好可以滿足這一點,除了同樣擁有Mesh Baker所具有的Mesh合併、Atlas烘焙等功能,它還能提供Mesh的簡化(Mesh Baker無法提供),並對動態蒙皮網格進行了很好的支援。該外掛可在Run-time和Editor中都可以使用,同時開放了原始碼,大家可以根據專案的實際情況而作修改。

UWA Tech Doc

我們拿以下原始模型來舉例:

UWA Tech Doc

合併模型

開啟外掛後有如下一些選項:點選Merge child meshes

UWA Tech Doc

我們知道Unity支援的網格頂點數不能超過65536,但是當我們把很多物體合成一個Mesh時很可能會超過這個限制。而這個外掛會針對這種情況進行自動處理,可以看到下圖中的兩輛車Merge後成Merged part1和Merged part2 。

UWA Tech Doc

烘焙Atlas

下圖是Texture packing,根據模型的Material自動把不同型別的Texture分類顯示出來,在合併的時候,會自動把同類型的Texture合併。

UWA Tech Doc

合併之後的效果對比:Draw Call數量由原來的136降至24個。

UWA Tech Doc

模型簡化

選擇了模型之後,點選Simplify mesh,它會盡可能在保持原樣的基礎上簡化網格。如下圖,汽車模型的網格面片數從六萬多頂點數減少到了兩萬七。

UWA Tech Doc

UWA Tech Doc

同時,它也能自動生成不同級別的LOD。這裡有6層LOD(從大到小),點選Bake LOD後它會自動計算,不需要大家手動操作。我們可以通過更改指令碼達到希望的效果。

UWA Tech Doc

UWA Tech Doc

如下就是使用了SimpleLOD後的效果。該外掛最大的特色即是對Skinned mesh動畫角色網格提供了很好的支援。

UWA Tech Doc

UWA Tech Doc

以上是我們今天推薦的外掛,但願能在資源優化中祝你一臂之力。今後我們將會結合以往的行業服務經驗,為您推薦更多高效的開發利器,盡情關注!