什么是法线贴图(Normal Mapping)

AI解读 1年前 (2024) 硕雀
160 0

法线贴图Normal Mapping)概述


1. 什么是法线贴图

法线贴图是一种特殊的纹理,它在每个像素上存储了表面法线的方向信息(X、Y、Z 分量),而不是颜色本身。通过在渲染时读取这些法线向量,光照计算能够感知到细微的凹凸细节,从而在低多边形模型上呈现出类似高多边形模型的立体感。


2. 工作原理

  1. 法线向量的编码
    • 法线是指向表面外侧的单位向量。法线贴图把每个法线的 X、Y、Z 分量分别映射到 RGB 通道(R→X,G→Y,B→Z),并将 ‑1~1 的范围线性压缩到 0~1(或 0~255)之间。
    • 由于大多数法线在切线空间中指向正 Z 方向,法线贴图整体呈现偏蓝的颜色。
  2. 坐标空间
    • 切线空间(Tangent Space)‍:在每个三角形上构建局部坐标系(切线 T、位切线 B、法线 N),法线贴图在该空间中存储法线向量,使其能够随模型的变形保持正确。
    • 对象/世界空间:法线直接存储在模型或世界坐标系中,适用于不需要变形的静态模型,但灵活性较差。
  3. 渲染流程
    • 顶点着色器:计算并输出切线、位切线、法线的变换矩阵(TBN 矩阵),将它们从模型空间转换到观察空间。
    • 片段着色器:在每个像素处采样法线贴图,解码得到法线向量,再通过 TBN 矩阵把该向量转换回观察空间或世界空间,最后与光照方向做点乘得到光照强度。
    • 这样即使几何体本身仍是低面数,光照效果却表现出细腻的凹凸细节。

3. 法线贴图的生成

步骤 说明
高模烘焙 使用高多边形模型的真实法线信息作为基准,烘焙出每个表面点的法线向量。
法线映射 将烘焙得到的法线向量映射到 RGB 颜色通道,生成 2D 法线贴图。常用工具有 xNormal、Substance Painter、Quixel Mixer 等。
压缩与格式 为了在实时渲染中节约显存,法线贴图通常采用 BC5/BC7 等压缩纹理格式,同时保持向量精度。

4. 优势与局限

优势

  • 显著提升细节:在不增加几何体顶点数的前提下,实现高质量的凹凸感。
  • 性能友好:相比增加多边形,纹理采样的开销更低,适合实时渲染(游戏、VR 等)。
  • 兼容多光源:法线贴图与标准光照模型(Phong、Blinn‑Phong、PBR)均可直接结合。

局限

  • 只能模拟细微凹凸:大幅度的几何变形仍需真实的顶点位移(如位移贴图)。
  • 视角依赖:法线贴图只影响光照方向,无法产生真实的自阴影或轮廓变化。
  • 需要正确的切线空间:若模型的切线、位切线计算错误,法线贴图会出现扭曲或翻转现象。

5. 常见应用场景

  • 游戏角色与装备:皮肤、金属、布料等表面细节的增强。
  • 环境模型:岩石、墙面、地面等大面积材质的凹凸表现。
  • 特效与虚拟现实:在保持高帧率的同时提升沉浸感。
  • 电影与动画预览:快速迭代材质外观,后期再使用高模渲染。

6. 实践建议

  1. 选择合适的坐标空间:大多数实时渲染使用切线空间法线贴图,以兼容模型动画和变形。
  2. 保持法线贴图的蓝色基调:在编辑时避免过度压暗或压亮蓝通道,以免导致光照失真。
  3. 使用 TBN 矩阵进行空间转换:确保在顶点着色器中输出正确的切线、位切线、法线向量。
  4. 压缩纹理时检查质量:BC5/BC7 能在保持细节的同时降低显存占用,适合移动端。
  5. 调试技巧:在片段着色器中直接输出采样得到的法线颜色(RGB),可以快速定位贴图坐标或切线空间错误。

总结
法线贴图通过在 2D 纹理中编码法线向量,实现了在低多边形模型上呈现高细节光照效果的技术手段。它的核心是 RGB 编码的法线、切线空间的坐标变换以及在光照计算中的使用。凭借高效、灵活的特性,法线贴图已成为现代实时渲染(尤其是游戏和交互式 3D)不可或缺的材质技术。

来源:www.aiug.cn
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!