开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:751

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

查看: 2503|回复: 35

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

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

2

主题

37

帖子

550

积分

Rank: 9Rank: 9Rank: 9

UID
55771
好友
5
蛮牛币
14
威望
0
注册时间
2014-11-16
在线时间
357 小时
最后登录
2018-4-20

专栏作家

发表于 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日久生情
2044/5000
排名
3695
昨日变化
4

7

主题

1091

帖子

2044

积分

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

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

回复

使用道具 举报

7日久生情
2239/5000
排名
18451
昨日变化
9

2

主题

1863

帖子

2239

积分

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

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

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1422/1500
排名
1954
昨日变化
7

1

主题

298

帖子

1422

积分

Rank: 6Rank: 6Rank: 6

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

回复

使用道具 举报

7日久生情
2531/5000
排名
3277
昨日变化
2

2

主题

1781

帖子

2531

积分

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

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

回复

使用道具 举报

7日久生情
2383/5000
排名
3510
昨日变化
16

0

主题

1712

帖子

2383

积分

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

UID
219676
好友
0
蛮牛币
2236
威望
0
注册时间
2017-7-12
在线时间
307 小时
最后登录
2018-4-20

活力之星

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

回复

使用道具 举报

3偶尔光临
271/300
排名
43025
昨日变化
22

0

主题

161

帖子

271

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

7日久生情
2239/5000
排名
18451
昨日变化
9

2

主题

1863

帖子

2239

积分

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

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

回复 支持 反对

使用道具 举报

5熟悉之中
961/1000
排名
3411
昨日变化
1

1

主题

367

帖子

961

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

3偶尔光临
211/300
排名
9024
昨日变化
89

4

主题

43

帖子

211

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

4四处流浪
492/500
排名
6921
昨日变化
45

2

主题

213

帖子

492

积分

Rank: 4

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

回复

使用道具 举报

7日久生情
1635/5000
排名
3098
昨日变化
16

1

主题

847

帖子

1635

积分

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

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

回复

使用道具 举报

排名
31232
昨日变化
23

0

主题

24

帖子

61

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

6蛮牛粉丝
1344/1500
排名
2044
昨日变化
7

3

主题

344

帖子

1344

积分

Rank: 6Rank: 6Rank: 6

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

回复 支持 反对

使用道具 举报

5熟悉之中
532/1000
排名
10590
昨日变化
8

2

主题

190

帖子

532

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

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

本版积分规则

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