Unity3D客户端项目优化总结之网格优化与贴图优化 Optimize Mesh

Unity3D客户端项目优化总结之网格优化与贴图优化 Optimize Mesh

2020年4月15日 0 作者 老王

1 引言

网格优化一直是Unity开发里面一项非常重要的工作,在保证效果的同时保证降低网格的顶点数和三角面,从而提高程序运行效率(顶点和网格多了非常耗CPU)。同时,优化了网格之后,低面数的网格就不再需要那么精细的贴图了,所以需要同时优化贴图。

2 Optimize Mesh优化网格

这里谈谈在Unity中如何使用Optimize Mesh这个插件来优化网格。

2.1 导入Optimize Mesh

下载Optimize Mesh导入Unity。(因为插件需要支持.net 4,所以需要手动去Player Setting设置Configuration下的Api版本,将其选择为.NET 4.6,我用的Unity 2017.4.25f1 )
设置.NET 4.6

2.2 打开Scene视图的网格显示

然后咱们把模型的网格给展示出来。
展示网格

2.3 优化三步骤

咱们以插件自带的示例网格为例,示例网格路径如下。
网格
将citeu02_Model_sd拖入到场景中,然后在default上挂载Optimize Mesh脚本(Optimize Mesh一定要挂在到有Mesh Renderer组件的物体上,不然会报错,因为它是通过Mesh Filter组件去获取网格的)。

Optimize Mesh的基本使用
使用非常简单,3步走:
1.调节Quality (1表示不优化,0.5表示将网格顶点数优化一半)
2.点击Optimize Mesh!查看效果
3.如果觉得满意,点击Save Mesh!保存优化后的网格

下面是优化的效果,可以看到Optimize Mesh优化的效果还是很明显的。
效果对比

3 优化贴图

3.1 低模使用小贴图

我们看Optimize Mesh示例网格的贴图的大小是2048*2048的,而如果我们使用优化了的网格(比如说Quality = 0.1),其实压根不需要这么精细的贴图。所以对于面数低的模型,咱们需要把贴图的大小给降低。
原始贴图
咱们使用PS来缩小贴图。
步骤如下:

  1. 打开PS后,将贴图直接拖拽到PS软件界面内
    PS打开图片
  2. 菜单栏点击 图像➡图像大小,将图片缩小到1024,然后点击确定缩小图片到1024
  3. 然后点击菜单栏 文件➡存储为Web所用格式
    打开存储为Web所用格式
  4. 在弹出的存储为Web所用格式窗口,将格式修改为PNG-8,勾选透明度,然后点击存储
    存储为Web所用格式
    如下图,1024×1024的贴图大小减小了许多(2048×2048是5.3MB,现在是0.7MB)。
    1024*1024贴图设置
    贴图占用的内存的确是减少了不少,但画面效果怎么样呢?咱们来看看对比效果。
    贴图优化后效果对比
    可以看到,原始网格使用2048的贴图和使用1024的网格两者看起来都没有任何差别。如果使用了优化后的网格,咱们还可以把贴图给降低一些,比如512\256\128等等。但是一定要保证贴图长宽均为为4的倍数,这样Unity会对贴图进行压缩。

    3.2 贴图导入设置

    3.2.1 MipMap

    贴图导入设置勾选Generate Mip Maps后,贴图的尺寸会增大到1.3倍左右。项目对于占用内存要求很高或者那些距离相机距离不变的物体,这一项最好不要勾选。
    Generate Mip Maps

    3.2.2 选择合适的格式

    如图,不同平台选择合适的贴图格式。Windows平台一般选择DXT1或DXT5。移动端见这篇文章
    Windows平台
    嗯,今天就先到这里,下次我们谈谈Unity中LOD的使用方法。