1.概念
在游戏开发中,我们经常需要明确几个坐标空间:
(1)切线空间:通过法线贴图中两个像素之间的变化值求出的斜率得出的方向向量,即切线、副切线为x、y轴,法线为z 轴的坐标空间。
(2)模型空间:以模型中心点为原点,模型右边的方向向量为x轴,模型前面的方向向量为z轴,模型上面的方向向量为y 轴的坐标空间。
(3)世界空间:最大的父坐标空间,通常将所有其他坐标系转化成同一个世界空间或将世界空间坐标作为中间空间进行 转换,从而方便进行运算
(4)观察空间:即以相机自身出发的一个空间坐标系,这决定了我们所使用的的视角
(5)裁剪空间:方便对渲染图元进行裁剪,完全位于这块空间内部的图元将会被保留,完全位于这块空间外部的图元将 会被剔除,而与这块空间边界相交的图元将会被裁剪。
(6)屏幕空间:进行裁剪完之后,将视椎体投影到的空间,即屏幕空间
2.空间变换矩阵原理
当给定一个坐标空间以及其中一点(a,b,c)时,我们需要通过将坐标原点沿x轴移动a个单位,往y轴移动b个单位,往z轴移动c个单位。
同理,我们已知子坐标空间C的三个坐标轴在父空间下表示为、、,以及其原点坐标,当给定一个子坐标空间中一点=(a,b,c),则在世界空间中的坐标为:
即:
上式其实可以看做一个位移矩阵乘于后面的矩阵
即: