比如下面的这张图,左边的是一张表示环境光的纹理,这个纹理表示屋子内部四面八方都是啥样,右边是一个茶壶, 将纹理映射到这个茶壶上,就能茶壶上渲染出周围的环境
左边依然是环境贴图,就像地球仪把地球表面展开成右边的平面。随着球的移动,环境贴图的内容也会发生改变,所以,球形环境贴图只能表示一部分环境, 比茶壶的环境贴图表达的信息要少
但是,由于球形贴图展开后,边缘部分会产生一定程度的畸变,所以就产生了立方盒纹理贴图(cube map),cube map就是将球形贴图分成六块,然后每一块分别投影到一个正方体上
法线贴图就是一张存储每个片元法线向量的纹理。用以对物体表面的法线添加扰动,从而改变物体表面的明暗
法线贴图的存储方法有两种:一种是直接存储三角形面的法线向量,这种方法使用法线向量时可以直接使用,但是如果模型发生变化,该法线向量就不正确了。所以就有了第二种方法:通过切线空间存储法线向量切线空间由副切线B所在的轴和切线T所在的轴以及法线向量N所在的轴共同构成,如果想计算法线N,那么就需要先计算出B和T
在纹理坐标系中取三个点P1,P2,P3,三个点不一定在轴上,可得向量E1和E2
上述矩阵中的uv均是已知,所以,可以计算出T和B的向量,进行二者的叉积就是法线向量
凸凹贴图就是通过贴图对物体表面的高度进行了一个虚拟,从而得到了一个新的法线,通过该发现计算光照强度,从而改变物体表面的明暗
首先,以p点为坐标系原点,其对应的法线向量为(0,1),当虚拟了一个高度后,该点的导数dp如下图中的第二行,因此,下图中蓝色的切线向量是(1, dp),将其旋转90度之后,就是虚拟店的法线向量
上述方式计算出来的法线向量是在局部坐标系下,因为是使用切线空间存储法线,所以最终的法线向量是n左乘二中[T, B, N]所组成的矩阵,将其转化到切线空间下
位移贴图与凸凹贴图的区别就在于:凸凹贴图并没有真正改变物体表面的高度,只是对物体表面的高度进行了一个虚拟,从而计算出新的法线。
而位移贴图是直接将物体表面进行修改得到新的法线,如下图所示,阴影可以看出两种贴图方式的差别
参考:
GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili
欢迎大家评论交流,作者水平有限,如有错误,欢迎指出