计算机图形学 教学课件 ppt 作者 徐文鹏 第7章 消隐

上传人:E**** 文档编号:89189806 上传时间:2019-05-21 格式:PPT 页数:59 大小:1.32MB
返回 下载 相关 举报
计算机图形学 教学课件 ppt 作者 徐文鹏 第7章 消隐_第1页
第1页 / 共59页
计算机图形学 教学课件 ppt 作者 徐文鹏 第7章 消隐_第2页
第2页 / 共59页
计算机图形学 教学课件 ppt 作者 徐文鹏 第7章 消隐_第3页
第3页 / 共59页
计算机图形学 教学课件 ppt 作者 徐文鹏 第7章 消隐_第4页
第4页 / 共59页
计算机图形学 教学课件 ppt 作者 徐文鹏 第7章 消隐_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《计算机图形学 教学课件 ppt 作者 徐文鹏 第7章 消隐》由会员分享,可在线阅读,更多相关《计算机图形学 教学课件 ppt 作者 徐文鹏 第7章 消隐(59页珍藏版)》请在金锄头文库上搜索。

1、河南理工大学,计算机图形学,第7章 消 隐,Computer Graphics,消隐的概述 多面体的消隐算法 深度缓冲器算法 扫描线算法 画家算法 光线追踪算法(Ray Casting),第7章 消 隐,消隐概述,什么是消隐? 消隐的分类有哪些? 消隐的基本原则有哪些?,消隐的概述,绘制线框图时应消除隐藏线,绘制真实感图形时应消除隐藏面。 未经消除隐藏线和隐藏面的立体图往往存在二义性,如图7-2所示。,消隐的概述,这种消除隐藏线或隐藏面的过程称为消隐处理,简称消隐。 经过消隐得到的图形称为消隐图。,消隐的概述,消隐不仅与消隐对象有关,还与观察者的位置有关。如图7-3所示,由于视点的位置不同,物

2、体的可见部分也不同:,图7-3 消隐与观察者的位置关系,消隐的概述,按消隐的对象分类 线消隐(Hidden-line) 面消隐(Hidden-surface) 按消隐空间分类 物体空间消隐算法 图像空间消隐算法,消隐的概述,线消隐(Hidden-line) 消隐对象是物体上不可见的线,一般用于线框图。当用笔式绘图仪或其它画线设备绘制图形时,主要使用这种算法。 面消隐(Hidden-surface) 消隐对象是物体上不可见的面,一般用于填色图。当用光栅扫描显示器绘制图形时,主要使用这种算法。,消隐的概述,物体空间消隐算法 物体空间是需要消隐的物体所在的三维空间。 算法描述如下: for(场景中的

3、每一个物体) 将该物体与场景中的其它物体进行比较,确定其表面的可见部分; 显示该物体表面的可见部分; ,消隐的概述,图像空间消隐算法 图像空间是物体显示时所在的屏幕坐标空间。 算法描述如下: for(窗口中的每一个像素) 确定距视点最近的物体,以该物体表面的颜色来显示像素; ,消隐的概述,消隐基本原则 排序 排序的目的主要是判别消隐对象的体、面、边和点与观察点几何距离的远近。如果一个物体离观察点越远,越有可能被离观察点近的物体所遮挡,如图7-4所示。但这不是绝对的,例如,不在同一观察线方向的两个物体不会有遮挡关系,如图7-5所示。,图7-4 P2被P1遮挡,图7-5 P2未被P1遮挡,消隐的概

4、述,连贯性 连贯性是指从一个事物到另一个事物,其属性值(如颜色值、空间位置)通常是平缓过渡的性质。 常讨论的连贯性有如下几种: 物体连贯性 面(边)连贯性 扫描线连贯性 深度连贯性,多面体的消隐算法,凸多面体消隐的基本原理是什么 凸多面体消隐的算法思想是什么 任意多面体的消隐算法是什么,多面体的消隐算法,凸多面体的特点 由多个平面凸多边形组成 在投影关系上,体的表面要么完全可见,要么完全不可见 各朝前表面不发生相互重叠现象,多面体的消隐算法,凸多面体消隐的基本原理 表面外法线与其可见性的关系 设平面Pi上任一点的外法矢ni与该点的视线矢量vi的数量积: (7-1) 从而有 (7-2) 其中i为

5、ni与vi之间的夹角,i=1,2,m,这里m为平面数。,多面体的消隐算法,当 ,即 时,Pi为朝前面,为可见的,应该画出; 当 ,即 时,Pi为朝后面,不可见,不画出或用虚线表示。 视线方向与外法线的关系如图7-7。,图7-7 视方向与外法线的关,多面体的消隐算法,视线矢量平行于某一基本坐标轴时夹角的计算 当视线矢量vi平行于某一基本坐标轴时,那么平面的外法矢量nA,B,C与视线矢量的夹角就是外法矢量n与某一基本坐标轴的夹角,分别用、表示视线矢量平行X、Y、Z轴时平面的外法矢量nA,B,C与坐标轴的夹角。,多面体的消隐算法,当视线矢量平行Z轴时,有 同理,若视线矢量平行X轴时,某平面的可见性由

6、该平面外法矢量n在X轴的方向分量A所决定。 若视线矢量平行y轴时,某平面的可见性由该平面外法矢量n在Y轴的方向分量B所决定。,(7-3),多面体的消隐算法,平面多边形的外法矢量的计算 为了判别物体上各表面是朝前面还是朝后面,需求出各表面(平面多边形)指向物体外侧的法矢量。如图7-8中所示 。,图7-8 物体表面外法矢量,多面体的消隐算法,在图7-8中,平面P1P2P3的外法矢量 任意多边形法矢量的算法方法如下: 设法矢量 ,三个方向分量为: (7-4) 式中:m为顶点号,若in,则j=i+1;否则i=m,j=1。,多面体的消隐算法,为避免在程序中出现两种计算外法矢量的方法,建议凸多边形也采用该

7、算法进行计算。多边形所在的平面方程可写成: (7-5) 其中: , 为平面上任意一点。,多面体的消隐算法,算法实现的一般步骤 根据表面的数据结构,取顶点数据,计算表面的外法线矢量。 计算外法线在投影方向上的分量的值。 根据分量的值判断表面的可见性。 若表面可见画出该表面,否则处理下一个表面。,多面体的消隐算法,任意多面体的消隐 对于任意平面立体必须寻求适当的消隐算法。因为任意平面立体则不同,除了有全部可见和全部不可见的棱边外,还有部分可见的棱边如图7-9 。 图7-9 任意多面体的隐藏情况,深度缓冲器算法,算法基本思想是什么? 算法是怎样描述的? 深度值如何计算? 深度缓冲器算法特点是什么?,

8、深度缓冲器算法,Z缓冲器算法的基本思想是: 将投影平面每个像素所对应的所有面片(平面或曲面)的深度进行比较,然后取离视线最近面片的属性值作为该像素的属性值。见图7-12。 图7-12 Z缓冲器算法基本思想,深度缓冲器算法,算法描述 深度缓冲器所有单元均置为最小z值,帧缓冲器各单元均置为背景色,然后逐个处理多边形表中的各面片。 每扫描一行,计算该行各像素点(x,y)所对应的深度值z(x,y),并将结果与深度缓冲器中该像素单元所存储的深度值ZB(x,y)进行比较。 若zZB(x,y),则ZB(x,y)= z,同时将该像素的属性值I(x,y)写入帧缓冲器,即FB(x,y)= I(x,y);否则不变。

9、,深度缓冲器算法,深度值的计算 若已知多边形的方程,则可用增量法计算扫描线每一个像素的深度。设平面方程为: 则多边形面上的点(x,y)所对应的深度值为: (7-6),C0,深度缓冲器算法,由于所有扫描线上相邻点间的水平间距为1个像素单位,扫描线行与行之间的垂直间距也为1。因此可以利用这种连贯性来简化计算过程,如图7-13所示。 图7-13 深度计算,深度缓冲器算法,若已计算出(x,y)点的深度值为zi,沿x方向相邻连贯点(x+1,y)的深度值zi+1可由下式计算: (7-7) 沿多边形左边界递归计算边界上各点的坐标: (7-8) m为该边的斜率,沿该边的深度也可以递归计算出来,即: (7-9)

10、,深度缓冲器算法,如果该边是一条垂直边界,则计算公式简化为: (7-10) 对于每条扫描线,首先根据公式(7-9)计算出与其相交的多边形最左边的交点所对应的深度值,然后,该扫描线上所有的后续点由(7-7)式计算出来。 所有的多边形处理完毕,即得消隐后的图形。,深度缓冲器算法,深度缓冲器算法特点 Z缓冲器算法的最大优点 :可以轻而易举地处理隐藏面以及显示复杂曲面之间的交线。 主要缺点 :深度数组和属性数组需要占用很大的内存。,扫描线算法,算法基本思想是什么? 算法是怎样描述的? 求交算法如何实现? 扫描线消隐算法特点有哪些?,扫描线算法,算法基本思想 依顺序处理每一条扫描线,处理当前扫描线时,设

11、计一个一维数组作为当前扫描线的深度缓冲区(ZB)。 首先找出扫描线与投影到屏幕上的所有多边形的相交区间,对每个相交区间上的各像素利用连贯性计算其深度Z值,并与ZB中的值比较,以决定各区间点的像素颜色,并将其写入帧缓冲区(FB)。,扫描线算法,算法描述 扫描线Z缓冲区算法步骤可描述为: y = yi; /* 当前扫描线y=yi */ for(x0; xxmax; x+) /* 绘图窗口为:0,xmax*0,ymax */ FB(x,yi)单元置为背景色; ZB(x,yi)单元置为最小值; for(每一个多边形) 扫描转换该多边形;,扫描线算法,求出多边形在投影平面上的投影与当前扫描线的相交区间;

12、 for (相交区间内的每个像素(x,yi) 计算该多边形在该像素的深度值z(x,yi); if(z(x,yi)ZB (xyi) 用z(x, yi)替换ZB(x,yi)的值; 用多边形在(x,yi)处的颜色值替换FB (x,yi)的值; ,扫描线算法,扫描线与多边形面片求交算法的实现 扫描线算法的三表数据结构 边表(ET) 对投影到屏幕上的这些多边形的所有非水平边建立ET表,边结点结构如下:,扫描线算法,多边形表(PT) 多边形表的结构如下: 活性边表(AET) 为了计算扫描线与各边的交点,还需活性边表(AET) AET是与当前扫描线相交的多边形边结点链接而成的表。,扫描线算法,AET的边结点

13、按x增加的顺序排列 AET中结点的数据项与ET表一致,只是AET中结点的数据内容将随着扫描线的变动而不断更新。 其x项的更新为当前扫描线与各边交点的x坐标值,其它项也视具体情况随x值的更新而更新。 扫描转换时,当进入下一条扫描线前,需删除那些已脱离扫描线的多边形的边结点,并从ET表中增加一些新的边结点。,扫描线算法,扫描线经过非多边形相交区域 当扫描线经过非多边形相交区域时,扫描线首先与多边形ABC的边AB相交,扫描线进入多边形内,多边形ABC的flag标志由假(F)转为真(T)。如图7-14中的y扫描线。 图7-14 多边形投影相交、覆盖,扫描线算法,当扫描线与AC边相交后,扫描线穿出多边形

14、ABC,其标志变为F,从而用背景色写像素。 接着扫描线与多边形DEF的DF边相交至与EF边相交前,标志变为T,写入多边形DEF的颜色,在与EF边相交之后,DEF的标志变为F,则像素写入背景色。,扫描线算法,扫描线经过多边形投影相互覆盖区域 当扫描线经过多边形投影相互覆盖区域时,如图7-14中的y。 在扫描线与AB边相交前像素写背景色。 扫描线与AB边相交后,进入多边形ABC,其标志转为T,此时以多边形ABC的颜色写像素。 当扫描线与DE边相交后,多边形DEF的flag标志也转为T。,扫描线算法,多边形发生相互贯穿 在多边形发生相互贯穿的情况下,仍可以使用扫描线消隐算法。如图7-15所示,多边形

15、GHI和JKL发生相互贯穿。此时,可将多边形GHI分为两个多边形GHHG和HGI,引入了虚边GH。 图7-15 多边形相互贯通,扫描线算法,扫描线消隐算法特点 扫描线消隐算法不仅用于多边形的消隐,还可扩展应用到任意曲面体的消隐。 在任意曲面体的消隐中,需要将多边形表PT改为曲面表ST,活动边表改为活动曲面表。 扫描转换时,当进入下一条扫描线,需删除那些已脱离扫描线的多边形结点,并增加一些新加入的多边形结点。,画家算法,画家算法的基本思想是什么? 深度优先级表如何建立? 解决深度优先级冲突有哪些算法? 画家算法特点有哪些?,画家算法,画家算法的基本思想 先把屏幕置成背景色。 将画面中的物体(面)按其距离观察点的远近进行排序,结果存放在一张线形表中。距观察点远者称其优先级高,放在表头,距观察点近者称其优先级低,放在表尾,这张表称为深度优先级表。 按照从表头到表尾(由远到近)的顺序逐个绘制物体。,画家算法,深度优先级表的建立 多边形优先级的考虑 首先对一个简单的画面,可以直接建立一个确定的深度优先表如图7-16(a)所示。 当画面略微复杂一点,却无法按简单的Z向排序建立确定的深度优先表,以确定每一个多边形的优先级,如图7-16(b)所示 。,画家算法,交叉覆盖和循环覆盖多边形的优

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

最新文档


当前位置:首页 > 高等教育 > 大学课件

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