游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:791

当前位置:游戏蛮牛 技术专区 教程分享

查看: 3066|回复: 35

[系列教程] Unity插件介绍-01 Runtime Mesh Baker

[复制链接]  [移动端链接]
排名
7455
昨日变化

2

主题

37

帖子

565

积分

Rank: 9Rank: 9Rank: 9

UID
55771
好友
5
蛮牛币
38
威望
0
注册时间
2014-11-16
在线时间
364 小时
最后登录
2018-10-10

专栏作家

发表于 2017-12-29 13:35:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 AndrewFan 于 2017-12-29 23:10 编辑

Unity 插件 介绍开篇

Andrew: 开辟专栏很久了,再不写点文章说不过去,接下来我想写一个系列文章,介绍一些Unity的优秀插件,涉及到Unity优化、关卡编辑、材质制作等等主题,想想这些想参透的话,还是有很多内容要研究和学习的呢!当然,讲到要介绍插件,当然自己的插件优先介绍啦。。。

1.png

https://assetstore.unity.com/packages/tools/modeling/runtime-mesh-baker-90510

Runtime Mesh Baker (运行时网格合并器)
说明:帮你合并模型、材质和贴图。 减少DrawCall,提升运行速度。 可以获得比Unity系统的静态/动态批处理更高效的DrawCall降低率。

1、为什么要合并?

网格合并是Unity优化的一种重要手段,它非常重要,几乎为优化的首要考虑的问题。拓展一下,谈到优化一般就会谈到几个话题
减面、减DrawCall、避开实时光照、使用更优化的Shader等等,而当你的项目基本确定风格和内容时,减面的工作所能做的就已经有限了。(一般手机游戏开发时,都已经运用了很低的模型,面数基本不可能大幅度减少),因此接下来首要考虑的问题就是如何减少DrawCall,而将不同的模型合并起来,一起进行渲染就是非常重要的一种手段。也就是接下来要说到的网格合并。

2、Drawcall机制
什么情况下会增加DrawCall?这个是首先要了解的问题,假如你对Shader了解足够深入的话,这个话题自然容易明白,然而如果你不了解,也可以大概这么理解:
A、假如渲染2个模型时,如果使用不同材质,那么它们至少需要两个DrawCall,每种材质要至少占用一个DrawCall。
B、为什么说是至少呢?因为这时候你使用的是最简单的Shader,可以有光照,但是没有阴影,如果要投影,那么DrawCall要X2,因为要Shader计算额外要走一个投影计算的Pass
C、【Unity静态合并 Static Batch】如果你渲染的2个模型,使用相同的材质,而且你为它们都勾选了Static,那么Unity在启动后会主动把模型合并到一个缓存里,减少模型次数的绘制,然而它缓冲模型的顶点数是有上限的,而且现在仅仅有一个static开关,它会不加选择地将场景的所有Static内容全都缓存在一起,不管你的相机视野里面有没有那个模型,它都会进入一次绘制运算,显然,它的DrawCall次数是减少了,然而囫囵吞枣地把不该渲染的顶点都给渲染了。
D、【Unity动态合并 Dynamic Batch】如果你渲染的2个模型,使用相同的材质,而且这两个模型足够简单(模型顶点数低于256),而且你不去勾选Static,那么Unity将在绘制的时候有可能将它们合并在一起,为什么叫有可能呢?就是当二者之间(远近距离之间)不存在要渲染的第三者,那么这时候二者就可以合并到一起渲染。综合来看,这个条件也比较苛刻,模型要足够简单,还要不允许多种不同内容的存在,Dynamic Batch也就有点鸡肋。

3、最高效的合并是什么?
最好的合并的方式,应该是将那些同种材质甚至不同材质的物体都能尽可能合并在一起,然而并不让它们多占用相机渲染的顶点数,也就是说,首先应该按区域合并,也就是将场景内的物体划分为一簇一簇的单元组合,每个单元组合单独进行合并,合并时,如果不担心内存问题,可以动态重建材质和贴图,将不同材质的物体合并在一起,如果但是内存问题,则不要产生新的材质和贴图,只是将模型合并在一起,同时还要考虑合并的顶点上限,因为每次合并出来的模型的顶点数不能超过65536,因此如果顶点数超越,要再行分配出多个模型来接受合并结果。

4、预先合并还是动态合并?
预先合并是说在游戏开发阶段即将场景内容合并在一起,这样的话,渲染效率最好,因为不需要临时计算,不产生多消耗的内存和计算时间,然而,当场景复杂且多变时,将产生越来越多的冗余资源(指数级别增长),预先合并将越来越难以为继。动态合并则需要临时运算产生模型,不会产生冗余资源,这也是我推荐的方式。

5、动态物体的合并
以上我说的合并都是指相对静态的物体,就是不会发生相对移动的物体,如果物体会发生移动,比如说游戏中人物角色,那么能操作的优化空间就会少很多,这时候,尽可能把模型做的简单,让Unity的Dynamic Batch发挥作用吧。另外,对于同一个人物角色,如果其身上存在多个所使用相同材质的子模型,也是可以合并优化的。

6、Runtime Mesh Baker究竟能做什么?
简单说,就是完成动态的分组合并。可以合并静态物体,轻度合并[Mild](按材质分类,合并相同材质的模型)或者深度合并[Deep](不分类材质,全部合并,要求不同的材质采用相同的Shader,合并模型和材质、贴图),也可以合并角色[Skinned]的SkinnedMesh(也属于轻度合并,不产生新材质和贴图),如果你的角色有多个分模型的话。

2.png


详细介绍可以看这里的文档:
http://www.lonelywalker.cn/runtime_mesh_baker/
后续我给出中文文档。


评分

参与人数 1鲜花 +1 收起 理由
sangni007 + 1 赞一个!

查看全部评分


回复

使用道具 举报

7日久生情
2333/5000
排名
2815
昨日变化

11

主题

1119

帖子

2333

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
168159
好友
4
蛮牛币
5348
威望
0
注册时间
2016-9-12
在线时间
707 小时
最后登录
2018-10-22
发表于 2017-12-29 14:47:31 | 显示全部楼层

回复

使用道具 举报

7日久生情
2240/5000
排名
19773
昨日变化

2

主题

1854

帖子

2240

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
185807
好友
0
蛮牛币
2918
威望
0
注册时间
2016-11-22
在线时间
354 小时
最后登录
2018-8-4
发表于 2017-12-29 14:56:49 | 显示全部楼层
赞,学习了,谢谢分享

回复 支持 反对

使用道具 举报

7日久生情
1850/5000
排名
1431
昨日变化

2

主题

346

帖子

1850

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
151630
好友
4
蛮牛币
2207
威望
0
注册时间
2016-6-12
在线时间
673 小时
最后登录
2018-10-22
发表于 2017-12-29 18:08:07 | 显示全部楼层

回复

使用道具 举报

7日久生情
2731/5000
排名
2906
昨日变化

2

主题

1841

帖子

2731

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
10463
威望
0
注册时间
2017-9-6
在线时间
410 小时
最后登录
2018-10-22
发表于 2017-12-30 07:25:57 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
3302/5000
排名
1931
昨日变化

0

主题

2122

帖子

3302

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
1
蛮牛币
2417
威望
0
注册时间
2017-7-12
在线时间
514 小时
最后登录
2018-10-22

活力之星

发表于 2017-12-30 11:03:51 | 显示全部楼层
谢谢分享
[发帖际遇]: 一个袋子砸在了 夜雨微凉 头上,夜雨微凉 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

4四处流浪
334/500
排名
46139
昨日变化

0

主题

203

帖子

334

积分

Rank: 4

UID
9367
好友
0
蛮牛币
261
威望
0
注册时间
2013-12-2
在线时间
127 小时
最后登录
2018-10-22
发表于 2018-1-2 10:50:09 | 显示全部楼层
谢谢分享
[发帖际遇]: cityuazone 捡了钱没交公 蛮牛币 降了 2 . 幸运榜 / 衰神榜

回复

使用道具 举报

7日久生情
2240/5000
排名
19773
昨日变化

2

主题

1854

帖子

2240

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
185807
好友
0
蛮牛币
2918
威望
0
注册时间
2016-11-22
在线时间
354 小时
最后登录
2018-8-4
发表于 2018-1-2 16:24:02 | 显示全部楼层
赞,学习了,谢谢分享

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1016/1500
排名
3412
昨日变化

1

主题

371

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
122160
好友
1
蛮牛币
1669
威望
0
注册时间
2015-9-10
在线时间
236 小时
最后登录
2018-8-1
发表于 2018-1-3 09:51:04 | 显示全部楼层
感谢分享

回复

使用道具 举报

4四处流浪
455/500
排名
5353
昨日变化

5

主题

64

帖子

455

积分

Rank: 4

UID
195502
好友
0
蛮牛币
551
威望
0
注册时间
2016-12-23
在线时间
138 小时
最后登录
2018-10-22
发表于 2018-1-3 10:02:22 | 显示全部楼层
感谢分享

回复

使用道具 举报

5熟悉之中
675/1000
排名
5390
昨日变化

5

主题

242

帖子

675

积分

Rank: 5Rank: 5

UID
209710
好友
0
蛮牛币
2182
威望
0
注册时间
2017-6-15
在线时间
184 小时
最后登录
2018-10-22
发表于 2018-1-3 10:44:44 | 显示全部楼层
多谢分享,666

回复

使用道具 举报

7日久生情
2107/5000
排名
2042
昨日变化

1

主题

938

帖子

2107

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
216583
好友
2
蛮牛币
3485
威望
0
注册时间
2017-4-7
在线时间
536 小时
最后登录
2018-10-22
发表于 2018-1-3 11:25:31 | 显示全部楼层
感谢分享

回复

使用道具 举报

排名
25882
昨日变化

1

主题

31

帖子

82

积分

Rank: 2Rank: 2

UID
165906
好友
0
蛮牛币
18
威望
0
注册时间
2016-9-5
在线时间
36 小时
最后登录
2018-9-26
发表于 2018-1-3 15:19:15 | 显示全部楼层
谢谢分享

回复

使用道具 举报

7日久生情
1693/5000
排名
1497
昨日变化

3

主题

355

帖子

1693

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
159631
好友
1
蛮牛币
4415
威望
0
注册时间
2016-7-30
在线时间
527 小时
最后登录
2018-10-22
发表于 2018-1-4 14:30:23 | 显示全部楼层
谢谢分享 非常感谢
[发帖际遇]: oxford561 被钱袋砸中进医院,看病花了 2 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

5熟悉之中
538/1000
排名
11312
昨日变化

2

主题

191

帖子

538

积分

Rank: 5Rank: 5

UID
37772
好友
0
蛮牛币
402
威望
0
注册时间
2014-8-3
在线时间
258 小时
最后登录
2018-9-29
发表于 2018-1-4 17:58:51 | 显示全部楼层
30刀好贵啊  有没有free版的啊    。。。
[发帖际遇]: 一个袋子砸在了 王大鹏 头上,王大鹏 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表