[工学]第8章 消隐问题.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第8章 消隐问题

《图形学与虚拟环境》 郑州大学信息工程学院 赵新灿 8.3 消隐算法 一、后向面判别 快速简单地判别多面体后向面(back face)的物空间算法基于前-后测试的基础上。 设点(x,y,z)满足: Ax+By+Cz+D0 则该点在多边形的后面。 多边形面的法向量为N,Vview为从相机位置出发的观察向量。 则当: Vview?N0 该多边形为后向面 若观察向量平行于Z轴,则平面法向量C满足C0,则该多边形为一后向面。无法观察C=0的所有多边形面,则C≤0即可判断其为后向面。 三、A缓存算法 深度缓存算法的一个缺点是:在每个像素点只能找到一个可见面,即它只能处理非透明表面,而无法处理多个表面的累计强度值。 A缓存(A-buffer)算法是深度缓存算法的延伸,这种深度缓存的扩充是一种反走样、区域平均、可见性检测方法。该过程的缓存区域为累计缓存(accumulation buffer),因为它除了深度值外还用于存储各种表面数据。A缓存算法对深度缓存进行了扩充,使其每一位置均对应于一个表面链表。因此,不仅可以考虑各像素点处多个表面的强度值,还可以对对象的边界进行反走样处理。 A缓存中每个单元包含两个域: 深度域---存储一个正的或负的实数 强度域---存储表面的强度信息或指针值 算法描述 这个像空间的隐面消除算法沿各扫描线计算并比较场景的深度值。逐条处理各条扫描线时,首先判别与其相交的所有表面的可见性,然后计算各重叠表面的深度值以找到离观察平面最近的表面。一旦确定了某像素点所对应的可见面,可以得到该点的强度值,并将其置入帧缓存。 为了加速查找与扫描线相交的表面,可以在处理时建立一张活化边表。该表仅包含与当前扫描线相交的边,并将它们按x升序排列。 深度排序(depth-sorting)算法同时运用物空间与像空间操作,以实现以下基本功能: (1)将表面按深度递减方向排序; (2)由深度最大的表面开始,逐个对表面进行扫描转换; 排序操作既可在像空间和也可在物空间完成,而多边形面的扫描转换仅在像空间完成。 按深度在帧缓存上绘制多边形面可以分几步进行: 假定沿负Z轴方向观察,表面按它们Z坐标的最低值排序,深度最大的面S需要与其他表面进行比较,以确定是否在深度方向上存在重叠,若没有重叠,则对S进行扫描转换。 可对与S在深度上有重叠的所有表面进行以下测试,只要其中任意一项成立,则无需重新排序。测试按难度递增顺序排列: (1)两表面在xy平面上投影的包围矩形无重叠; (2)相对于观察位置,面S完全位于重叠表面之后; (3)相对于观察位置,重叠表面完全位于面S之前; (4)两表面在观察平面上的投影无重叠; 如果对于某一重叠表面,所有四项测试均不成立,则需要在有序表中调换S和S’的顺序。 六、BSP树算法 BSP树算法是一种判别对象可见性的有效算法。该算法特别适用于场景中对象位置固定不变,仅视点移动的情况。 其主要操作是在每次分割空间时,判别该表面相对于视点与分割平面的位置关系,即位于其前面还是后面。 七、区域细分算法/Warnock 算法 area-subdivision method 多边形表面与观察平面可能关系 包围表面---完全包含该区域的表面; 重叠表面---部分位于该区域内,部分位于该区域外; 内含表面---完全在该区域内的表面; 分离表面---完全在该区域外的表面; 区域终止分割条件 该区域没有内含、重叠或包围表面(所有表面均为区域的分离表面) 该区域只有一个内含、重叠表面或包围表面; 该区域有一个在其边界内遮挡了其他所有表面的包围表面; 八叉树算法 当按照八叉树表示来描述观察体时,通常按由前往后的顺序将八叉树节点映射到观察体表面,从而消除隐藏面。 空间区域的前部(相对于视点)为体元:0,1,2,3。体元的前表面均可见,这些体元的后面和后部体元(4,5,6,7)都可能被前部的表面所遮挡。 实际上是对八叉树的深度优先遍历。 可见性算法的比较 如果场景中的表面沿视线分布较广从而在深度上重叠较少,则深度排序或BSP树算法的效率较高; 扫描线算法对有较少面的场景有较高的效率; 对几千个面以上的场景,深度缓存算法或八叉树效果最好; 深度缓存算法的处理时间比较稳定,与场景中的面的数量无关,对于简单场景低性能,对于复杂场景高效能。 八叉树方法时,可见性检测处理快速而简单,另一个优点是存储了表面几何以外的信息。 8.4 曲面的消隐 曲面网格线的消隐 设显示器水平方向有M个象素 建立 Y

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档