Version: 6000.3
语言: 中文
压缩网格数据以进行优化
配置顶点压缩

网格数据压缩的类型

Unity 提供了两种压缩网格的方法。它们的工作方式不同,并影响性能的不同方面:

  • 顶点压缩(Vertex Compression) 是一个影响每个meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
    请参阅术语表
    在您的项目中。它允许您在网格中使用较低精度的数据格式。这会减小内存中网格数据的大小,略微减小文件大小,并可能提高 GPU 性能。潜在的缺点是精度的损失。
  • 网格体压缩(Mesh Compression) 是影响单个网格体的设置。它压缩磁盘上的网格数据,从而减小文件大小。潜在的缺点是加载时间增加、加载时临时内存使用量增加以及可能压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩动画压缩音频压缩构建压缩
    请参阅术语表
    工件。

要访问网格体压缩设置,请打开 模型导入(Model Import) 设置窗口,导航到 模型(Model) 选项卡的 网格体(Meshes) 分段,然后使用 网格体压缩(Mesh Compression) 下拉菜单。

你可以在同一项目中使用这两种压缩方法,但不能在同一网格体上使用。如果将网格压缩应用于网格,则 Unity 不会将顶点压缩应用于该网格。

注意:Unity 的 顶点压缩(Vertex Compression) 和 网格体压缩(Mesh Compression) 的默认设置适用于大多数项目。仅当您遇到问题时才应更改这些设置,并评估结果以确保更改有所帮助。

顶点压缩(Vertex Compression)

顶点压缩(Vertex Compression) 设置允许你对项目中的所有网格体使用较低精度的数据格式。为此,您可以为特定数据通道配置数据类型。

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

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

顶点压缩技术按比例压缩网格体,该比率因选择压缩的顶点属性数量而异。压缩法线、切线、颜色和三组UV坐标时,压缩比通常约为1.45倍。

网格体压缩(Mesh Compression)

你可以使用 网格体压缩(Mesh Compression) 设置来压缩磁盘上给定模型资产的网格体数据。网格体压缩算法比顶点压缩技术更激进,这会导致更高的压缩比,因此文件大小更小。然而,它也有更多的缺点。

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

如果你需要尽可能减小最终构建大小或网格体所在的资产包的大小,并且运行时解压缩导致的性能下降是可以接受的,那么这种技术会很有用。

网格压缩的局限性

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

此外,相对较高的压缩率意味着当 Unity 解压缩网格时可能会出现不需要的伪影。为避免这些伪影,您应该测试要压缩的网格体的每个选项,并检查其显示是否正确。

压缩网格数据以进行优化
配置顶点压缩