三维数学基础4:坐标空间、空间转换
通过4x4矩阵可以把变换作用于点或方向矢量上。进一步延伸到刚体,只需把物体当做无数个点,把变换施加在这些点上,即能实现将变换运用在物体上。
在计算机图形学里,物体通常由三角形网格表示,每个三角形的3个顶点由点表示。在这种情况下,只需将变换矩阵施加在所有顶点上,就能把物体进行变换。
一个点(位置矢量)是必须相对于某组坐标轴的,属于某个坐标空间的。下面介绍游戏世界较常用的几个坐标空间。
模型空间(model space)
制作3D物体模型时用到的局部空间(local space),也称作为模型空间。
当模型移动或者旋转时,模型空间也会随着进行对应的变换。
世界空间(world space)
世界空间是一个固定的坐标空间。游戏世界中所有物体的位置、方向和缩放都会用此空间表示。世界空间把所有的单个物体联系在一起,形成一个内聚的虚拟世界。
观察空间(view space)
观察空间又称为摄像机空间(camera space),即摄像机的模型空间。
空间的层次结构
坐标系是相对的,在三维空间中定义一组轴,必须指明其位置、方向和缩放的数值世相对于另一组轴。因此,坐标空间会形成一个层次结构,每个坐标空间都是某个坐标空间的子。世界空间是坐标空间的根,其他坐标空间直接或者间接地相对于世界空间。
空间转换矩阵
把点或者方向矢量从子坐标系C变换至其父坐标系P的矩阵M:
M ( C , P ) = [ I x I y I z 0 J x J y J z 0 K x K y K z 0 T x T y T z 1 ] M(C,P) = \begin{bmatrix} Ix & Iy & Iz & 0\\ Jx & Jy & Jz & 0\\ Kx & Ky & Kz & 0\\ Tx & Ty & Tz & 1 \end{bmatrix} M(C,P)=