Alpha 通道和法线贴图最佳实践

Tutorial

intermediate

+0XP

15 mins

(12)

Unity Technologies

Alpha 通道和法线贴图最佳实践

在本教程中,我们将介绍使用纹理 Alpha 通道和法线贴图的最佳实践。

1. Alpha 通道最佳实践

我们不一定需要向纹理中添加 Alpha 通道。添加透明度通常会使纹理文件变大,因为这会将纹理转换为 32 位格式,从而增加内存使用量。

可以把Alpha 通道保存在已经在别的两个通道中存储了粗糙或金属信息的纹理中。在 Unity 中,这些类型的纹理有时会使用三个通道中的两个 - 粗糙度 (G) 和金属性 (B) - (R) 通道供你自由支配。

使用闲置通道存储 Alpha 遮罩可将漫射纹理保持为 16 位,从而有效地将文件大小减半。环境光遮挡贴图通常也可以烘焙到漫射贴图中。

下图显示了如何将透明度贴图存储在纹理的红色通道中,而不是将其存储在自己的 Alpha 通道中,从而有效地利用该备用红色通道节省内存:

2. 法线贴图最佳实践

使用法线贴图是让 3D 对象看似拥有更多细节的好方法。最好将法线贴图用于添加本来需要使用大量三角形进行建模的小细节,例如皱纹或螺栓。是否使用法线贴图取决于游戏的类型及其美术设计。

使用法线贴图确实会带来一点成本。注意:

  • 法线贴图是一个额外的纹理,这意味着更多的纹理获取,因而会导致使用更多的内存。
  • 在针对低端设备制作游戏时,应尽量少用法线贴图。

尽管存在上述成本,但如果使用法线贴图能够大幅减少场景中的三角形数量,还是可以提高性能的。下图显示了如何使用法线贴图和纹理实现较小的细节:

3. 法线贴图烘焙最佳实践

不管是烘焙什么表面,使用笼子都是获得高质量法线贴图的好方法。

网格笼子基本上是低多边形数模型的较大、外推版本。笼子通常用于限制法线贴图烘焙过程中使用的射线投射距离。此外,笼子还可以解决法线贴图上的分割法线接缝问题,如下所示:

大多数法线贴图软件都能自动创建笼子。但是,你也可以通过复制低多边形数模型、然后稍微增大其缩放来制作笼子。

笼子允许程序改变烘焙时用于计算法线的方向。这样产生的分割法线和硬边效果要好得多,如下图所示:

如果烘焙软件支持,请匹配网格名称,以减轻创建错误的法线贴图投影的问题。当对象彼此距离太近时,例如下图中机器人的零件,可能会意外地将法线贴图投影到错误的面上。匹配网格名称可确保仅在具有匹配名称的表面上进行烘焙。

该解决方案有时可能需要单独烘焙环境光遮挡。这意味着你应该在硬边上分割 UV - 因为连续的 UV 会导致可见的接缝。一般规则是保持角度小于 90 度,或将其设置为不同的平滑组。在三角形上重叠不同平滑组的 UV 接缝。

下图显示了断开的 UV 在硬边上的样子:

4. 总结

如果使用得当,法线贴图和 Alpha 通道纹理可以成为优化移动应用程序的强大工具。在下一个教程中,我们将深入探讨 Unity 中的纹理设置,介绍适用于不同场景的最佳实践。

Complete this Tutorial