版本:Unity 6 (6000.0)
语言:英语
压缩网格数据以进行优化
配置顶点压缩

网格数据压缩类型

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

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

要访问网格压缩设置,请打开 模型导入设置窗口,导航到 **模型** 选项卡的 **网格** 部分,并使用 **网格压缩** 下拉菜单。

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

注意:Unity 的顶点压缩和网格压缩默认设置适合大多数项目。只有在出现问题时才应更改这些设置,并评估结果以确保更改是有帮助的。

顶点压缩

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

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

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

顶点压缩技术按一个比率压缩网格,该比率取决于您选择压缩的顶点属性数量。当您压缩法线、切线、颜色和三组 UV 坐标时,压缩比率通常约为 1.45 倍。

网格压缩

您可以使用网格压缩设置压缩给定模型资产的磁盘上的网格数据。网格压缩算法比顶点压缩技术更激进,这会导致更高的压缩比率,从而导致更小的文件大小。但是,它也存在更多缺点。

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

如果您需要尽可能减小最终构建大小或网格所在的 AssetBundle 的大小,并且可以接受运行时解压缩带来的性能下降,那么此技术非常有用。

网格压缩的限制

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

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

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