Mesh Baker是一款为unity引擎提供的游戏场景优化插件,这款插件相当于一个网格烘焙器,其工作原理是将网格和材质合并,从而降低渲染的Draw Call。用户可同时使用此插件,降低大量贴图对内存的消耗,从而达到提升游戏的效能,是专门为unity游戏开发人员打造的3D游戏场景优化神器。
插件特色:
结合网格和材料,以减少绘制调用。现在包括它自己的纹理包装器!
固定模型和创建地图集,这样他们就可以分享材料(静态/动态配料)
导入模型中的缩放、旋转和平移
与任何材质和材质一起使用
全多材料支持
结合和自定义皮肤网格
贴图,法线,切线,自动调整
烤平铺纹理
全光照贴图支持
源资产未触及
简单,没有脚本,在5分钟内学习
运行API
可以处理负缩放
使用说明
我们在项目开发的时候经常会大量使用大规模的Mesh,导致Draw Call过高。而Mesh Baker扮演了网格烘焙器的角色,其工作原理是将网格和材质合并,从而降低渲染的Draw Call。
Texture Packing
我们常常会遇到角色网格相似,但是纹理繁杂细碎的情况。这时我们需要把纹理合并在同一张图上。纹理拼合的操作面板如下图所示:选择不同的网格来拼合,Texture Baker自动分析其Shader,Size等属性,最后点击Bake Material Into Combined Material,即可完成拼合。
Mesh Batching
在纹理拼合后已经形成为一张图片了,这时候我们需要进行Mesh拼合,即使用Mesh Baker来烘焙网格。在此,我们新建一个新的GameObject,点击Bake就把3个Mesh烘焙在一个Object上了。
同时,在进行了这两步之后,我们会发现Draw Call上的变化。
合并前
合并后
不难发现,合并前12个Draw Call,合并后只有2个,从而在一定程度上降低渲染压力。
对Skinned Mesh进行拼合
Unity引擎无法原生支持蒙皮网格的Draw Call Batching,而Mesh Baker能将多个Skinned mesh合并。
经过合并后,人物的材质已经相同,所以我们能在上图中看到这些角色只产生了一个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容器中。
注意事项:
1、mesh baker软件会扫描出当前场景中使用了相同材质球的Mesh分类显示
2、这个时候就可以和美术沟通,用了一个Shader的材质球是否可以考虑合并到其他材质球里面,在确保美术效果一样的前提,不行的话就不需要合并这个Mesh了
3、此合并工具最好建议手动合并,因为U3D 虽然会将标记为静态物体的Mesh进行自动合并,但是本身合并的过程就是一个计算量很大的过程,经过我们测试,让U3D自己合并的效率要低于用MB合并成一个MESH 的效率。此类手动合并适用于场景中的杂物,比较多的物体,例如废墟、砖块、杂草、非常多的细小的Mesh但是有非常多的那种