为什么法线贴图应用如此广泛?

法线贴图(Normal Mapping)是计算机图形学中一种常用的技术,用于增强三维模型的表面细节和真实感。它通过在每个像素上存储法线信息的纹理贴图,使表面看起来更为复杂,而实际上模型的几何结构并没有改变。

为什么法线贴图应用如此广泛?
在线工具推荐: GLTF/GLB材质纹理编辑器

Triple-A游戏资产,如游戏角色、武器和环境,在很大程度上依赖于法线贴图才能看起来好看。但是为什么法线映射的使用如此广泛?

平衡质量和性能

游戏应以每秒 60+ 帧的速度实时运行。这意味着通常用于 3D 打印或动画的高多边形模型在游戏中无法正常工作,因为它们会对游戏的响应能力造成巨大影响。

低多边形模型为了确保游戏的流畅性能,需要这样做。

但与此同时,游戏玩家期望获得具有高度细节的精美视觉效果。游戏开发人员需要能够在一个场景中使用多个模型才能实现这一目标,更不用说昂贵的灯光、物理和效果了。

那么,我们如何在流畅的性能和逼真的视觉效果之间做出妥协呢?

法线贴图是我们在模型质量和游戏性能之间挣扎的最佳折衷方案。秘诀在于,它们允许我们在使用更少的几何图形的同时获得更明显的细节。

伪造几何体材质纹理

它是如何工作的?法线贴图和置换贴图是特殊类型的图像纹理,它们会影响整个表面上光线的计算方式。它们通过告诉光线从表面的模拟特征上反射来产生深度错觉,即使这些特征实际上并不存在。

diagram_01

从法线贴图表面反射的光线会根据纹理法线(而不是表面法线)进行反射。

这使我们能够实现高水平的细节,而不会给游戏引擎带来复杂的几何体负担。听起来好得令人难以置信?请记住,此技术存在一些限制。

法线贴图与高度贴图

虽然法线贴图和高度贴图都为我们的低多边形模型提供了更多细节的外观,但它们的用途截然不同。

最明显的区别是高度贴图仅是灰度的,因为它们只描绘了高度差异。黑色表示“向下”,白色表示“向上”,0.5 灰色表示高度没有变化。

您可能已经熟悉了几种不同类型的高度图。

凹凸贴图是向低多边形对象添加细节的老式方法。它们的使用方式与法线贴图相同,只是它们只包含高度信息,而不包含角度信息。

Bump Maps

置换贴图有时用于更改网格中实际顶点的位置。这种位移不会增加任何额外的细节。相反,它用于生成其他复杂的对象。此类位移的一个例子是地形通常是如何从纹理生成的。

置换贴图的另一个用途是视差贴图(也称为虚拟置换贴图),这是一种更高级的技术,游戏引擎尝试将纹理坐标从摄像机偏移。这在计算上非常昂贵,但它可以带来好看的结果。

Displacement Maps

另一方面,法线贴图不包含任何高度信息。相反,它们包含角度信息。它们是彩色的,因为 RGB 值告诉渲染器斜坡朝哪个方向以及该斜率有多陡。

Normal Map

这样做最重要的优点是,我们可以使用角度信息人为地将相邻面的边缘相互弯曲,以产生坡口效果。

柔化锋利的边缘听起来很简单,但它在视觉质量上带来了令人惊讶的巨大飞跃。这是因为在现实生活中,没有什么是完全锋利的边缘(除了可能石墨烯).另一方面,在 CG 中,由于每条线的厚度为零,因此一切都具有无限锋利的边缘。

在游戏中,你不太可能注意到边缘的实际厚度,但你可以注意到这样一个事实,即至少应该有一些光线从这些边缘上掠过。

bevel and no bevel

除了看起来更自然之外,这种边缘闪烁的光线还极大地有助于显示物体的形状,尤其是从远处看时。由于许多游戏对象在屏幕上显示得非常小,因此游戏艺术家通常会夸大其斜角,以帮助玩家清楚地看到所有内容或帮助强调重要对象。

3 种法线贴图

有三种类型的法线贴图都达到相同的效果,但它们的计算方式略有不同。

TanObWorld
切线空间

顾名思义,切线空间法线基于每个面的切线方向。这些地图始终由三种颜色的组合组成。

  • 蓝色表示在法线方向
  • 红色表示左右有坡度的内容切线方向
  • 绿色表示在切线方向上向上或向下倾斜的内容。OpenGL 法线贴图的绿色向上倾斜,而 DirectX 贴图的绿色向下倾斜。
对象空间

对象空间法线贴图基于整个对象,而不是单独的每个面。这对于显卡来说计算速度稍快,但它确实有一些缺点。

由于右侧的颜色与左侧不同,因此无法镜像UV,这意味着在对称模型上会浪费大量纹理空间。这也意味着,如果对象扭动,阴影将显示为翻转。

世界空间

世界空间法线贴图是最不灵活的。由于它们基于全局坐标,因此对象可能根本不旋转以保持正确的阴影。这种类型的法线贴图仅用于大型、静态和不对称对象(如环境),或在 Substance Painter 等程序中临时用作计算风化效果的手段。

结束语

您将看到和使用的最常见的法线贴图类型是切线空间,因为它是最灵活的,但了解其他类型也很有用,以便您可以在需要时使用它们。

Intro to Normal Map Modeling for Games
NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号