1、为什么要学变换矩阵
1、将3d物体转换到2d平面
2、为各个空间的运算做准备
2、什么是MVP矩阵
MVP矩阵在整个过程中将模型的顶点坐标从local space经过一系列矩阵变换(local space->world space->view space->clip space->screen space)映射到Screen Space。
1、model transformation(模型空间->世界空间)
步骤:缩放->旋转->平移(顺序不可变!)以此得到模型变换矩阵;下图是绕y轴旋转。
模型空间下的顶点坐标乘以该矩阵就可以得到世界空间下的顶点坐标。
2、View transformation(世界空间->视觉空间)
视觉空间:以摄像机为中心的空间坐标系
步骤:平移整个观察空间,将摄像机原点、坐标轴与世界坐标原点、坐标轴重合。摄像机在世界空间中先旋转再平移,最后对z取反(因为unity是右手坐标系)。(可以理解为把摄像机移动到世界坐标原点,得到的矩阵的逆矩阵(正交矩阵的逆矩阵=矩阵的转置)就是View矩阵)
3、perspective projection(透视投影)
透视投影是由正交投影(orthographic projection)矩阵*挤压矩阵(persp->ortho)得到。
正交投影:先平移到世界坐标原点,再将边长缩放为长度2。
挤压矩阵:
如何挤压?预先知道:近平面上和远平面上Z不变,远平面中心点不变。
上图可得到点坐标与n、f(z)的关系。
通过齐次坐标变换可得到挤压矩阵的前两行和最后一行
利用近平面上和远平面上Z不变,远平面中心点不变求出第三排。
得出A=n+f,B=-nf
3、模型空间、世界空间、视野空间区别
模型空间:局部概念,可以理解为一个抽象物体的世界空间(例如太阳系中的地球上的坐标空间)。
世界空间:全局概念,可理解为此坐标系是最终坐标系(太阳系)。
视野空间:局部概念,可以理解为特殊的模型空间。是一个虚拟摄像机位于空间坐标原点。