资源预览内容
第1页 / 共74页
第2页 / 共74页
第3页 / 共74页
第4页 / 共74页
第5页 / 共74页
第6页 / 共74页
第7页 / 共74页
第8页 / 共74页
第9页 / 共74页
第10页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Classifie dIn d e X :T P 3 91 U D C :6 2 1 3 So urh w estUniM erSity o fScie n c e a ndTe chn oIog y MasterDe g reeT he SiS zS O ,那么点p 在平面的前面且在平面的正半空间里。 当:n p + d O ,那么点P 在平面的背面且在平面的负半空间里。 西南科技大学硕士研究生学位论文第1 5 页 2 33 D 中的矩阵和几何变换5 3 础 矩阵是3 D 数学的重要基础,一般情况下,我们所进行的坐标系和物体 的变换都要用到矩阵这个重要工具。矩阵是由可以表示任意对象的数字组成 的矩形数组。通常我们将矩阵做为常规3 D 变换的一种压缩形式,将矩阵用 于表示世界变换、投影变换等变换。 为使下面分析的几何变换具有统一性,我们先引入齐次坐标的概念。齐 次坐标系建立的基本思想是增加了空间的维度。即通过n + 1 个分量的向量来 表示具有n 个分量的向量。这样本来通过加法实现的平移变换也能以乘法形 式实现,计算机图形学中的几种基本变换也就有了统一的形式。这三种基本 变换都采用4 x 4 大小的变换矩阵。下面我们分别介绍: 2 3 13 D 中的平移变换 设t 、弓、t 是物体在3 个坐标轴方向的平移变化量,则有公式: x 7 2 x + 正,Y 2y + 瓦,Z 2z + 互 矩阵运算的表达式为: x Y z 1 】= 【xYz1 】 1O O1 OO 互 弓 00 00 10 Z 1 2 3 23 D 中的旋转变换 ( 1 ) 绕Z 轴旋转的公式为: X = x c o s O y s i n O ;y = X S i n O + y c o s O ;Z7 =Z 矩阵运算的表达式为: z 7Y z 1 】= 工Yz1 s i n 口 C O S p O O 0 O 0 0 1O 01 ( 2 1 ) ( 2 - 2 ) 卵:詈o o 傩曲0 O C 西南科技大学硕士研究生学位论文第1 6 页 ,y ,Jz ,) y o ,只z ) 图2 - 3 绕Z 轴旋转的示意图 F i g 2 - 3 S c h e m a t i cD i a g r a mo fR o t a t i o nA r o u n dt h eZ a X is ( 2 ) 绕X 轴旋转的公式为: X7 = X :Y = y c o s O - z s i n O ;Z = y s i n O + z c o s e 矩阵运算的表达式为: l1 p y z ,1 】斗少叫I 吕 10 ( 3 ) 绕Y 轴旋转的公式为: OOO C O S9s i n e0 一s i n 乡C O s 80 OO X = Z S i n O + x c o s O ,Y = Y ,Z = z c o s O - x s i n O 矩阵运算的表达式为: 2 3 3 【x y z - 】= 【xyz 】lC O s 三S 秒0 1 。s i n 曼8 0 善 I9一 10001 3 D 中的缩放变换 ( 2 - 3 ) ( 2 - 4 ) 设S x 、S y 、S z 是物体在3 个坐标轴方向的比例变化量,则有公式: X = X S x ,Y = YXS y ,z = Z S z 矩阵运算的表达式为: 西南科技大学硕士研究生学位论文第1 7 页 P y 7 z 1 】= 【xyz1 】 ( 2 - 5 ) 2 43 D 图形处理流程和O p e n G L 变换确刀 2 4 13 D 图形处理流程 将所创建的虚拟环境中的三维物体在计算机屏幕上显示出来是一个从 三维空间到二维平面( 计算机屏幕) 的投影过程,一般都要经历下面一系列步 骤:视点变换( V i e w i n gT r a n s f o r m a t io n ) ,即调整视点的位置,从不同位 置去观察它。模型变换( M o d e l i n gT r a n s f o r m a t i o n ) ,即对模型进行旋转、 平移和缩放。如果把物体画下来,我们可以选择是否需要“近大远小”。另 外,我们可能只希望看到物体的一部分,而不是全部。这就是投影变换 ( P r o j e c t i o nT r a n s f o r m a t i o n ) ,即把三维模型投影到二维屏幕上的过程。 视口变换( V i e w p o r tT r a n s f o r m a t i o n ) ,即规定了屏幕上显示场景的位置和 尺寸。打个比喻:我们可能希望把整个看到的图形画下来,但是它只占纸张 的一部分,而不是全部。 图2 - 4 显示了三维图形的显示流程: 世界 投 视 屏幕 二 坐标维 影 口 维 坐标 系中 系中 几 变裁 + 的图 的三 何 变 维物变 换换剪 形显 体换 不 图2 - 4三维物体的显示过程 Fig 2 - 4T h eS h o wP r o c e s so fT h r e e Dm e n sio n aIO b j e c t s 2 4 2视点变换 视点变换相当于设置视点的位置和方向。默认情况是,视点定位在坐标 系的原点,初始方向指向z 轴的负方向,它同物体的默认位置是一致的。 O p e n G L 提供了函数g l u L o o k A t 来指定视点变换,其函数原型如下: O O 0 1 0 O 墨O O S 0 O 0 O O 西南科技大学硕士研究生学位论文第1 8 页 v oidg J u L o o k At ( T Y P Ee y e x , T Y P Ee y e y , T Y P Ee y e z ,T Y P Ec e i lt e r x , T Y P E c e nt e r y , T Y P EC e nt e l Z ,T Y P Eu p x , T Y P Eu p y , T Y P Eu p z ) 其中:e y e x ,e y e y ,e y e z 指定了视点的位置;c e n t e r x ,c e n t e r y ,c e n t e r z 指定了参考点的位置;u p x ,u p y ,u p z 指定了向上向量的方向。 2 4 3模型变换 模型变换是在世界坐标系中进行的。默认情况下:物体模型的中心在坐 标系的中心处。O p e n G L 提供了三种方式进行模型变换。 ( 1 ) 平移变换 v o i dg l T a n s l a t e f d ( T Y P Ex ,T Y P Ey T Y P Ez ) ; 该函数用指定的x ,y ,z 沿着X 轴、Y 轴、z 轴平移物体。 ( 2 ) 旋转变换 v o i dg l R o t a t e f f f ( T Y P Ea n g l e ,T Y P Ex ,T Y P Ey ,T Y P Ez ) ; 绕矢量v = ( x ,y , z ) T 逆时针方向旋转指定的角度:a n g l e 。旋转角度的范围 是0 3 6 0 度。当a n g l e = 0 时,g l R o t a t e O 相当于不起作用。 ( 3 ) 缩放变换 v o i dg l S c a l e f d ( T Y P Ex ,T Y P Ey ,T Y P Ez ) ; 该函数的三个参数指定了物体沿着x ,y , z 轴的缩放比例因子。默认情况 下,它们均为1 ,即物体没有变化。 2 4 4投影变换 投影变换( P r o j e c t i o nT r a n s f o r m a t i o n ) 包括两种基本的投影方式:正视( 平 行) 投影和透视投影( P e r s p e c t i v eT r a n s f o r m r a t i n o ) 。正视投影可以看成投影中 心在无限远处的投影。即坐标位置沿平行线变换到观察平面上,保持物体的 相关比例不变。三维造型的三视图是正视投影的一个典型例子。透视投影不 保持总直线之间的相对尺寸,投影射线汇聚于投影中心,或者说投影中心在 有限远处的投影。这种投影比较有真实感。透视投影使人从2 D 图像中感知 深度,生成真实感视图。透视投影符合人们的心理习惯,对于同样大小的物 体,离视点近的大,离视点远的小。两种投影变换的定义如下图2 5 所示: 西南科技大学硕士研究生学位论文第1 9 页 a ) 平行( 正视) 投影b ) 透视投影 图2 - 5平行投影和透视投影 F j g 2 - 5 P a r a I I e IP r o j e c t i O r a n dP e r s p e c t jV eP r o j e c t i O n D 由于虚拟现实开发中主要应用的是透视投影,下文简要介绍透视投影的 两个实现函数。 ( 1 ) g l F r u s t u m ( 1 e f t ,r i g h t ,b o t t o m ,t o p ,n e a r ,f a r ) 它创建一个透视视景体,近裁剪平面的左下角点的三维空间坐标是 ( 1 e f t ,b o t t o m ,n e a r ) :右上角点是( r i g h t ,t o p ,- n e a r ) 。g l F r u s t u m 视景体如下图图 2 6 所示: 图2 - 6g I F r u s t u m 透视视景体 F ig 2 6 g I F r u s t u mP e rs p e c t iv eV ie wF r u s t u m 一 一 一 一 一 一 一 f L 以 P 西南科技大学硕士研究生学位论文第2 0 页 ( 2 ) g l u P e r s p e c t i v e ( f o v y , a s p e c t ,z N e a r ,z F a r ) 示意图如下图图2 7 所示:其中,前裁剪平面的宽度W ;前裁剪平面的高 度h 。 g l u P e r s p e c t i v e 函数中f o v y 是Y 方向一上的可视角度,范围是 O O , 18 0 0 1 ;a p s e c t 是前裁剪平面的高度与宽度之比。z N e a r ,z F a r 分别是前后裁 减面沿z 负轴到视点的距离。 2 4 5视口变换 视口变换就是将视景体内投影的物体显示在2 D 的视口平面上。O p e n G L 的实现函数如下: v o i dg l V i e w p o r t ( 五只w l d t h ,h e i g h t ) X ,Y 是指定视口矩形的左下角坐标,单位为像素,缺省值为( 0 ,0 ) ; W i d t h ,h e i g h t 是指定视口矩形的宽度和高度。 2 4 6剪裁变换 在O p e n G L 图形系统中,除了视景体定义的6 个剪裁面以外,用户还可 以定义其他的剪裁面,来剪裁掉场景中的物体。函数原型是: v o i dg l C l i p P l a n e ( G L e n u mp l a n e ,c o n s tG L d o u b l e * e q u a t d o n ) 参数e q u a t i o n 指向一个拥有四个系数值的数组,这四个系数分别是裁剪 平面A x + B y + C z + D = O 的A 、B 、C 、D 值。因此,由这四个系数就能确定一 个裁剪平面。参数p l a n e 是G LC L I PP L A N E i ( i = 0 ,1 ,) ,指定裁剪面的编号。 西南科技大学硕士研究生学位论
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号