法线贴图那些事儿

在学习法线贴图的过程中,有几个比较难以理解的概念,这里记录一下。特别说一下,本文的法线贴图是切线空间下的法线贴图。

空间变换

空间变换示意图

如上图所示,简单表达了在使用法线贴图的过程中,涉及到的几个空间变换:

切线空间:从法线贴图中采样得到的法线,在切线空间中;

对象空间:物体的本地坐标空间,顶点的相关信息,在对象空间;

世界空间:光源位置、观察者位置等,在世界空间中。

在空间变换的过程中,主要涉及到了两个变换矩阵:

\(TBN\)矩阵:从切线空间变换到对象空间;

\(Model\)矩阵:从对象空间变换到世界空间。

对于上述概念,大部分都是比较熟悉的,只有法线贴图、切线空间和\(TBN\)矩阵比较陌生。下面,将分别介绍一下。

法线贴图

在3D计算机图形学中,法线贴图是一种用于伪造凹凸光照的技术,是凹凸贴图的一种实现。它用于添加细节,而不使用更多的多边形。这种技术的一个常见用途是,通过从高精度多边形或高度图生成法线贴图,来极大地增强低精度多边形的外观和细节。下图来自Paolo Cignoni,图中对比了两种方式:

法线可以使低精度模型实现高精度模型的效果

法线贴图通常存储为常规RGB图像,其中RGB分量分别对应于表面法线的X,Y和Z坐标。

法线的每个分量的值的范围是\([-1,1]\),而RGB分量的值的范围是\([0,1]\)。所以,在将法线存储为RGB图像时,需要对每个分量做一个映射:

\[vec3 \quad rgb\_normal = normal * 0.5 + 0.5 \]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdpdx.html