29-空间变换—正交投影变换
前情回顾
目前我们知道,通过model matrix可以将物体初始位置变换到目标位置,通过view matrix(摄像机坐标系/视图坐标系)乘以model matrix就可以得到视图坐标系下的位置(x,y,z)
现在我们来考虑以下显示的问题————投影:将空间中的物体投射成某一个平面的影像,把3D场景转换为2D平面图像
正交投影的概念
图示为正交投影,是一种平行投影,类似用平行光把物体投射到地面上;由于没有像人眼一样的光线汇集点,所以没有近大远小的效果

正交投影盒空间
正交投影盒空间是指,定义一个立方体,只有在立方体内的物体才会“可视”,其他的都看不到;即在视图变换后的结果中,选择一块区域进行渲染显示

关于摄像机:正交投影比较特殊,在视图变换后,便没有考虑摄像机位于中心这件事;其只关心投影盒空间圈起来了哪个区域,就会去显示哪个区域
正交投影平面
正交投影平面,位于投影盒正z轴方向的面,如图:

由图可知,投影平面与屏幕窗体的四个角一一对应吻合
投影空间描述
每个投影的盒子都是由六组数据组成,即上下、左右、前后四组坐标值
只有在这组坐标范围内的物体才会被渲染

正交投影盒的统一
原理: 做完了视图变换后,不需要考虑摄像机的位置,所以可以统一所有数据;每个投影的盒子都位于空间中不同的区域,所以需要统一放置在原点;每个投影的盒子都有不同的长宽高,所以需要统一
统一盒体中心点
每个投影的盒子都位于空间中不同的区域,所以需要统一将盒体的中心点放置在坐标原点

移动到原点的变换矩阵如下所示:


此变换施加到每个物体上面,物体都会随着盒体进行相应移动
统一盒体大小
统一将盒子的长宽都缩放到2的长度,即长宽高在坐标上都是-1到1;
同样的变换也施加到盒体内的物体上,这样物体顶点坐标都会被缩放到-1到1,这种坐标称为NDC坐标(标准设备坐标-Normalized Device Coordinates)

正交投影矩阵
将平移与缩放结合起来:

经过了正交投影变换后,物体的顶点会发生如下变化:
1、盒体内的顶点,坐标xyz都缩放在-1到1以内的NDC坐标
2、盒体外的顶点,坐标xyz都缩放后,至少某一维度坐标会小于-1或大于1
