概述:
摄像机模型实际上是一个金字塔形的视景体,有近,远,左,右,上,下六个面。
几何管线是图形管线的一个部分,它的主要任务是变换,裁减和剔除。
变换包括世界变换,视点变换,裁减变换,透视除法,视口变换,窗口变换。
裁减是指对于与视景体相交的物体,计算物体与平面的交点,并返回新的物体点集。
剔除是指去掉完全位于视景体之外的物体以及背面剔除。
一,摄像机模型。
此为俯视图:
此为侧视图:
视景体近平面的四个顶点分别为:
视景体远平面的四个顶点分别为:
近平面的法向量为 D,平面上一点为 。因此近平面的方程为:
即
远平面的法向量为 ,平面上一点为 。因此远平面方程为:
即
垂直于左平面的向量可由平面上两个向量叉乘求得,
由此可求得左平面法向量为:
因此,左平面的方程为:
类似的,可求得右平面方程为:
底平面和顶平面方程分别为:
二,视景体的参数。
只需四个参数就可以确定一个视景体。这四个参数分别为:
其中, 称为视野角,表示眼镜所能看到的最上方和最下方的平面之间的夹角。
为近平面的宽高比。
由这四个参数出发,可推得视景体的其他参数(参考摄像机模型图):
三,视口区的坐标。
视口是包含投影后的点的一个平面,其上点的坐标称为视口坐标。
完整的视口坐标在[0,1] 区间内,更小的视口可由 确定,这四个参数均在0 和 1 之间。 d 的取值范围是 ,标准化为[0,1] 。有时是比 [0,1] 更小的区间。
四,几何管线流程
1, 物体空间。(或模型空间)
就是建模时所采用的空间,不同的模型采用的坐标系的手性和朝向有所差异,需具体对待。
2 ,世界空间。
所有的模型都会被放置在世界空间中,世界空间只有一个。
在将物体放置到世界空间中时应考虑三个问题:
1. 位置
2. 方位
3. 缩放比例
由物体空间变换到世界空间通过世界矩阵完成。世界矩阵的求法有两种,一种是通过各种变换矩阵的组合,另一种是通过两个空间中的点来计算。例如:
物体空间的点为Q ,对应的世界空间中的点位 P ,则
MQ=P
因此, M=
世界变换的齐次矩阵形式和逆变换形式分别为:
3 视空间(眼空间,摄像机空间)
视点变换及其逆变换的齐次矩阵形式分别为:
其中,
注意!!!!由于Q 中坐标轴的排列顺序颠倒,因此该视点变换将右手系的世界空间变换为左手系的眼空间,眼空间是左手系!!!!!!因此,眼空间中点的坐标是( r,u,d)!!! 这样做是为了和 Direct3D 统一。如果是 OpenGL ,则是 因此要格外谨慎~~~~~
4,裁减空间(投影空间,归一化空间)
裁减变换的目的有三:为归一化做必要的变量准备;为透视投影做必要的变量准备;为裁减和剔除作必要的变量准备。
裁减变换的方程如下:
该公式利用了相似三角形原理。
上式中括号里减号项是为了将视平面中心线移到d 轴上,以使其对称。
透视除法完成后视景体内的点满足 。
这样便将r,u 坐标归一化为 [-1,1]. 归一化既方便了接下来的变换,又方便了裁减判断。
而对于d 的处理则稍微麻烦一些。 d 的初始范围是 现要将其变换至[-1,1] 。
变换 虽然可以完成上述变换但并不符合投影变换的规律。
因为投影变换是一个非线性的变换,而上述方程是一个线性方程,因此必须采用其他的变换方程。
回顾本书P36 的内容可知,方程
满足透视投影的特点,它是一个非线性的方程,且取值范围是[0,1] 。
其中的s 满足:
且s ∈ [0,1]
因此, 可以作为深度值的参考值,因为它蕴含了透视投影的非线性规律。
定义
这样透视除法后,
传说中的裁减变换及其逆变换的齐次矩阵形式分别如下:
5. 归一化设备坐标和窗口空间
作一次透视除法即可得到归一化设备坐标:
归一化设备坐标的特点是
注意!!!!此处遵循的惯例与Direct3D 相同,在 OpenGL 中, 需多加注意!!!!
由归一化设备坐标变换为窗口坐标需要进行两步变换:视口变换和窗口映射。
由于归一化设备坐标的特点,使得这两步变换变得非常容易( 可以通过矩阵变换,也可以通过成比例计算),唯一需要注意的是进行手性的变换,因为归一化设备坐标 u 轴朝上,而窗口坐标 y 轴(与 u 对应)朝下。
变换方程如下:
归一化设备坐标到窗口坐标变换的齐次矩阵形式为:
几何管线综述: