Mesh Baker的基本操作与功能演示
原地址: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>
Mesh Baker的基本操作与功能演示的更多相关文章
- Angularjs,WebAPI 搭建一个简易权限管理系统 —— 基本功能演示(二)
目录 前言 Angularjs名词与概念 Angularjs 基本功能演示 系统业务与实现 WebAPI项目主体结构 Angularjs 前端主体结构 基本功能演示(二) 非常抱歉这个月实在太忙,一直 ...
- [视频]K8飞刀 exploit管理功能 演示教程
[视频]K8飞刀 exp管理功能 演示教程 链接: https://pan.baidu.com/s/1rYb3rh4od3j07TZAAq_smw 提取码: kksa
- string类的常用功能演示
这个程序可用随着我对string的用法的增多而有调整. /* 功能说明: string类的常用功能演示. 实现方式: 主要是演示string的常用函数的用法和它与字符数组的区别与联系 限制条件或者存在 ...
- Spring 核心功能演示
Spring 核心功能演示 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot, ...
- 网关Ocelot功能演示完结,久等了~~~
前言 关于网关(Ocelot)的分享,还遗留一些功能没演示呢,接着来聊聊:这次重点针对网关Ocelot使用缓存.集成Polly做服务治理.集成IdentityServer4做认证授权来详细说说:如果对 ...
- Nginx实战部署常用功能演示(超详细版),绝对给力~~~
前言 上次分享了一些开发过程中常用的功能,但如果到真实环境中,其实还需要一些额外的配置,比如说跨域.缓存.配置SSL证书.高可用等,老规矩,还是挑几个平时比较常用的进行演示分享.上篇详见Nginx超详 ...
- 【九】Kubernetes 之 Service 概念图文讲解及功能演示
Service 概念 Kubernetes Service 定义了这样一种抽象:逻辑上的一组 Pod,一种可以访问它们的策略 -- 通常称为微服务. Service 通常是通过 Label Selec ...
- Web Api其中的PUT功能演示
Insus.NET这几天均在学习Web API知识,并练习.怎样获取数据,提交数据或是保存数据.你可以温习一下<Post model至Web Api创建或是保存数据>http://www. ...
- EditText使用详解-包含很多教程上看不到的功能演示
写道 标题有点大,说是详解,其实就是对EditText的一些常用功能的介绍,包括密码框,电话框,空白提示文字等等的讲解,尽量的介绍详细一点,也就是所谓的详解了..呵呵 广告一下我的应用“我团”,最新1 ...
随机推荐
- Debian8 加载NTFS 磁盘出错 解决方法
执行 ntfsfix /dev/sdb2 // sd* a代表第一块硬盘 b代表第2块硬盘 数字是分区号 执行后 就可以正常使用了.
- iOS - 字典(NSDictionary)
1. 字典类型的常用处理 //---------------不可变字典 //1.字典的创建 NSArray *array1 = [NSArray arrayWithObjects:@"zha ...
- 博客迁到CSDN
之前一直是博客园和CSDN博客同步更新 现在不在博客园继续写博客,十一国庆节假后只用CSDN博客了.祝各位访客国庆节快乐! CSDN博客地址: http://blog.csdn.net/it_liuc ...
- 禁用iOS9 App Transport Security(ATS)特性时不起作用
iOS 9发布后,原来开发的iPad应用在iOS9下面测试时,协议使用的是HTTP,发送网络请求时,Console窗口输出: App Transport Security has blocked a ...
- oracle经典操作sql
分页: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40)WH ...
- css3学习笔记之图片
圆角图片 border-radius: 圆角图片: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <!DOCTYPE html> <htm ...
- Spring事务配置的五种方式(转发)
Spring事务配置的五种方式(原博客地址是http://www.blogjava.net/robbie/archive/2009/04/05/264003.html)挺好的,收藏转发 前段时间对Sp ...
- AE实现点击一个要素,并显示其属性
第一步:根据鼠标点击处的点,找到被选中的要素 public IFeature Find2(IPoint pPoint) { ITopologicalOperator pTopoOpe = pPoint ...
- qml去标题栏
只要加入"flags: Qt.Window | Qt.FramelessWindowHint "属性就可实现去标题栏. 注意:在使用这个属性的时候要先导入QtQuick.Windo ...
- Hibernate的单向OneToMany、单向ManyToOne
单向OneToMany 一个用户有多张照片,User----->Images是一对多关系,在数据库中Images维护一个外键useid 1.在映射关系的主控方Image这边,我们什么都不做.(为 ...