计算机图形学第八章.ppt
《计算机图形学第八章.ppt》由会员分享,可在线阅读,更多相关《计算机图形学第八章.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章 消消 隐隐 技技 术术 本本 章章 重重 点点1.理解并掌握消隐的基本概念、消隐算法中 常用的处理技术及提高消隐算法效率的常 用方法。2.掌握基本的消隐算法。难点:难点:消隐算法的理解和掌握8.1 8.1 基本概念基本概念一.为什么要消隐为什么要消隐 因为计算机图形处理的过程中,不会自动消去隐藏部分,相反会将所有的线和面都显示出来。问题:对于线画图形会出现多义性。对于光栅扫描着色的面图形则会导致图形错误。要增强图形的真实感必须进行消隐处理。二二.消隐的分类消隐的分类 1.消除隐藏线 对于采用物体的棱线或轮廓线表示的线画图形,应消去物体本身看不见的棱线和轮廓线部分,以及因物体间的互
2、相遮挡而被隐藏的棱线和轮廓线。2.消除隐藏面 对于采用光栅扫描着色方法(即采用物体表面不同的明暗度)绘制的图形,应消除物体上看不见的面以及因物体间的互相遮挡而被隐藏的面。与此相对应,消隐的算法也可分为两种:第一种方法第一种方法是以场景中的物体为处理单元,将一个物体与其余的 k1 个物体逐一比较,仅显示它可见的表面以达到消隐的目的。此类算法通常用于消除隐藏线消除隐藏线。假定场景中有 k 个物体,平均每个物体的表面由 h 个多边形构成,其计算复杂度为 O(kh)2)。算法描述如下:for(场景中的每一个物体)将该物体与场景中的其它物体进行比较,确定其表面的可 见部分;显示该物体表面的可见部分;第二
3、种方法第二种方法是以窗口内的每个像素为处理单元,确定在每一个像素处,场景中的物体哪一个距离观察点最近(可见的),从而用它的颜色来显示该像素。此类算法通常用于消除隐藏面消除隐藏面。若显示区域中有 mn 个像素,则其计算复杂度为O(mnkh)。算法描述如下:for(窗口内的每一个像素)确定距观察点最近的物体,以该物体表面的颜色来显示像素;三.消隐算法中常用的处理技术 1.排序 确定物体间遮挡关系的要素:视点位置 视线方向 按观察方向上离视点(投影参考点)的远近(通常用 z 值来表示)排序。2.测试 用以判断点与面、线与面、面与面之间的关系。u(x)v(y)n(z)视点z 值包含测试:测试空间点的投
4、影是否在某个空间多边形的投影内,若在,则可能存在遮挡关系;若不在,则不存在遮挡关系。测试方法:从空间点的投影开始向与 y 轴平行的方向作射线,计算该射线与空间多边形的投影的交点个数交点个数,若为奇数奇数,则点的投影在多边形的投影内;若为偶数偶数,则点的投影不在多边形的投影内。xy特殊情况左闭右开重叠测试:测试两个空间多边形的投影是否重叠,若重叠,则可能存在遮挡关系;若不重叠,则不存在遮挡关系。测试方法:用包围框方法来测试。四.提高消隐算法效率的常用方法 1.利用相关性(连贯性)物体的相关性物体的相关性:若物体 A 与物体 B 是完全相互分离的,消隐时只需比较 A、B 两物体之间的遮挡关系,而不
5、需对其表面多边形逐一进行测试。面的相关性:面的相关性:一个面内的各种属性值(坐标值、灰度值等)一般都是缓慢变化的,可采用简单增量方式进行计算。区域相关性:区域相关性:一个区域是指屏幕上一组相邻的像素,它们通常属于同一个可见面。区域相关性表现在一条扫描线上时,即为扫描线上的每个区间内只有一个面可见。扫描线相关性:扫描线相关性:在相邻的两条扫描线上,可见面的分布情况相似。深度相关性:深度相关性:物体的同一表面上的相邻部分深度是相近的。2.包围盒技术 用于对物体间的某些关系进行比较和测试,从而可避免盲目的求交运算,减少计算量,提高效率。二维图形-包围框(重叠测试);三维物体-包围盒、包围球。3.背面
6、剔除 一个平面多面体的表面由若干个平面多边形构成,若一个多边形表面的外法线方向与投影方向(观察方向)的夹角为钝角,则该面为前向面;若其夹角为锐角,则为后向面或背面。4.活化表技术(active list)设置活化表,用于存放与当前的处理相关的信息,从而可最大限度地缩小处理范围,提高算法的效率。投影方向ABCD8.2 8.2 深度缓存算法深度缓存算法 (Z(ZBufferBuffer算法算法)1.ZBuffer 用于存放与屏幕上像素点对应的物体上点的深度值。xyz视线方向视点位置屏幕像素F BufferZBuffer投影面基本思路:对于显示屏上的每一个象素,记录下位于该象素内最靠近观察者的那个景
7、物面的深度坐标,同时相应记录下用来显示该景物面的颜色(或灰度),那么所有记录下的这些象素所对应的颜色就可以形成最后要输出的图形。Z-Buffer中保存与屏幕上象素点对应的物体上点的深度值,F-Buffer中存放对应象素点的颜色(或灰度)。2.算法 初始化:ZB(i,j)=机器最大值;FB(i,j)=背景色。for(j=1;j=n;j+)/*共有 n 根扫描线*/for(i=1;i=m;i+)/*每根扫描线上有 m 个像素点*/for(k=1;k=p;k+)/*共有 p 个多边形*/判断像素点(i,j)是否在多边形Fk在投影面上的投影内;若(i,j)在多边形Fk的投影内,计算多边形Fk上对应于
8、像素点(i,j)处的深度值 Zi,j;if (Zi,j ZB(i,j)ZB(i,j)=Zi,j ;FB(i,j)=多边形Fk的颜色 else 不作处理 3.算法实现中的关键问题 判断点(i,j)是否在多边形Fk在投影面上的投影内 解决办法:采用包含测试。计算多边形Fk在点(i,j)处的深度值 Zi,j 若多边形Fk的平面方程为:ax+by+cz+d=0 若 c 0,则 ai+bj+d c 若 c=0,则多边形Fk的法线方向与 Z 轴垂直,Fk在投影面上的投影为一条直线,可不予考虑。Zi,j=4.算法的特点 简单 不需要将所有的多边形按离视点的远近排序,其算法的复 杂度只与多边形的个数成正比。需
9、要有一个较大容量的 ZBuffer。5.算法的改进 采用包围框技术,提高算法的效率。采用硬件 ZBuffer 来实现。6.算法的进一步改进 采用分区处理方法。利用相关性。8.3 8.3 扫描线算法扫描线算法 1.基本思路 只需考虑与多边形投影相交的扫描线。对每条扫描线,只需处理与多边形投影中某二条边的交点 中间的部分(边对边对)。对各多边形逐个处理,方法同ZBuffer算法。xyo扫描线基本方法:对每一条扫描线来说,把相应的帧缓存单元置成背景色,在Z缓冲器中存放机器最大值。对每个多边形检查它在投影面上的投影是否和当前的扫描线相交,若不相交,则不考虑该多边形。若相交,则扫描线和多边形边界的交点一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 第八
限制150内