您当前的位置:首页 VR开发 Unity 正文

浅谈Mesh Baker的使用方法

查看: 4842| 评论: 0 2016-11-21 04:42 PM| 发布者: PeckBang |原作者: admin

我们在项目开发的时候经常会大量使用大规模的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容器中。

52VR.COM微信扫一扫
52vr公众号
专注于VR的学习、开发和人才交流

52VR开发交流

相关推荐

已有 0 人参与

发表评论

您需要登录才可以回帖 登录 | 立即注册

手机版|VR开发网 ( 津ICP备18009691号 ) 统计 网安备12019202000257

GMT+8, 2020-10-22 07:34 PM

返回顶部