1. 三维观察坐标系
1.1观察坐标系
为了在不同的距离和角度上观察物体,需要在用户坐标系下建立观察坐标系xv,yv,zv(通常是右手坐标系)也称(View Reference Coordinate)。如下图所示,其中,点p0(xo, yo, z0)为观察参考点(View Reference Point),它是观察坐标系的原点。
图1.1 用户坐标系与观察坐标系
tion plane)。
图1.2 沿zv轴的观察平面
1.2观察坐标系的建立
观察坐标系的建立如下图所示:
图1.3 法矢量的定义
观察平面的方向及zv常远轴可以定义为观察平面(view plane)N
法矢量N: 在用户坐标系中指定一个点为观察参考点,然后在此点指定法矢量N,即zv轴的正向。
法矢量V:确定了矢量N后,再定义观察正向矢量V,该矢量用来建立yv轴的正向。通常的方法是先选择任一不平行于N的矢量V',然后由图形系统使该矢量V'投影到垂直于法矢量N的平面上,定义投影后的矢量为矢量V。
法矢量U:利用矢量N和V,可以计算第三个矢量U,对应于xz轴的正向。
的指定视图投影到显示设备表面上的过程来处理对象的描述。
2. 世界坐标系
在现实世界中,所有的物体都具有三维特征,但是计算机本身只能处理数字,显示二维的图形,将三维物体和二维数据联系到一起的唯一纽带就是坐标。为了使被显示的物体数字化,要在被显示的物体所在的空间中定义一个坐标系。该坐标系的长度单位和坐标轴的方向要适合被显示物体的描述。该坐标系被称为世界坐标系,世界坐标系是固定不变的。
OpenGL中世界坐标用来描述场景的坐标,Z+轴垂直屏幕向外,X+从左到右,Y+轴从下到上。世界坐标系是右手笛卡尔坐标系统。我们用这个坐标系来描述物体及光源的位置。世界坐标系以屏幕中心为原点(0,0,0),长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。
3. 世界坐标系到观察坐标系
在三维观察流水线中,场景构造完成后的第一步工作是将对象描述变换到观察坐标系中。对象描述的转换等价于将观察坐标系叠加到世界坐标系的一连串变换。
1. 平移观察坐标原点到世界坐标系原点。
2. 进行旋转,分别让xview、yview和zview轴对应到世界坐标的xw、yw、zw轴。
如果指定世界坐标点P=(x0,y0,z0)为观察坐标原点,则将观察坐标系原点移到世界坐标系原点的变换是
将观察坐标系叠加到世界坐标系的组合旋转变换矩阵使用单位向量u、v和n来形成。该变换矩阵为
这里,矩阵R的元素是uvn轴向量的分量。
将前面的平移和旋转矩阵乘起来获得坐标变换矩阵:
=
该矩阵中的平移因子按u、v、n和P0的向量点积计算而得,P0代表从世界坐标系原点到观察原点的向量。换句话说,平移因子实在每一轴上的负投影(观察坐标系中的负分量P0)。这些矩阵元素的取值为
矩阵将世界坐标系中的对象描述变换到观察坐标系。
4. 投影变换
对象描述变换到观察坐标后,下一阶段是将其投影到观察平面上。投影变换就是把三维立体(或物体)投射到投影面上得到二维平面图形。平面几何投影主要指平行投影、透视投影以及通过这些投影变换而得到的三维立体的常用平面图形:三视图、轴视图以及透视图。 图形软件一般都支持平行投影和透视投影两种方式。
在平行投影中(parallel projection)中,坐标位置沿平行线变换到观察平面上。图4.1给出了用端点坐标P1和P2描述的线段的平行投影。平行投影保持对象的相关比例不变,这是三维
对象计算机辅助绘图和设计中产生成比例工程图的方法。场景中的平行线在平行投影中显示成平行的。一般有两种获得对象平行视图的方法:沿垂直于观察平面的直线投影,或沿某倾斜角度投影到观察平面。
图4.1 线段到观察平面的平行投影
在透视投影(perspective projection)中,对象位置沿会聚到观察平面后一点的直线变换到投影坐标系。图4.2给出了用端点坐标P1和P2描述的线段的透视投影。与平行投影不同的是,透视投影不保持对象的相关比例。但场景的透视投影真实感教好,因为在透视显示中较远的对象减小了尺寸。
发布评论