版本:2022.3
语言: 英语
导入LOD网格
加载纹理和网格数据

压缩网格数据

您可以在Unity中压缩网格

  • 边缘压缩(Vertex Compression)是一个影响项目中每个网格的设置。它允许您在网格中使用低精度数据格式。这减少了内存中网格数据的大小,略微减少了文件大小,并可能提高GPU性能。潜在的缺点是精度损失。
  • 网格压缩(Mesh Compression)是一个影响单个网格的设置。它在磁盘上压缩网格数据,从而减小文件大小。潜在的缺点是加载时间增加,加载时临时内存使用量增加,以及可能出现压缩

您可以在同一项目中使用两种压缩方法,但不能在同一个网格上使用。如果您对一个网格应用了网格压缩,Unity则不会对该网格应用顶点压缩。

注意:Unity的默认顶点压缩和网格压缩设置对大多数项目来说都足够好。只有在有问题时,您才应该更改这些设置,并评估结果以确保更改有所帮助。

顶点压缩

顶点压缩设置允许您为项目中所有网格使用低精度数据格式。您可以通过配置特定数据通道的数据类型来实现。

您可以将给定通道的数据类型从FP32(32位浮点数,浮动点32)更改为FP16( floating point 16,也称为半精度浮点)。FP16格式存储的小数点后的位数比FP32少,这意味着它占用更少的空间,但提供的精度略低。

从FP32转换为FP16的数据在内存中占用的空间更少,在磁盘上也略少。在GPU上,数据使用更少的内存带宽,这可能略微提高GPU性能。

顶点压缩技术通过根据您选择压缩的顶点属性的数目来调整压缩比例。当您压缩法线、切线、颜色和三组UV坐标时,压缩比通常在1. 45x左右。

顶点压缩的限制

要使用顶点压缩,网格必须满足以下要求

  • 网格必须将其“读取/写入启用”属性禁用。您可以在模型设置窗口的模型选项卡中更改此属性。
  • 网格不能是蒙皮网格。
  • 目标平台必须支持FP16值。
  • 包含网格的模型必须将其“网格压缩”值设置为“关闭”。
  • 该网格不适用于 动态批处理一个自动的Unity进程,尝试渲染多个网格,就像它是一个单独的网格,以优化图形性能。该技术将在CPU上转换所有GameObject顶点并将许多类似顶点分组在一起。 更多信息
    术语表中查看
    或者动态批处理在 玩家设置这些设置允许用户为Unity构建的最终游戏设置各种玩家特定的选项。 更多信息
    术语表中查看
    中已关闭。

如果网格不符合这些要求中的任何一个,那么Unity不会对那个网格应用顶点压缩,并且网格上的所有数据通道都使用FP32精度数字。

配置顶点压缩

要更改顶点压缩设置:1. 打开玩家设置(菜单:编辑 > 项目设置 > 玩家)。1. 打开其他设置子菜单并导航到优化标题。1. 选择顶点压缩下拉菜单,并选择任何通道以启用或禁用该通道的压缩。您还可以选择来禁用所有通道的压缩,或选择全部来启用所有通道的压缩。

默认情况下,顶点压缩设置为混合,当下拉菜单中激活多个选择时,Unity会显示。默认情况下,Unity使用顶点压缩以下通道:

  • 法线
  • 切线
  • 纹理坐标0
  • 纹理坐标2
  • 纹理坐标3

默认情况下,Unity压缩这些通道,因为在大多数情况下,这种设置组合在减少内存的同时,对网格外观的影响较小。默认情况下,Unity不压缩其他设置,位置和纹理坐标1,因为这些更有可能影响网格外观,并且不提供显著的内存使用减少。如果您打算为位置和纹理坐标1通道启用顶点压缩,您应该测试设置以确保它们不会在您的网格中引起伪影。

网格压缩

您可以使用网格压缩设置压缩磁盘上给定模型资产的数据。网格压缩算法比顶点压缩技术更激进,因此压缩比率更高,文件大小更小。然而,它也有一些缺点。

应用此设置时,Unity使用算法将每个压缩通道的显式值替换为最大值和最小值之间的范围,其中固定数量的位数表示该值在该范围内的位置。这减少了磁盘上的网格数据大小。当Unity将网格加载到内存中时,它会解压缩数据,这意味着它将此范围转换回原始值。之后,性能不受影响。

该技术在需要尽可能减少最终构建大小或网格所在的AssetBundle的大小时很有用,并且如果运行时解压缩的性能降低是可以接受的。

网格压缩的限制

在运行时,网格解压缩使用额外的CPU资源;这意味着加载网格数据需要更长的时间。Unity在解压缩网格时还会使用更多的临时内存。

此外,相对较高的压缩比率意味着在实际解压缩时可能会出现不受欢迎的伪影。为了避免这些伪影,您应该测试您想要压缩的每个网格选项并检查它是否正确显示。

配置网格压缩

The Mesh Compression setting in the Model Import settings window
模型导入设置窗口中的网格压缩设置

要使用网格压缩设置

  1. 在您项目的资产文件夹中选择一个模型以打开导入设置窗口的模型标签页。
  2. 导航到网格标题并找到网格压缩设置。
  3. 选择下拉菜单以选择该模型中所有网格的级别。您还可以使用ModelImporterMeshCompression枚举在代码中更改此设置。

可用值有高、中、低或关闭。下表显示了这些设置的典型压缩比率

顶点 法线 切线 UV 颜色
关闭 1.0 1.0 1.0 1.0 1.0
1.6 4.6 4.4 2.0 1.0
2.0 5.6 5.3 3.2 1.3
3.2 7.4 6.7 4.0 2.0

网格压缩技术的压缩比率

注:上表中“颜色”列表示使用UNorm8格式的网格的比率。对于使用FP32格式进行顶点颜色的网格,低设置的比率为4.0,中设置的比率为5.3,高设置的比率为8.0。

导入LOD网格
加载纹理和网格数据