原地址:http://www.narkii.com/club/thread-301789-1.html
如何降低游戏在系统中的消耗并带给用户最佳的体验是开发者一直追求的目标,在Unity里面对于模型与贴图优化的方式已经提供了不少工具,而在某些地方仍需借由外部的插件才能得到更为理想的效果。在本教程里,我们将介绍一个材质烘培类型的插件- Mesh Baker,通过这个插件的优化之后可降低大量贴图对系统的消耗,进而达到快速提升游戏的效能!
首先,我们看看房屋模型在max里面的情况,如图所示,这是一组由多个网格物件所组成的房屋,并且在每一个网格面上都设置了几种以上的材质,其中包含了颜色与贴图。以房屋模型里面的一个墙面网格为例,在这个模型的墙与柱面分别设置了不同的贴图,以及旁边破损的部分加起来总共有数种材质。
<ignore_js_op>
<ignore_js_op>
在max里面制作多层贴图通常会使用Multi-Sub Object的材质属性,如图所示,每一个ID代表了一种材质的设置,所以从数字上看来在这个模型上面总共有七种材质。
<ignore_js_op>
将模型导入Unity后,在Materails的列表里面可以看到网格模型的材质对应到Multi-Sub Object的ID。
<ignore_js_op>
经过Mesh Baker的贴图烘培后,从外观看起来的模型并没有任何的改变,如图所示,左边是原来的模型,而右边则是Mesh Baker使用贴图烘培出来的结果。
<ignore_js_op>
我们来看看Mesh Baker烘培出来的模型材质,原来的七种材质已经合并成一张完整的贴图了,如此一来将可以大幅的降低贴图对于系统的消耗。
<ignore_js_op>
接下来,我们用一个模型来说明Mesh Baker的操作流程,Mesh Baker插件的下载位置如下:http://www.narkii.com/club/thread-295672-1.html
<ignore_js_op>
安装Mesh Baker后,可以在GameObject > Create Other > Mesh Baker里面找到三个主要的烘培功能,在一般情况下选择Mesh And Material Baker即可处理大多数的模型,其他两个功能分别是多网格物件的材质的烘培(Multi-mesh Anb Material Baker)与材质烘培(Material Baker)。
<ignore_js_op>
选择Mesh And Material Baker,在Hierarchy面板里面会产生一个MeshBaker0的组件,如图所示:
<ignore_js_op>
然后我们来看看是那些模型需要进行烘培,需要做的处理是将场景里面的几个模型合并成一个,并且能共用同一张贴图。
<ignore_js_op>
首先,按下Create Empty Assets For Combined Material保存一个材质烘培后的存档文件,如图所示,我们使用了一个building的文件名来作为Mesh Baker的烘培文件。
<ignore_js_op>
在Object To Be Combined > Size 的栏位里面输入5,表示有5个物件需要进行烘培,接下来的动作很简单,只需要将模型添加进来即可。设置好烘培的模型后,按下Bake Materials to Combined Material,意思就是将所有的材质烘培成一个材质的作用,然后系统就会开始进行运算。
<ignore_js_op>
运算完成后,将烘培好的材质添加到Material Bake Result,表示模型将会以这个烘培后的材质来重新进行贴图的指定。
<ignore_js_op>
<ignore_js_op>
如图所示,Shaders里面所列出的即是合并的材质。
<ignore_js_op>
接下来的动作很简单了,直接按下Object To Be Combined 里面的Bake执行物件的烘培,计算完成后在Hierarchy面板里多出了一个CombinedMesh-MeshBaker0的物件,这个就是烘培后产生的另一个物件。
<ignore_js_op>
<ignore_js_op>
将这个烘培物件移到旁边对比一下,如图所示,左边是原来的模型,右边则是烘培出来的物件,从外观上看来两者并没有任何的差异。
<ignore_js_op>
如图所示,我们可以从材质列表里面来做个比对,原来的一个模型里面有多种材质与贴图,而经过烘培后的物件则是合并成为一个材质。
<ignore_js_op>
<ignore_js_op>
点选贴图看看,很惊奇的发现原来的多张贴图已经自动的并成了一张,如此将可以大幅的减低贴图所带来的消耗,这就是Mesh Baker在优化功能上的一大优势。
<ignore_js_op>