坐标系统
局部空间(Local Space)
世界空间(World Space)
观察空间(View Space)
观察空间就是将对象的世界空间的坐标转换为观察者视野前面的坐标。
裁剪空间(Clip Space)
正射投影
透视投影
- near clipping plane / far clipping plane:这两个截断平面限制了视野的深度范围。计算机只会渲染这两个平面之间的点,比 near clipping plane 更近的点,以及比 far clipping plane 更远的点都不会被渲染。
- FovH/FovV:水平视角/竖直视角:这两个视角限制了横向和纵向的可视范围(frustum 视锥),在这两个角度之外的点都不会被渲染。
- 相机坐标系:在 OpenGL 中,以相机为坐标原点,观测方向定义为 z 轴的负方向(即视线是逆着z轴的)。相机坐标系是右手系。
- 标准化设备坐标(normalized device coordinates,NDC):由于不同的显示设备尺寸、像素不同,为了方便适应不同设备,三维坐标 (x, y, z) 将会被归一化到 -1 到 1 之间。NDC 坐标系是左手系,它的x轴和y轴与相机坐标系方向相同,而z轴则和相机坐标系的z轴相反。
- 透视投影矩阵:将物体在相机坐标系下的坐标,映射为标准化设备坐标 (NDC)的矩阵。
从Local坐标系到NDC
$$
V_{clip} =M_{projection}\cdot M_{view}\cdot M_{world}\cdot M_{local}
$$