三角形和多边形的使用量

Tutorial

intermediate

+0XP

20 mins

(31)

Unity Technologies

三角形和多边形的使用量

在本教程中,你将了解在 3D 模型中使用三角形时如何以最佳方式优化性能并保持视觉保真度。

1. 概述

要优化应用程序的性能,就必须了解在任何给定时间屏幕上显示的三角形数量。

使用最少的三角形以在 3D 模型的预期质量与提供一致性能之间取得适度平衡至关重要。

下图显示了两个 3D 对象的对比。一个对象使用了 584 个三角形,另一个对象使用了 704 个三角形。在 Shaded 模式下,两个对象看起来是一样的。这说明可以移除模型中不影响轮廓的任何边缘。

在 Unity 中,网格索引缓冲区的格式决定了 3D 对象可以使用的最大顶点数:

  • 一个 16 位的索引缓冲区最多支持 65,535 个顶点。
  • 一个 32 位的索引缓冲区最多支持 40 亿个顶点。

使用较少的三角形时,需要 GPU 处理的顶点数也较少。在为移动平台制作内容时,这一点尤为重要,因为处理顶点的计算成本很高。减少要处理的顶点数量可提高整体性能,让你的应用程序能够在更多的设备(而不仅仅是拥有最强大 GPU 的设备)上运行。

2. 在不同的硬件/屏幕大小上进行测试

请在尽可能多的目标设备上查看或测试你的应用程序,这一点非常重要。只在计算机屏幕上测试应用程序无法为你提供进行优化所需的信息。

请记住,移动设备的屏幕小于普通计算机的显示屏。因此,在移动设备上可能看不到使用大量三角形的细节。最佳做法是在离摄像机较近的 3D 对象上使用较多的三角形,在处于背景中的 3D 对象上使用较少的三角形。

在下图中,前景中使用了 3D 模型,而将质量较低的 3D 模型烘焙到了 2D 背景中:

虽然没有明确规定屏幕上最多可以显示多少个三角形,但同时显示在屏幕上的 3D 对象越多,每个对象可以使用的三角形就越少。如果要在屏幕上显示的 3D 对象较少,则可以为每个对象使用更多的三角形。

此外,目标设备也很重要。与较旧的移动设备相比,较新的硬件通常能够处理更复杂的几何体。

3. 重要区域的细节

在移动平台上,多边形和顶点的计算成本都很高。只有将多边形放置在确实有助于提高应用程序视觉质量的区域才不会造成处理预算的浪费。

大多数移动设备的屏幕尺寸较小,再加上 3D 对象在应用程序中的位置的原因,可能无法看到 3D 对象上的许多小三角形细节。这意味着,你应该专注于构成对象轮廓的较大形状和部分,而不是可能看不见的小细节。

下图用红色突出显示了对象的轮廓,以显示不同形状对它的影响。

在屏幕上不常显示的区域中使用较少的三角形。例如,汽车底盘或衣柜背面。

避免使用高密度三角形网格对小细节进行建模。应该使用纹理和法线贴图来实现精细的细节。

注意:法线贴图是存储每个像素表面方向的纹理贴图。)

下面的图像显示了相同的网格在使用和不使用法线贴图时的样子:

考虑删除在画面中根本看不到的对象背面或底部。但是,需要谨慎执行该操作,因为这可能会限制场景的重用性。例如,如果删除了桌子网格的底部,就意味着不能再上下颠倒该模型或作为其他用途。

4. 避免使用微三角形

微三角形指的是对物体或场景的最终外观没有多大用处的小三角形。

当将具有大量多边形的 3D 对象移离摄像机时,会出现微三角形问题。微三角形通常是指大小在 1-10 个像素之间的三角形。

微三角形非常小、看不见,但处理起来计算成本很高。

下图显示了一个 3D 对象靠近摄像机时使用的三角形数量(右)和其远离摄像机时使用的三角形数量(左)。

在下图中,突出显示区域中的大部分三角形由于太小而无法在移动设备上看到。因此,它们对最终外观没有多大作用:

下图突出显示了远看时柱子的斜面。当近距离观看时,斜面是没有问题的:

可以采取以下几个步骤来缓解该问题:

  • 对于与摄像机的距离会发生改变的对象,可以使用细节级别 (LOD) - 将在下一个教程中介绍。当对象距离较远时,使用正确的 LOD 可以简化该对象。
  • 在背景对象上使用较少的三角形。
  • 避免使用多边形创建更精细的细节。而应结合使用纹理和法线贴图。
  • 避免在具有细长三角形的对象上使用有光泽的材质,这会导致闪烁。
  • 合并所有太小而无法在屏幕上看到或对最终图像没有太大价值的顶点或三角形。
  • 确保三角形的内部区域大于其边缘。从技术上讲,最好让三角形接近等边。
  • 尽量让三角形的面积保持在 10 个像素以上。
  • 尽可能移除对象上的所有细长三角形。

尽量少用微三角形有多方面的原因。

  • GPU 必须处理所有的三角形和顶点,即使是对最终场景没有任何价值的三角形和顶点,这会浪费不必要的 GPU 算力。
  • 当必须将更多数据发送到 GPU 进行处理时,内存带宽会受到负面影响。
  • 所需的处理量会影响移动设备的电池寿命。因此,更少的数据意味着更长的电池寿命。

5. 总结

通过尽量减少场景中的三角形数量以将注意力集中在重要的区域,可以全面提高应用程序的性能,使其可在低端移动设备上运行。在下一个教程中,我们将讨论细节级别 (LOD) 及其如何帮助进一步优化几何体。

Complete this Tutorial