五个坐标系统:
局部空间(物体空间)
世界空间
观察空间(视觉空间)
裁剪空间
屏幕空间
三个变换矩阵:
模型(model),观察(view),投影(projection)
分别对应局部空间,世界空间,观察空间
局部空间指的是物体的起始坐标
世界空间指的是相对于世界的全局坐标
观察空间指的是从摄像机的位置进行观察的坐标
裁剪空间指的是从自己的坐标集变换到(-1,1)范围,最后进行透视除法,将x,y,z三个坐标同时除以w齐次分量,从四维空间变换到三维标准化空间
正射投影指的是规定一个裁剪空间,在空间外的所有坐标进行裁剪
glm::ortho(float,float,float,float,float,float);
这里的参数指的是左右上下近远的距离
透视投影指的是使用透视投影矩阵映射到裁剪空间内,使得z越大w越大,即创建一个定义了可视空间的大平截头体
glm::mat4 proj = glm::perspective(glm::radians(float),width/height,float near,float far);
想呈现最终的结果,即要在变换到裁剪坐标前乘以模型,观察和投影矩阵
进行3D绘图时,首先创建一个模型矩阵
glm::mat4 model;
将顶点坐标乘以模型矩阵时,代表全局世界
接下来创建一个观察矩阵,在场景内移动
最后创建投影矩阵,使用透视投影