
UV 展开、视觉效果和纹理通道打包
Tutorial
intermediate
+0XP
15 mins
(10)
Unity Technologies

在本教程中,我们将讨论通过有效使用模型的 UV 和使用纹理通道打包来在 3D 移动应用程序中显示细节的更多方法。
Languages available:
1. UV 展开的最佳实践
UV 贴图可将 2D 纹理投影到 3D 模型的表面上。UV 展开是创建 UV 贴图的过程。最佳实践是让 UV 岛(展开后纹理的各个单元)尽可能保持笔直。
让 UV 岛尽可能保持笔直具有以下好处:
- 更容易打包 UV 岛,并可减少空间浪费。
- 笔直的 UV 有助于避免纹理出现梯阶梯效果。
- 在移动平台上,纹理空间有限。因此,纹理大小通常应该比在游戏主机或 PC 上的要小。良好的 UV 打包可确保从纹理中获得最高的分辨率。
- 可以考虑让稍微变形的 UV 尽可能保持笔直,以获得更好的纹理质量。
2. UV 接缝
将 UV 接缝放置在可遮挡住它们的地方。可见的纹理接缝在模型上可能会显得非常难看。因此,请在有清晰边缘的地方分割 UV 岛,并在它们之间保留较小的间隙。这也有助于通过烘焙过程创建更好的法线贴图。
下图显示了一个使用 UV 展开来最大化纹理空间的示例:
3. 优化视觉效果
在创建纹理时,所包含的细节应与该细节的视觉效果相称。确保只创建可以看到的细节。
由于手机屏幕较小,很难看到太过精细的细节。创建纹理时要考虑到这一点。例如,没必要为房间角落里几乎看不到的椅子创建包含很多细节的 4K 纹理。
在下面的屏幕截图中,左侧的 256x256 像素的小纹理具有较低的细节级别,可用在示例场景中的士兵角色身上。右侧的大图显示了整个场景,可以看到,较低的纹理细节级别已经足够了:
在某些情况下,需要夸大和突出显示边缘及着色,以提高形状的可见性。移动平台通常使用较小的纹理,可能很难在这个小空间中捕获所有需要的细节。
对于移动应用程序,请使用较少的纹理,并将所有额外的细节烘焙到一个纹理中。这很重要,因为:
- 手机屏幕很小,最好将某些细节烘焙到漫射纹理上,以确保这些细节可见。
- 可以通过烘焙的方式把环境光遮蔽、较小的镜面高光等元素添加到漫射纹理中。
通过这种方法,你不必过于依赖计算成本高昂的着色器和 Unity 功能就能获得镜面高光和环境光遮蔽。
下面的屏幕截图显示了烘焙到纹理中的细节:
尽可能使用可以在着色器中进行染色的灰度纹理。这样做可以节省纹理内存,但代价是需要创建自定义着色器来执行染色。
某些对象使用这种方法会很难看,因此要有选择性地使用这项技术。将其应用于具有一致颜色的对象会更容易。你还可以使用 RGB 遮罩,然后应用基于遮罩颜色范围的纹理。
下图显示了一个应用于有色柱子的灰度纹理:
4. 纹理通道打包
使用纹理通道可将多个纹理打包成一个纹理。
纹理通道打包可将三个贴图合并到一个纹理中,有助于节省纹理内存。这意味着更少的纹理采样器。
纹理打包通常用于将粗糙度、平滑度和/或金属性打包到一个纹理中。它也可以应用于任何纹理遮罩。
使用绿色通道存储最重要的遮罩。我们的眼睛对绿色较敏感而对蓝色不太敏感,因此绿色通道通常具有更多的位。
下图显示了一个纹理示例,该纹理将环境光遮蔽、粗糙度/平滑度和金属性数据打包在每个可用的颜色通道中,所有这些数据都包含在一个文件中:
5. 总结
确定在什么情况下可以使用纹理打包、UV 展开和选择性纹理细节来优化应用程序至关重要。可从这些技术受益的情况并不总是显而易见,但确实可以提高移动应用程序的性能。在下一个教程中,我们将介绍使用 Alpha 通道和法线贴图进行优化的最佳实践。