计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(二)法线贴图

1. 法线贴图(Normal Mapping)

法线贴图是一种在3D图形渲染中广泛使用的表面细节增强技术。它通过存储每个像素的法线信息来模拟表面的细微凹凸细节,而无需增加实际的几何复杂度。

1.1. 工作原理

  1. 纹理存储

    • 使用RGB通道存储法线向量的XYZ分量
    • 通常呈现出偏蓝色的外观(因为默认法线指向Z轴)
    • 每个像素都包含表面法线方向信息
  2. 切线空间

    • 法线贴图通常在切线空间(TBN空间)中定义
    • 包含切线(Tangent)、副切线(Bitangent)和法线(Normal)
    • 便于将法线信息应用到任意曲面

1.2. 优势

  • 高效率

    • 不增加模型的多边形数量
    • 能够呈现出丰富的表面细节
    • 性能开销相对较小
  • 灵活性

    • 可以与其他贴图技术结合使用
    • 适用于静态和动态物体
    • 便于美术人员制作和修改

1.3. 应用场景

  • 游戏角色的皮肤细节
  • 建筑物表面的砖块纹理
  • 布料的褶皱效果
  • 地形的细节增强

1.4. TBN空间

TBN空间(Tangent Space)是法线贴图中的一个关键概念,它由三个相互垂直的向量构成:切线(Tangent)、副切线(Bitangent)和法线(Normal)。

  1. T - 切线(Tangent)

    • 沿着纹理坐标U方向的向量
    • 通常与物体表面相切
    • 在顶点着色器中计算
  2. B - 副切线(Bitangent)

    • 沿着纹理坐标V方向的向量
    • 与切线和法线都垂直
    • 可以通过叉积计算:B = N × T
  3. N - 法线(Normal)

    • 垂直于物体表面的向量
    • 决定了表面的朝向
    • 由模型数据提供

1.5. TBN矩阵的作用

// TBN矩阵的构建
mat3 TBN = mat3(T, B, N);

主要用途:

  • 将法线贴图中的法线向量从切线空间转换到世界空间
  • 保证法线方向在任意曲面上都正确
  • 使法线贴图可以在不同的表面上重复使用

1.6. 优势

  • 空间一致性:保证法线方向在任何表面都能正确表现
  • 可重用性:同一个法线贴图可以应用到不同的模型上
  • 精确性:提供了准确的法线方向计算

1.7. 实现流程

可以在顶点着色器中计算TBN矩阵,并在片段着色器中应用它,也

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值