目录

前言

一、Mash Baker是什么?

二、使用步骤

1.打开场景

2.将Texture Baker添加到场景中

3.使用Texture Baker生成贴图集

4.烘焙新的模型并使每个模型独立

总结


前言

模型贴图整合是3D游戏中美术资源优化的重要环节,我们通常把多个模型的贴图集成到一张2048大小的贴图集中,以达到减少贴图和材质球的数量来节省资源。但是面对成百上千的模型,纹理贴图,法线贴图,高光贴图等等,每种贴图集合成大图,再分别对一次UV,结果是累死,各种贴图还未必对得上位置……,那使用 Mesh Baker 我们可以批量自动拼合贴图并映射UV,大多数工作只需在 Unity 中来完成,免去在三维软件中手动调整UV的烦恼。话不多说,上教程。

使用后:多个模型共用一个材质球,使用一张大贴图(图片来源网络)

使用前:一个模型对应一个材质球,使用一张小贴图(图片来源网络)

一、Mash Baker是什么?

Mash Baker 用于 Unity 有优化模型场景的一种工具,该工具是为了解决场景模型数量过多导致运行时产生较高的DrawCall而创建的。

以下是官方的对于这款插件的介绍。

提高性能!结合网格和材料以减少批量! Mesh Baker 是一个强大的工具包,具有灵活的非破坏性工作流程,用于优化道具和场景。 Unity 最著名的优化工具。自 2012 年以来的五星级支持和更新。

* 为道具组创建图集或纹理数组
* 在大型复杂场景中查找、分组和组合网格
* 修改道具预制件以使用图集材料
* 支持 URP、HDRP、标准管道
* 适用于内置和自定义着色器
* 为使用色调的材料创建地图集
* 支持多种材质的道具
* 处理平铺纹理
* 结合自定义并向蒙皮网格添加道具
* 创建可定制的蒙皮网格角色
* 将蒙皮网格与混合形状相结合
* UV、法线、切线自动调整
*光照贴图支持
*混合搭配灵活的工作流程工具
* 运行时 API

二、使用步骤

1.打开场景

如果导入的模型都集中在世界原点,这将不利于我们后面的操作,我们需要把模型分开

分开放置,方便我们后续的操作

2.将Texture Baker添加到场景中

如果你已经在项目中导入了Mesh Baker插件则在Unity菜单栏中找到以下路径来添加场景组件

GameObject > Create Other > Mesh Baker > TextureBaker and Mesh Baker 

这将在Hierarchy窗口中生成一个名为TextureBaker对象

可以看到这款插件的功能非常强大,此篇主要是讲贴图的优化,所以选择TextureBaker and Mesh Baker 是我们适用的功能。

3.使用Texture Baker生成贴图集

让我们选中Hierarchy窗口中的TextureBaker组件,我们可以看到右侧inspector窗口中有着许多复杂的设置,请不用担心,我将在实践中介绍他们的作用。

我们先进行操作的是MB3_Texture Baker (Script)里的参数,所以让我们把MB3_ Mesh Baker Grouper (Script)折叠起来。下图是对插件功能的解释说明。

选中我们要导入的场景对象,拖放到图中的添加窗口栏。

为了方便我们一次导入所有,我们先给它打个组,之后只拖它的父对象即可,这里我将父对象命名为Building

先在Hierarchy中高亮选择TextureBaker组件,然后直接按住父对象(Building)拖放到inspector中的对象添加窗口。

对象导入后,我们需要继续进行MB3_Texture Baker (Script)的设置,由于对象过多,我们直接折叠列表。

这些选项的理解是我看了官方教程后的总结,解释不正确还请反馈

我们首先点击Create Empty Assets For Combined Material 这将给我们的贴图集和共享材质提供一个存放位置并且会自动生成一个贴图和材质。

让我们在Project中找到我们所保存的路径,看看发生了什么。

这里我是用标准着色Standard

之后让我们回到TextureBakery的Inspector中,我们可以看到,在Texture Baker Result(存放结果的地方)自动填上了刚才生成的文件,此外Combined Mesh Material 中也自动填上了新生成的材质球。

点击过后,根据对象的数量,及其复杂程度,我们需要等待个十几、几十秒,甚至是分钟!让插件来合并贴图。我建议一次不要搞太多以防万一(虽然到目前我还没遇到过崩溃的情况)。

恭喜你,你已经成功一半了

4.烘焙新的模型并使每个模型独立

MB3_Texture Baker (Script)的使用到这里就结束了,我们在Inspector面板中将它折叠。并展开
MB3_ Mesh Baker Grouper (Script),你可以看到又是一大堆参数设置,请不要烦恼,在这里我们并不需要做很多改动。接下来我将对部分设置进行解释。

首先我们要使每个子对象都可以独立选择并移动变换,我们先看上图黄色框内找到Cluster Type(集群类型),切换为Agglomerative这个选择使按照物体本身来划分,最适合我们。然后我们点击Click To Build Clusters按钮来构建集群。

这个时候你在Scene窗口仔细观察,会发现模型被一圈圈的曲线包裹,这类似于碰撞网格一样的东西,每一个被包裹的将会分到一个组内,成为一个独立的模型。

现在的包裹曲线数量并不多,我需要每个模型都有自己的包裹曲线,这样每个模型就是一个组,以达到独立模型子对象的目的。这个时候我们可以看到有个滑块叫Max Distance(最大距离)我们将他调至最左,在滑动的过程中,观察场景中包裹曲线的变化。

这个时候我们需要生成一个记录分组信息的组件,在烘焙时插件会读取该组件的分组信息,来进行烘焙分组。我们将inspectior面板滚动到最底部,点击Generate Mesh Bakers,如果跳出提示我们点击OK即可。此时在Hierarchy面板中会多出一个名字超长的组件,这就是用来记录分组信息的组件,我们不用管它。此时我们接着点击Bake All Child MeshBakers(烘焙所有子对象)

在Hierarchy窗口中,你会多出来很多对象,没错,这就是我们烘焙出来的新对象。目前这些对象与原对象处于重叠状态,我们将它拖出来。选择名称为0结尾的Mesh按住Shift再点击最后一个Mesh将其全部选中。在Scene窗口中将他移动与原对象分开。

插件生成的对象几乎和我们原对象一样!烘焙出来的对象有些反光,这是因为我们没有调整材质球的Smoothness,我们将它归零。此时我们随便点击一个对象并在Inspectior中查看它所使用的材质球,不出所料,使用的正是我们新生成的材质球,我们再选择其他对象查看,使用的也是相同的材质球

恭喜,整个新生成的对象所使用的材质都是同一个,这达到了我们的目的!

总结

以上就是使用Mesh Baker批量合并贴图的基础教程,本文仅仅简单介绍了Mesh Baker中Texture Baker功能的使用,而Mesh Baker的强大之处不仅仅只有这些。有关更多Mesh Baker的介绍可以前往官方论坛进行查看。

论坛

油管官方教程

资料参考:3D美术资源优化—材质贴图篇

Unity场景优化工具:Mesh Baker 基础教程(贴图篇)相关推荐

  1. Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译

    http://www.cnblogs.com/alan777/p/6135703.html Unity性能优化(2)-官方教程Diagnosing performance problems using ...

  2. Unity 4.x 2D游戏开发基础教程大学霸第一更

    Unity 4.x 2D游戏开发基础教程 大学霸 第1章  Unity及其组成的介绍 本书主要讲解的是,如何使用Unity开发2D游戏.但在开始讲解之前,最好先熟悉一下Unity这个工具.本章会首先介 ...

  3. ADODB 入门学习基础教程[多图]

    ADODB 入门学习基础教程[多图] 1. 前言 ADODB 是 Active Data Objects Data Base 的简称,它是一种 PHP 存取数据库的函式组件.现在 SFS3 系统 (校 ...

  4. python人工智能编程教程-清华大学出版社-图书详情-《人工智能基础教程:Python篇(青少版)》...

    2017 年国务院印发了<关于印发新一代人工智能发展规划的通知>,提出要围绕教育. 医疗.养老等迫切民生需求,加快人工智能创新应用.要发展智能教育,利用智能技术加 快推动人才培养模式.教学 ...

  5. 人工智能python自学教程-人工智能基础教程:Python篇(青少版)

    人工智能基础教程:Python篇(青少版) 编辑推荐 源代码及PPT下载:https://pan.baidu.com/s/1mWa2fy457fhUXKxT-FgyPw 哈工智诚在线编程云平台:htt ...

  6. 【Graph】NetworkX官方基础教程:图的生成与相关操作

    NetworkX官方基础教程:图的生成与相关操作 1. Graph生成和graph操作 2. 分析图 3. 画图 参考资料 本文作为对图结构和复杂网络的快速上手,内容包括基于NetworkX进行图的生 ...

  7. 【Unity】优化工具Profiler

    Profiler 基本设置和布局 基本设置 基本布局 性能分析器(Profiler)是Unity内部集成的一款性能优化工具,可以检查脚本代码,查看运行过程中资源使用情况,还可以比较不同平台上的性能.但 ...

  8. 【ThreeJS基础教程-材质纹理篇】3.1 纹理知识进阶

    纹理知识进阶 学习ThreeJS的捷径 如何用一张地板砖贴图制作出地板砖效果 旋转纹理 移动纹理 纹理旋转与移动的应用 简单的光圈效果 简单的流水效果 WebGL项目优化技巧:没必要的细节可以用纹理直 ...

  9. DirectX12(D3D12)基础教程(外篇一)——编译Assimp

    目录 1.前言 2.Assimp库简介 3.编译Assimp库的准备工作 4.下载Assimp源码并编译 1.前言   D3D12系列教程因为我转移精力学习Nodejs.VueJs等技能,暂时中断了一 ...

  10. 【ThreeJS基础教程-材质纹理篇】3.2 初识基础网格材质MeshStandardMaterial

    初识标准网格材质 学习ThreeJS的捷径 了解材质的基本知识 材质继承关系 常用的通用材质属性 alphaTest的验证和应用 depthTest和depthWrite应用 渲染哪一面Side 常用 ...

最新文章

  1. Hadoop示例程序WordCount详解及实例
  2. Android面试闯关——Activity(持续更新中)
  3. 16年寒假随笔(2)
  4. 修改Ubuntu和XP双系统时的默认启动系统
  5. 代码优化 5 大原则,第一条就是别优化了!!!
  6. 苹果手机java_iphone手机,苹果手机如何登陆网易163邮箱
  7. linux 查看所有端口号_linux系统:ss命令
  8. ubuntu 安装 最新 PyMOL [源码安装][免费]
  9. 在CentOS6和CentOS7安装epel仓库-最简单的方法
  10. 一文学会 Prometheus:开源系统监视和警报工具包!
  11. r语言中trifit怎么用_用R语言做非参数
  12. java集成信鸽推送
  13. 如何用计算机算十进制,计算器怎么,计算机是怎么转换二进制为十进制的
  14. 敏捷开发和瀑布开发的区别
  15. Java面试题目和答案
  16. kill the one(pjone歌词摘录)
  17. nand2tetris 第二章 布尔运算
  18. 视频号如何打造爆款内容,封面、选题、文案三大维度丨国仁网络
  19. 【小程序】之net::ERR_NAME_NOT_RESOLVED的问题
  20. #GD32F307VET6# 等位替代海威华芯HHD1705001

热门文章

  1. Android中setPositiveButton和setNegativeButton
  2. [OCCT] Open CASCADE Technology的编译(包含示例的编译)
  3. emulator-5554 offline问题
  4. 怎么修改服务器玩家等级级上限,战神引擎服务端限制玩家最高等级教程
  5. JAVA打字游戏代码
  6. 【AAAI 2021】全部接受论文列表(六)
  7. VirtualDub
  8. 内核ppp编制和错误分析
  9. dsp gpip操作 data set 和clc
  10. oracle数据库的大字段,Oracle数据库大字段问题