计算机图形学_第十三章_隐藏面的消除.pptVIP

计算机图形学_第十三章_隐藏面的消除.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学_第十三章_隐藏面的消除

Lecture 13 隐藏面的消除 概述 在生成具有真实感的景物时,要考虑的一个重要问题是如何由选定的视向把画面的不可见部分消去,即隐藏线及隐藏面的消除问题。目前,存在解决此问题的若干方法,并建立了若干有效的消隐算法。 消隐算法及其分类 人不能一眼看到一个三维物体的全部表面。从一个视点去观察一个三维物体时,必然只能看到该物体表面上的部分点、线、面,而其余部分则被这些可见部分遮挡住。如果观察的是若干个三维物体,则物体之间还可能彼此遮挡而部分不可见。 消隐算法及其分类 按照操作对象的不同表达,消隐算法可以分为两大类 对象空间方法(Object Space Methods) 图像空间方法(Image Space Methods) 对象空间方法和图像空间方法 对象空间是对象三维空间,即对象被定义时所处的坐标空间。 对象空间方法是对要显示的各个对象及对象的各个部分进行相互比较,分析对象的三维特性之间的关系,以确定不可见的表面或者线条的方法。 图像空间是对象投影后所在的二维空间,即设备坐标系 图像空间方法是将对象投影后分解为像素,按照一定的规律,比较像素之间的深度(z)值,从而确定其是否可见的方法。 消隐算法及其分类 虽然各种消隐方法具体的实现方法不同,但这些方法中大都采用分类及连贯两种基本方法改进算法效率。 分类方法主要用于深度比较,即按照景物中各个线、面、体与取景平面的距离分类,以决定取舍。 连贯方法是指利用显示景物具有某些相关特性,可以用来简化计算。 消隐算法及其分类 从消隐对象角度来看,消隐算法可分为两类:线消隐和面消隐。 线消隐的消隐对象是物体上的边,消除的是物体上不可见的边。 面消隐的消隐对象是物体上的面,消除的是物体上不可见的面。 画家算法 画家算法是把对象空间方法与图像空间方法结合在一起来消除隐藏面的方法。 画家算法的原理: 先把屏幕置成背景色,再把物体的各个面按其离视点的远近进行排序,离视点远者在表头,离视点近者在表尾,排序结果存在一张深度优先级表中。 然后按照从表头到表尾的顺序逐个绘制各个面。由于后显示的图形取代先显示的画面,而后显示的图形所代表的面离视点更近,所以由远及近的绘制各面,就相当于消除隐藏面。 该算法习惯上称为画家算法或深度排序算法。 多边形的画家算法 (1)以每一多边形的zmin作为排序关键码,建立初步的深度排序表,表中第一个多边形是具有最小z值的多边形,记为P。设视点位于z轴方向的无穷远处,则P为离视点最远的多边形,表中第二个多边形标为Q。 (2)检查表中每个多边形与P的关系。分为3种关系: 多边形的画家算法 a. 多边形的画家算法 b. 多边形的画家算法 c.所有测试失败: 必须对两个多边形在Oxy平面上的投影作求交运算。计算时不必具体求出重叠部分,在交点处进行深度比较,只要能判断出前后顺序即可。 深度缓冲算法 Z缓冲区(Z-Buffer)算法。在这个算法里,不仅需要有帧缓存来存放每个像素的颜色值,还需要一个深度缓存来存放每个像素的深度值。 深度缓冲算法 Z缓冲器的深度值越大,说明该点越接近视点。 在把显示对象的每个面上每一点的属性(颜色或灰度)值填入帧缓冲器相应单元前,要把这点的z坐标值和Z缓冲器中相应单元的值进行比较。只有前者大于后者时才改变帧缓冲器的那一单元的值,同时Z缓冲器中相应单元的值也要改成这点的z坐标值。 深度缓冲算法描述 Z-Buffer算法() { 帧缓存全置为背景色 深度缓存全置为最小z值 for (每一个多边形) {扫描转换该多边形 for (该多边形所覆盖的每个像素(x,y) ) { 计算该多边形在该像素的深度值d(x,y); if (d(x,y)大于Z缓存在(x,y)的值) { 把d(x,y)存入Z缓存中(x,y)处 把多边形在(x,y)处的颜色值存入帧缓存的(x,y)处 } } } 深度缓冲算法 该算法的最大优点在于简单。它可轻而易举地处理隐藏面以及显示复杂曲面之间的交线。画面可以任意复杂。由于画面元素可按任意次序写入帧缓冲器和Z缓冲器,故无需按深度优先级排序,可省去深度排序时间。 扫描线算法 如果只对一条扫描线进行Z缓冲器算法,则可以得到扫描线Z缓冲器算法 。 扫描线Z缓冲器算法做了两点改进。 ①将整个绘图窗口内的消隐问题分解到一条条扫描线上解决,使所需的Z缓冲器大大减少。

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档