CG7真实感图形1课件

上传人:pu****.1 文档编号:569521402 上传时间:2024-07-30 格式:PPT 页数:61 大小:250.50KB
返回 下载 相关 举报
CG7真实感图形1课件_第1页
第1页 / 共61页
CG7真实感图形1课件_第2页
第2页 / 共61页
CG7真实感图形1课件_第3页
第3页 / 共61页
CG7真实感图形1课件_第4页
第4页 / 共61页
CG7真实感图形1课件_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《CG7真实感图形1课件》由会员分享,可在线阅读,更多相关《CG7真实感图形1课件(61页珍藏版)》请在金锄头文库上搜索。

1、第第7章章 真实感图形真实感图形 在使用显示设备描绘三维物体的在使用显示设备描绘三维物体的图形时,由于投影变换使图形失去了图形时,由于投影变换使图形失去了深度信息,往往导致图形的二义性,深度信息,往往导致图形的二义性,失去了立体感失去了立体感7.1 消除隐藏线消除隐藏线 任何一个空间物体,在空间的任一方向上,任何一个空间物体,在空间的任一方向上,都只能看得见其中的一部分表面和轮廓线。其中都只能看得见其中的一部分表面和轮廓线。其中有一部分表面和轮廓线背向观察者,不可见,在有一部分表面和轮廓线背向观察者,不可见,在计算机图形学中称为计算机图形学中称为隐藏面和隐藏线隐藏面和隐藏线 为了消去隐藏线,只

2、要把表示三维物体的为了消去隐藏线,只要把表示三维物体的每一条线与每一个组成物体的不透明面进行遮每一条线与每一个组成物体的不透明面进行遮蔽判断蔽判断 把不可见线段或部分不可见线段与可见线把不可见线段或部分不可见线段与可见线段或部分可见线段区分开来段或部分可见线段区分开来 画出可见线段和线段的可见部分,不画或画出可见线段和线段的可见部分,不画或用虚线画不可见线段和线段的不可见部分,就用虚线画不可见线段和线段的不可见部分,就得到经过消隐处理的线条图得到经过消隐处理的线条图 消隐算法消隐算法l按实现方式不同分为两大类:按实现方式不同分为两大类:l景物空间景物空间消隐算法消隐算法l图像空间图像空间消隐算

3、法消隐算法 7.1.1 平面体的消隐处理平面体的消隐处理 平面体平面体 平面体是由多个平面多边形构成的立体,一平面体是由多个平面多边形构成的立体,一般分为凸多面体和凹多面体。般分为凸多面体和凹多面体。凸多面体的特点凸多面体的特点 凸多面体具备这样一个性质:连接形体上不同凸多面体具备这样一个性质:连接形体上不同表面的任意两点的线段完全位于形体的内部表面的任意两点的线段完全位于形体的内部 凸多面体由多个平面凸多边形组成,它的多边凸多面体由多个平面凸多边形组成,它的多边形表面要么完全可见,要么完全不可见。形表面要么完全可见,要么完全不可见。凸多面体消隐处理凸多面体消隐处理 在消隐问题中,凸多面体是最

4、简单和最基在消隐问题中,凸多面体是最简单和最基本的情形,其消隐算法的关键是测试其上哪些本的情形,其消隐算法的关键是测试其上哪些表面是可见的,哪些表面是不可见的。表面是可见的,哪些表面是不可见的。 凸多面体消隐处理的思想凸多面体消隐处理的思想 利用表面外法线方向可测试物利用表面外法线方向可测试物体表面的可见性体表面的可见性 在此规定法线的方向由物体表面指向外在此规定法线的方向由物体表面指向外部空间,将其称为外法线部空间,将其称为外法线 法向向量N 视线向量V法向向量N 法向向量N 90 90ABCDEFXZYNS 面面ABEDABED的外法线矢量的外法线矢量 面面ADFCADFC的外法线矢量的外

5、法线矢量 面面BCFEBCFE的外法线矢量的外法线矢量 面面DEFDEF的外法线矢量的外法线矢量 面面ACB的外法线矢量的外法线矢量其中面其中面DEFDEF与面与面ACBACB的外法线方向刚的外法线方向刚好相反。好相反。 当当已已知知各各项项点点的的三三维维坐坐标标时时,则则可可求求出出各各表表面面的的外外法法线线矢矢量量。如如表表面面ABED的的外外法法线线矢矢量量的的计算公式为:计算公式为: 其中,其中, 根根据据上上式式可可求求出出表表面面外外法法线线矢矢量量N N的分量:的分量: (7-1) 表面上任一点到视点所形成的向量用表面上任一点到视点所形成的向量用S来来表示,即视线向量:表示,

6、即视线向量: (7-2) 同同一一个个表表面面各各点点的的视视线线向向量量是是有有差差异异的的。在在实实际际过过程程中中,可可假假设设观观察察者者处处于于很很远远位位置置,此此时时,视视线线向向量量相相互互平平行行,也也即即表表面面各各点点的的视视线向量均具有同一方向。线向量均具有同一方向。 例例如如在在图图7.27.2所所示示的的空空间间坐坐标标系系中中,设设定定视线向量视线向量S S平行于平行于Y Y 轴,此时有轴,此时有 S=0, 1, 0 表面的外法线向量表面的外法线向量N和视线向量和视线向量S之间的夹之间的夹角角的大小可反映该法线所在表面的方位情况,的大小可反映该法线所在表面的方位情

7、况,由此可判断该表面的可见性。由此可判断该表面的可见性。 ABCDEFXZYNS 当当090时,即时,即cos0,表面面向观察,表面面向观察者,这样的面称为朝前面,即为可见表面者,这样的面称为朝前面,即为可见表面 当当9018180时,则时,则cosp2,则,则P和和Q的包围盒在的包围盒在x方向分离,否则相互重叠方向分离,否则相互重叠 同样,只要将同样,只要将x改成改成y,就可得到,就可得到P和和Q的包的包围盒在围盒在y方向分离的判断条件方向分离的判断条件3平面多边形位置检测平面多边形位置检测 已知一平面,其方程为已知一平面,其方程为 AxAx十十ByBy十十CzCzD D = 0 (I) =

8、 0 (I)式中式中A,B,C,D为常数。为常数。 设有一平面设有一平面 AxAxByBy十十CzCzD D = =F F (II) (II)显然这两个平面平行显然这两个平面平行 当当F F0 0时时,平平面面(IIII)位位于于平平面面(I I)的的三三个坐标轴正向一侧;个坐标轴正向一侧; 当当F0时,平面(时,平面(II)位于平面()位于平面(I)的)的三个坐标轴负向一侧。三个坐标轴负向一侧。 于是得到于是得到 AxAx十十ByByCzCzD D0 0位于位于 AxAxByByCzCzD D = 0 = 0的坐标轴正向一侧;的坐标轴正向一侧; Ax AxByByCzCzD D0 0位于位于

9、 AxAxByByCzCzD D = 0 = 0的坐标轴负向一侧。的坐标轴负向一侧。 设设视视点点位位于于Z Z轴轴负负向向的的无无穷穷远远处处,平平面面多多边形边形P P的方程为的方程为 AxBy十十CzD = 0 若对于平面多边形若对于平面多边形Q Q的任一顶点(的任一顶点(x xq q,y yq q,z zq q)均有)均有 AxqByqCzqD zmin(p),则,则p不仅可能部分不仅可能部分遮挡遮挡q,而且还可能部分地遮挡,而且还可能部分地遮挡Q Q中任何具有中任何具有zmax(qi) zmin(p)的平面多边形的平面多边形qi。所有这样的平面。所有这样的平面多边形的集合记为多边形的

10、集合记为Q。 如果对下面所有检测问题的回答是肯定如果对下面所有检测问题的回答是肯定的,那么的,那么p不遮挡不遮挡Q中任何多边形的任何部中任何多边形的任何部分,则分,则p写入帧缓冲器:写入帧缓冲器: 对对Q中每一中每一qi,第一步,检测,第一步,检测p和和qi的包围盒是否在的包围盒是否在x x方向分离?第二步,检测方向分离?第二步,检测p和和qi的包围盒是否在的包围盒是否在y方向分离?第三步,检方向分离?第三步,检测测p是否全部位于是否全部位于qi所在平面的背离视点的一所在平面的背离视点的一侧?第四步,检测侧?第四步,检测qi是否全部位于是否全部位于p所在平面所在平面的靠近视点的一侧?的靠近视点

11、的一侧? 若对若对中的四步检测有部分中的四步检测有部分qi的回答的回答是否定的,则是否定的,则p不能写入帧缓冲器,不能写入帧缓冲器,p可能与某可能与某些些qi有交叉有交叉遮挡关系(如图遮挡关系(如图7.137.13)。这时,)。这时,可将可将p p分割成两个以上部分并重新排序。分割成两个以上部分并重新排序。 pqr图图7.13 交叉覆盖平面多边形交叉覆盖平面多边形 2.2.去掉了去掉了p p或分割了或分割了p p之后的新之后的新S S重新按重新按1.1.进进行处理。行处理。 随着随着S S中未排序多边形个数的逐步减少和深度中未排序多边形个数的逐步减少和深度优先级表中多边形个数的增加,当优先级表

12、中多边形个数的增加,当S S中多边形个数中多边形个数为为0 0时循环结束。此时深度优先级表就建好了时循环结束。此时深度优先级表就建好了画家算法基本步骤画家算法基本步骤l生成深度优先级队列生成深度优先级队列l据视点距离据视点距离远远的多边形优先级低,排在队列的多边形优先级低,排在队列的前端的前端l据视点距离据视点距离近近的多边形优先级高,排在队列的多边形优先级高,排在队列的后端的后端 l从队列中依次取出多边形,从队列中依次取出多边形,计算其表面光亮度计算其表面光亮度l写入帧缓冲器写入帧缓冲器 l直到队列中所有多边形的光亮度都处理完毕直到队列中所有多边形的光亮度都处理完毕画家算法优点:画家算法优点

13、:l透明或半透明物体透明或半透明物体l图形的图形的动态显示动态显示l飞行训练模拟器中显示飞机着陆时的情景飞行训练模拟器中显示飞机着陆时的情景l场景中的物体是不变的,场景中的物体是不变的,只是视点在变化只是视点在变化l只要事先把不同视点的景物的优先级队只要事先把不同视点的景物的优先级队列算出列算出l再实时地采用画家算法来显示图形再实时地采用画家算法来显示图形l就可以实现图形的快速消隐与显示就可以实现图形的快速消隐与显示 7.2.3 深度缓冲器算法深度缓冲器算法( (Z缓冲区算法缓冲区算法) ) Depthbuffer algorithm 图像空间消隐算法 1975年,Catmull提出 Z缓冲区

14、算法缓冲区算法 它的基本思路是:对于显示屏上的每一个它的基本思路是:对于显示屏上的每一个像素,记录下位于该像素内最靠近观察者的那像素,记录下位于该像素内最靠近观察者的那个景物面的深度坐标,同时相应记录下用来显个景物面的深度坐标,同时相应记录下用来显示该景物面的颜色(或灰度),那么所有记录示该景物面的颜色(或灰度),那么所有记录下的这些像素所对应的颜色就可以形成最后要下的这些像素所对应的颜色就可以形成最后要输出的图形。输出的图形。 为了记录下深度和颜色这两个参数,就为了记录下深度和颜色这两个参数,就需要定义两个数组:需要定义两个数组:一个是深度数组一个是深度数组-depth-depthm mnn

15、另一个是颜色数组另一个是颜色数组-colormn-colormn 深度缓冲器算法的基本步聚如下;深度缓冲器算法的基本步聚如下; 深深度度数数组组和和颜颜色色数数组组赋赋初初值值。即即对对于于显显示示屏屏 上上 的的 全全 部部 像像 素素 , 置置 depthij = max; 置置colorij = bkcolor(背景色)。(背景色)。 对于景物中的每个多边形平面,计算出对于景物中的每个多边形平面,计算出该多边形平面的投影所包含的全部像素的位置,该多边形平面的投影所包含的全部像素的位置,然后对所包含的全部像素逐一做如下的两步工然后对所包含的全部像素逐一做如下的两步工作:作: A A计计算算

16、出出该该多多边边形形在在对对应应于于像像素素(i i,j j)处的深度坐标值处的深度坐标值Z Z; B比较此比较此Z值和原先深度数组所记录的值值和原先深度数组所记录的值depthij的大小。的大小。u若若Zdepthij,用当前的,用当前的z值去替换原先值去替换原先在在depthij中记录的值;然后置中记录的值;然后置colorij为为当前该多边形所表现的颜色值。当前该多边形所表现的颜色值。u反之,若反之,若zdepthij,两个数组存储的,两个数组存储的深度值和颜色值均不须改变。深度值和颜色值均不须改变。 for(场景中的每一个多边形)(场景中的每一个多边形) 扫描转换该多边形;扫描转换该多

17、边形; for(多边形所覆盖的每一个像素点(多边形所覆盖的每一个像素点(x,y)) 计算多边形在该像素点的深度值计算多边形在该像素点的深度值z(x,y); if(z(x,y) Z-buf中对应此像素点中对应此像素点(x,y)的的z值)值) 把多边形在把多边形在(x,y)处的深度值处的深度值z(x,y)存入深度数组;存入深度数组; 把多边形在把多边形在(x,y)处的亮度值存入颜色数组;处的亮度值存入颜色数组; 当所有的多边形都处理完后,帧缓冲器中的内容即当所有的多边形都处理完后,帧缓冲器中的内容即 为消除隐藏面后的图像为消除隐藏面后的图像深度缓冲器算法的优点深度缓冲器算法的优点l简单简单l无需对

18、各景物表面片作深度预排序无需对各景物表面片作深度预排序l易于硬件实现易于硬件实现l图形工作站上配置由硬件实现的深度缓冲器算法图形工作站上配置由硬件实现的深度缓冲器算法l很多微型机上都装有基于深度缓冲器算法的图形很多微型机上都装有基于深度缓冲器算法的图形加速卡加速卡深度缓冲器算法的缺点深度缓冲器算法的缺点l需要很大的存储空间需要很大的存储空间l在处理透明和半透明等效果方面存在困难,并由在处理透明和半透明等效果方面存在困难,并由此会产生巨大的处理时间开销此会产生巨大的处理时间开销改进一:减少需要相对测试的多边形平面数改进一:减少需要相对测试的多边形平面数l最小最大测试最小最大测试 不不重重叠叠,不

19、不可可能能互互相相遮遮蔽蔽 测试无确定结果测试无确定结果 对每条边进行对每条边进行最小最大最小最大测试测试XminXmaxl改进二:利用连贯性计算深度改进二:利用连贯性计算深度l水平方向水平方向l竖直方向竖直方向l改进三:降低对存储空间的需求改进三:降低对存储空间的需求l图像空间划分为图像空间划分为4、16甚至更多的子正方形或条甚至更多的子正方形或条状区域状区域l在最小情况下,只对应一条扫描线的深度缓冲器在最小情况下,只对应一条扫描线的深度缓冲器l扫描线相关算法扫描线相关算法7.2.4 扫描线算法扫描线算法 扫描线算法在实质上可以说是扫描线算法在实质上可以说是深度缓冲器算法的一种延伸。深度缓冲

20、器算法的一种延伸。 假如我们在屏幕的分区中采用仅在假如我们在屏幕的分区中采用仅在y方向细方向细分,而在分,而在x方向不分,那么整个显示屏幕将分方向不分,那么整个显示屏幕将分成许多狭长的子区。成许多狭长的子区。 如果在如果在y方向是以像素为单位细分,那么这方向是以像素为单位细分,那么这样得到的每个子区就是一条线,我们称之为样得到的每个子区就是一条线,我们称之为“扫描线扫描线”。 扫描线算法的基本思路是:当包含一条扫扫描线算法的基本思路是:当包含一条扫描线的水平平面(称为扫描线平面)与景物中描线的水平平面(称为扫描线平面)与景物中的立体相交时,组成立体的诸表面就会与该扫的立体相交时,组成立体的诸表

21、面就会与该扫描线平面相交而形成若干条截交线段,这些裁描线平面相交而形成若干条截交线段,这些裁交线段把整条扫描线分割成一些间隔交线段把整条扫描线分割成一些间隔xyz扫描线扫描线扫描线平面扫描线平面1 2 3 4 5xz图图7.16 扫描线算法扫描线算法 在扫描线上形成的间隔可以分为三类:在扫描线上形成的间隔可以分为三类: 不包含任何截交线段的间隔。对于这类不包含任何截交线段的间隔。对于这类间隔,就以背景色来显示该区域。间隔,就以背景色来显示该区域。 其中只包含有一条线段的间隔,很明显,其中只包含有一条线段的间隔,很明显,由于位在这类间隔内的线段是唯一的,因此必由于位在这类间隔内的线段是唯一的,因

22、此必然是可见的,于是在这类间隔内的区域就应显然是可见的,于是在这类间隔内的区域就应显示该线段所在表面的颜色。示该线段所在表面的颜色。 1 2 3 4 5xz 同时存在多条线段的间隔,在这种情况同时存在多条线段的间隔,在这种情况下,需要经过计算和比较,在众多的线段中找下,需要经过计算和比较,在众多的线段中找出距离视点最近的那条线段,也就是出距离视点最近的那条线段,也就是Z值最小值最小的线段。然后在这类间隔的区域内,显示这条的线段。然后在这类间隔的区域内,显示这条处于最前面的线段所在表面的颜色。处于最前面的线段所在表面的颜色。 1 2 3 4 5xz 算法从上至下地逐条处理扫描线,判别完算法从上至

23、下地逐条处理扫描线,判别完所有扫描线平面内线段的可见部分,并显示它所有扫描线平面内线段的可见部分,并显示它们,则立体的隐藏面也就得到了处理。们,则立体的隐藏面也就得到了处理。 7.2.5 区域细分算法区域细分算法 当窗口内只包含有一个多边形表面或者根当窗口内只包含有一个多边形表面或者根本就不包含任何多边形表面的时候,那么决定本就不包含任何多边形表面的时候,那么决定该窗口内显示的颜色值是相当简单的。该窗口内显示的颜色值是相当简单的。 但是当窗口内同时包含有几个相互交叉重但是当窗口内同时包含有几个相互交叉重叠的多边形表面时,输出情况的决定就变得相叠的多边形表面时,输出情况的决定就变得相对地复杂。对地复杂。 区域细分算法的基本思路是:对图形显区域细分算法的基本思路是:对图形显示屏幕采取递归细分的办法,以产生大小不示屏幕采取递归细分的办法,以产生大小不等的窗口,使得落在该窗口内的图形变得相等的窗口,使得落在该窗口内的图形变得相当简单以致于能够容易地决定其显示情况当简单以致于能够容易地决定其显示情况

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号