《计算机图形学》08消隐技术
计算机图形学消隐算法

图9-1 区间扫描线算法原理
算法首先为各多边形建立一张边表和一张多边形表。边表需包含的内容有:进行消隐的场景中所有线段的端点坐标、线段斜率的倒数、指向多边形表中对应多边形的指针。多边形表需包含的内容有:各多边形的平面方程系数、各多边形的颜色值、指向边表的指针。在消隐算法执行的过程中,从边表和多边形表中提取信息,构造一张有效边表。有效边表中包含与当前扫描线相交的边,按x的升序进行排列。排列后这些边将扫描线分成一个个的子区间[xi, xi+1],如图9-2,可将扫描线上的子区间分为三种类型:
递归进行上述空间剖分和景物分类过程,直至每一子空间中所含景物少于给定的阈值为止,可表示成一棵BSP树,图9-14(b)示出了图9-14(a)的分割过程和形成的分类景物。对于由多边形组成的场景,常选择与某一多边形重合的平面作为分割平面。一旦构造完BSP树,即可依据当前视点所在的位置,对场景中每一分割平面所生成的两个子空间进行分类,其中包含视点的子空间标记为“front”,位于分割平面另一侧的子空间标记为“back”。然后,递归搜索场景的BSP树,优先绘制标识为“back”的子空间中所含景物。
c. 判别B上平面A与B的重叠平面是否完全位于A之前,若是,将A按先进先出原则加入N中,转(2);否则继续。
d. 判别多边形A和B在xoy平面上的投影有无重叠,若无重叠,则A、B在队列中的顺序无关紧要,将A按先进先出原则加入N中,转(2);否则在A与B投影的重叠区域中任取一点,分别计算出A、B在该点处的z值,若A的z值小,说明A距视点远,优先级低,将A按先进先出原则加入N中,转(2);若A的z值大,则交换A和B的关系,即将B看作是当前处理对象,转(3)进行M中其它多边形的判别。
深度缓存器算法最大的优点是算法原理简单,不过算法的复杂度为O(N),N为物体表面采样点的数目。另一优点是便于硬件实现。现在许多中高档的图形工作站上都配置有硬件实现的Z-buffer算法,以便于图形的快速生成和实时显示。
消隐算法

3.消隐中主要考虑的基本问题
• (2)相关性correlativity(连贯性) • 所谓相关性问题是指形体之间或一个 形体的各部分之间引起隐藏现象改变 的相互关系。即场景的可见性在局部 区域内保持不变的倾向 • 通常利用连贯性,来提高排序过程的 效率。
连贯性问题:
• 扫描线的连贯性:
相邻两条扫描线上,可见面的分布情况相似。
一般平面物体的消隐算法 (凹多面体)
• 关于潜在可见面: • 对于单个凸多面体,它的表面不是全部 可见,就是全部不可见。其棱线的可见 性也只有这两种状况。 • 对于凹多面体则不同,它的棱线除了全 部可见、全部不可见外,还有部分可见、 部分不可见的情况 • 如根据外法线向量与视线向量夹角关系 判断得出的可见边9、10、11、12构成的 平面上,9—10全部可见;10—11全部不 可见,而11—12则部分可见 • 因此对凹多面体上经判断后得出的可见 面只能看作为潜在可见面,它上面的每 一条棱线最终的可见情况,还需作进一 步的判定。
• 深度连贯性:
同一表面上的相邻部分深度是相近的,而占据屏幕上同 一区域的不同表面的深度不同。这样在判断表面间的遮挡关系 时,只需取其上一点计算出深度值,比较该深度值即可得到结 果。
• 区域连贯性:区域指屏幕上一组相邻的像素,它们通常为同
一个可见面所占据,可见性相同。区域连贯性表现在一条扫描 线上即为扫描线上的每个区间内只有一个面可见。
• 由向量N和V的数量积得:
N V N V cosθ N V cosθ N V
, 其正、负号与N V一致
(5)表面可见性判断
• 显然表面可见性取决于表 面外法线向量N与视线向 量V之间的夹角θ • 若为0°≤θ≤90°,则该表面 可见 • 若为90°<θ≤180°,则该 表面不可见 • 可得表面可见性判断依据 为: N V N V cosθ • 若N·V≥0,则该表面可见 • 若N· V<0,则该表面不可见 N V cosθ N V
08 消隐计算

8.2 Z 缓冲区算法Z 缓冲区算法又称为深度缓冲区算法,它是所有图像空间消隐算法中原理最简单的一种,该算法最早是由Catmull 在1975年提出的,适用于正投影时的消隐处理。
该算法所需要的存储容量较大,既需要有帧缓冲器来存放每个像素的颜色值,还需要有深度缓冲器来存放画面上每一像素对应的可见表面采样点的深度值(Z 坐标值)。
这两个缓冲器的大小和屏幕分辨率有关,如图8-3所示,图形消隐过程就是给帧缓存器和深度缓存器中相应单元填值的过程。
图8-3 显示屏幕、帧缓冲器和深度缓冲器对应关系图 图8-4 Z 缓冲区算法原理 如图8-4所示,假设x O y 面为投影面(屏幕坐标系),由于通常选择Z 轴的负方向为观察方向,因此算法沿着观察系统的Z 轴来计算各景物距离观察平面的深度(Z 坐标值),所以该算法称作Z 缓冲区(Z-buffer )算法。
下面结合图8-3和图8-4说明一下Z 缓冲区算法的原理。
(1)初始化。
首先将帧缓冲器中全部存放背景色,深度缓冲器中所有的单元初始值设置为最小值。
(2)在把物体表面相应的多边形扫描转换成帧缓冲器中的信息之后,对于多边形上的每一个采样点(x,y )进行以下几步处理:①计算采采样点(x,y)的深度值z(x,y)。
②如果z(x,y)大于z 缓冲器中在(x,y)处的值,说明多边形(x,y)处的点比帧缓冲器中(x,y)处现在具有颜色的点更靠近观察者,因此要把z(x,y)存入z 缓冲器中的(x,y )处,再把多边形在z(x,y)c 处的颜色值存入帧缓冲器的(x,y )位置中。
举例来说,如图8-4所示,过屏幕上一点P 做平行于z 轴的射线,与物体表面相交于P 1点和P 2点,则P 1和P 2为物体表面上对象像素P 的点,且P 1和P 2的z 坐标值就是该点的深度值。
当先把P 1点的深度值和缓冲器中相应单元深度值(初始为最小值)进行比较时,由于P 1点的深度值大于深度缓冲器中的深度值,所以把P 1点的颜色值存入帧缓冲器相应的单元中,并把深度缓冲器中的值修改为P 1点的z 坐标值;当处理到P 2点时,将P 2点的z 坐标值和深度缓冲器中的值(P 1点的z 坐标值)进行比较,由于P 2点的z 坐标值大于深度缓冲器中的值,说明P 2点距离观察点更近,则将帧缓冲器中对应单元的值用P 2点的颜色值代替,并将深度缓冲器中对应单元的值替换为P 2点的z 坐标值。
计算机图形学——隐藏线和隐藏面的消除(消隐算法)

计算机图形学——隐藏线和隐藏⾯的消除(消隐算法)⼀、概述由于投影变换失去了深度信息,往往导致图形的⼆义性。
要消除⼆义性,就必须在绘制时消除被遮挡的不可见的线或⾯,习惯上称作消除隐藏线和隐藏⾯(或可见线判定、可见⾯判定),或简称为消隐。
经过消隐得到的投影图称为物体的真实感图形。
下⾯这个图就很好体现了这种⼆义性。
消隐后的效果图:消隐算法的分类所有隐藏⾯消隐算法必须确定:在沿透视投影的投影中⼼或沿平⾏投影的投影⽅向看过去哪些边或⾯是可见的两种基本算法1、以构成图像的每⼀个像素为处理单元,对场景中的所有表⾯,确定相对于观察点是可见的表⾯,⽤该表⾯的颜⾊填充该像素.适于⾯消隐。
算法步骤:a.在和投影点到像素连线相交的表⾯中,找到离观察点最近的表⾯;b.⽤该表⾯上交点处的颜⾊填充该像素;2、以三维场景中的物体对象为处理单元,在所有对象之间进⾏⽐较,除去完全不可见的物体和物体上不可见的部分.适于⾯消隐也适于线消隐。
算法步骤:a.判定场景中的所有可见表⾯;b.⽤可见表⾯的颜⾊填充相应的像素以构成图形;提醒注意1.假定构成物体的⾯不能相互贯穿,也不能有循环遮挡的情况。
2.假定投影平⾯是oxy平⾯,投影⽅向为z轴的负⽅向。
如果构成物体的⾯不满⾜该假定,可以把它们剖分成互不贯穿和不循环遮挡的情况。
例如,⽤图b中的虚线便可把原来循环遮挡的三个平⾯,分割成不存在循环遮挡的四个⾯。
⼆、可见⾯判断的有效技术1、边界盒指能够包含该物体的⼀个⼏何形状(如矩形/圆/长⽅体等),该形状有较简单的边界。
边界盒技术⽤于判断两条直线是否相交。
进⼀步简化判断2、后向⾯消除(Back-face Removal)思路:把显然不可见的⾯去掉,减少消隐过程中的直线求交数⽬如何判断:根据定义寻找外(或内)法向,若外法向背离观察者,或内法向指向观察者,则该⾯为后向⾯。
注意:如果多边形是凸的,则可只取⼀个三⾓形计算有向⾯积sp。
如果多边形不是凸的,只取⼀个三⾓形计算有向⾯积sp可能会出现错误,即F所在的⾯为前向⾯也可能出现sp≥0的情况,因此,需按上式计算多边形F的有向⾯积。
计算机图形学-消隐

计算机图形学 施智平
shizhiping@
第八章
图形的数据结构 消隐算法分类 隐线算法
隐面算法
图形的数据结构
W.K.Giloi在其著作 Interactive Computer Graphics中提出: Computer Graphics=Data Structure +Graphics Algorithms+Language
N z EFx EG y EFy EGx
外法矢量表示为: N N xiቤተ መጻሕፍቲ ባይዱ N y j N z k
给定视点位置球面坐标表示为:
( R sin cos , R sin sin , R cos ) 0 2 其中:R为视径, 0
隐线算法
线框模型消隐一般在物空间中进行 物空间消隐算法是根据边界线的可见性检测条 件,判断哪些边界线是可见的,哪些边界线是
不可见的,在屏幕上只绘制可见边界线。
凸多面体消隐算法
凸多面体消隐是最简单和最基本的情形 凸多面体的性质: 连接立体上不同表面的任意两点的直线完全 位于该凸多面体之内
由凸多边形构成,其表面要么完全可见,要 么完全不可见
凸多面体消隐算法的关键是给出测试其表面边 界线可见性的判别式
对于凸多面体的任一个面,其外法矢量和视矢 量的夹角θ可进行可见性检测 θ < 90°时,可见; θ > 90°时,不可见
D 法向向量N
<90°
F
E N
可见
>90°
视线向量V
E7 E8
E9 E10 E11 E12
P7 P8
P1 P2 P3 P4
计算机图形学消隐算法的分析与实现

本科毕业设计题目:计算机图形学消隐算法的分析与实现姓名院系信息科学与工程学院专业计算机科学与技术年级学号指导教师2011 年5月10 日毕业设计选题报告毕业设计任务下达书学院信息科学与工程学院专业计算机科学与技术学号****** 姓名*****一、毕业设计题目计算机图形学消隐算法的分析与实现二、主要内容本设计是在对凸多面体的消隐算法、以及Z—Buffer算法进行系统分析以后,应用Visual C++设计程序语言,从而实现对三维立体图形的消隐处理,以得到物体的只是图形。
三、具体要求(1)查找相关资料,理解Visual C++及其图形函数的理论知识;(2)根据设计内容主动分析整体并划分设计模块;(3)根据划分的设计模块独立完成实现各个功能的具体代码;(4)高度重视论文的撰写并调试实现整体功能,主动和指导老师沟通;(5)认真听取指导老师的意见,遵循相关的规定,以达到设计最终效果。
四、主要参考文献[1]陈元琰.张晓竞计算机图形学实用技术[M]. 北京:科学出版社,2000[2]范幸义. 计算机图形学(第三版)[M]. 重庆:重庆大学出版社,2008.2.[3]张全伙,张剑达.计算机图形学[M].北京:机械工业出版社,2003.8.[4](美)Peter Shirley计算机图形学(第二版)[M].北京:人民邮电出版社,2007.6.五、进程安排六、毕业设计任务下达书于年月日发出。
毕业设计应于年月日前完成后交指导教师,由指导教师评阅后提交毕业设计答辩委员会。
七、毕业设计任务下达书一式两份,一份给学生,一份留学院(系)存档。
指导教师:签发于20 年月日分管院长:签发于20 年月日毕业设计开题报告院(系):信息科学与工程学院学号:***注:1、论文(设计)总成绩=指导教师评定成绩(50%)+评阅人评定成绩(20%)+答辩成绩(30%)2、将总成绩由百分制转换为五级制,填入本表相应位置。
目录1. 前言 (3)2. 开发环境和工具 (4)3. 消隐算法的描述 (5)3.1消隐算法的提出 (5)3.2消隐算法的分类 (7)4. 消隐算法的数学知识 (8)4.1向量的叉积 (8)4.2线性代数 (8)4.2.1行列式 (8)4.2.2矩阵 (9)4.3三维坐标与二维坐标的转换 (10)5.几种常见的消隐算法分析与比较 (11)5.1凸多面体消隐处理 (11)5.2隐藏面的消除 (13)5.2.2 画家算法 (16)5.2.3 Z-buffer消隐算法 (19)5.3几种消隐算法的比较 (20)6. 结束语 (21)参考文献 (21)致谢 (22)附录:部分模块代码 (22)计算机图形学消隐算法的分析与实现摘要:用计算机生成具有真实感的三维物体图形,是计算机图形学的一个重要研究内容,而要实现这一过程就不得不提到消隐算法。
计算机图形学-消隐

共四十四页
1. 消除 自隐线、面 (xiāochú)
对于多面体的任一个面,可以根据其外法向
E
n和视矢量E的夹角θ来进行可见性检测。
法向n:规定每个多边形的法向都是指向物 体外部(wàibù)的。
前向面: θ∈(-90°,90°)时,表示该表 E 面可见,称为前向面。
后向面: θ∈[90°, -90°]时,表示该表 面不可见,称为后向面 。
θn
n 前向面 n
后向面
剔除依据:后向面总是被前向面所遮挡,从而不可见。不会 由于后向面的遮挡,而使别的棱成为不可见的。因此计算时, 可以把这些后向面全部去掉,这并不影响消隐结果。
17
共四十四页
1. 消除 自隐线、面 (xiāochú)
图中的JFAE、HCBG和 DEABC所在(suǒzài)的面均 为后向面。其它为前向 J
也称表优先级算法。
30
共四十四页
1. 画家 算法 (huàjiā)
关键:如何对场景中的物体表面按深度(远近(yuǎnjìn))排序,建立深 度优先级表?
先讨论在深度优先级排序中两个多边形P和Q之间的关系。多边形可以 按其最大或最小z值徘序,不妨假设按多边形的最大z值进行预排序,即
zmax(P)>zmax(Q)。
消隐(xiāo yǐn)
1
共四十四页
消隐(xiāo yǐn)
1 概述(ɡài shù) 2 线消隐 3 提高消隐算法的效率 4 面消隐
2
共四十四页
1 概述(ɡài shù)
什么叫做“消隐”?为什么要进行(jìnxíng)“消隐”?
将三维场景绘制在计算机二维显示屏上必须经过投影变换,投影 变换将三维信息变换到二维平面上,这个过程中深度信息被丢失, 生成的图形往往具有二义性。
计算机图形学消隐

第7章 消 隐
第7章 消 隐
• • • • • • 消隐的概述 多面体的消隐算法 深度缓冲器算法 扫描线算法 画家算法 光线追踪算法(Ray Casting)
消隐概述
• 什么是消隐? • 消隐的分类有哪些? • 消隐的基本原则有哪些?
消隐的概述
• 绘制线框图时应消除隐藏线,绘制真实感图 形时应消除隐藏面。 • 未经消除隐藏线和隐藏面的立体图往往存在
图7-9 任意多面体的隐藏情况
深度缓冲器算法
• • • • 算法基本思想是什么? 算法是怎样描述的? 深度值如何计算? 深度缓冲器算法特点是什么?
多面体的消隐算法
• 算法实现的一般步骤 • 根据表面的数据结构,取顶点数据,计算表面 的外法线矢量。 • 计算外法线在投影方向上的分量的值。 • 根据分量的值判断表面的可见性。 • 若表面可见画出该表面,否则处理下一个表面。
多面体的消隐算法
• 任意多面体的消隐 • 对于任意平面立体必须寻求适当的消隐算法。 因为任意平面立体则不同,除了有全部可见和 全部不可见的棱边外,还有部分可见的棱边如 图7-9 。
消隐的概述
• 图像空间消隐算法 图像空间是物体显示时所在的屏幕坐标空 间。 • 算法描述如下: for(窗口中的每一个像素) { 确定距视点最近的物体,以该物体表面的 颜色来显示像素; }
消隐的概述
• 消隐基本原则
―排序
排序的目的主要是判别消隐对象的体、面、边和点与观察 点几何距离的远近。如果一个物体离观察点越远,越有可能被 离观察点近的物体所遮挡,如图7-4所示。但这不是绝对的,例 如,不在同一观察线方向的两个物体不会有遮挡关系,如图7-5 所示。
• 凸多面体消隐的基本原理是什么 • 凸多面体消隐的算法思想是什么 • 任意多面体的消隐算法是什么
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A B
D
C
投影方向
其夹角为锐角,则为后向面或背面。
剔除依据: 物体表面是封闭的,背面总是被前向面所遮挡,从 而始终是不可见的。
4. 将透视投影转换成平行投影 消隐与透视关系密切,体现有: 1)消隐必须在投影之前完成; 2)物体之间的遮挡关系与投影中心(视点)的选 取有关; 3)物体之间的遮挡关系与投影方式有关
ai + bj + d c
若 c = 0,则多边形Fk的法线方向与 Z 轴垂直, Fk在投影面
上的投影为一条直线,可不予考虑。
4. 算法的特点 ① 简单 不需要将所有的多边形按离视点的远近排序,其算法的复
杂度只与多边形的个数成正比。
② 需要有一个较大容量的 Z—Buffer 。
5. 算法的改进
① 采用包围框技术,提高算法的效率。 ② 采用硬件 Z—Buffer 来实现。
视点位置
视线方向
z值
视点
按观察方向上离视点(投影参考点) 的远近(通常用 z 值来表示)排序。
u(x)
2. 测试 用以判断点与面、线与面、面与面之间的关系。
包含测试: 测试空间点的投影是否在某个空间多边形的投影内,若在, 则可能存在遮挡关系;若不在,则不存在遮挡关系。 测试方法: 从空间点的投影开始向与 -y 轴平行的方向作射线,计算 该射线与空间多边形的投影的交点个数,若为奇数,则点的投
假定场景中有 k 个物体,平均每个物体的表面由 h 个多 边形构成,其计算复杂度为 O((kh)2)。
算法描述如下:
for (场景中的每一个物体) { 将该物体与场景中的其它物体进行比较,确定其表面的可 见部分; 显示该物体表面的可见部分;
}
第二种方法是以窗口内的每个像素为处理单元,确定在每
一个像素处,场景中的物体哪一个距离观察点最近(可见
第八章
消隐技术
8.1 基本概念
一.为什么要消隐 因为计算机图形处理的过程中,不会自动消去隐藏部分,
相反会将所有的线和面都显示出来。
问题: ① 对于线画图形会出现多义性。
对于光栅扫描着色的面图形则会导致图形错误。
② 要增强图形的真实感必须进行消隐处理。
二. 消隐的分类 1.消除隐藏线 对于采用物体的棱线或轮廓线表示的线画图形,应消去物
目的求交运算,减少计算量,提高效率。
一个好的包围盒要具有两个条件:
(1)包围盒充分紧密包围着形体; (2)对其的测试比较简单。 二维图形 ----- 包围框(重叠测试); 三维物体 ----- 包围盒、包围球。
3. 背面剔除 一个平面多面体的表面由若干个 平面多边形构成,若一个多边形表面 的外法线方向与投影方向(观察方向) 的夹角为钝角,则该面为前向面;若
for ( i=1; i<= m ; i+点 */
for ( k=1; k<=p ; k++ ) /* 共有 p 个多边形 */ { 判断像素点( i, j )是否在多边形Fk在投影面上的投影内; 若( i, j )在多边形Fk的投影内,计算多边形Fk上对应于 像素点( i, j )处的深度值 Zi, j ;
影在多边形的投影内;若为偶数,则点的投影不在多边形的投
影内。 y 特殊情况 左闭右开
x
重叠测试: 测试两个空间多边形的投影是否重叠,若重叠,则可能存 在遮挡关系;若不重叠,则不存在遮挡关系。
测试方法:
四. 提高消隐算法效率的常用方法 利用连贯性 包围盒技术 背面剔除
将透视投影转换成平行投影
空间分割技术
复杂度比较
物体分层表示
1. 利用相关性(连贯性) 物体的相关性:若物体 A 与物体 B 是完全相互分离的,消 隐时只需比较 A 、 B 两物体之间的遮挡关系,而不需对其表面 多边形逐一进行测试。 面的相关性:一个面内的各种属性值(坐标值、灰度值等) 一般都是缓慢变化的,可采用简单增量方式进行计算。
6. 算法的进一步改进
① 采用分区处理方法。 ② 利用相关性。
8.3 列表优先算法(画家算法)
基本思路:根据物体上各个面(多边形)距离视点的远 近进行排序,建立一张优先级表。约定距离视点近的优先级高, 距离视点远的优先级低。 生成图象时,优先级低的多边形先画,优先级高的多边形
后画。
关键问题:在深度方向上对多边形进行正确的排序。
体本身看不见的棱线和轮廓线部分,以及因物体间的互相遮挡
而被隐藏的棱线和轮廓线。 2.消除隐藏面 对于采用光栅扫描着色方法(即采用物体表面不同的明暗 度)绘制的图形,应消除物体上看不见的面以及因物体间的互
相遮挡而被隐藏的面。
与此相对应,消隐的算法也可分为两种:
第一种方法是以场景中的物体为处理单元,将一个物体与 其余的 k-1 个物体逐一比较,仅显示它可见的表面以达到消 隐的目的。此类算法通常用于消除隐藏线。
者的子节点做进一步测试。
父节点之间的遮挡关系可以用它们之间的包围盒进行预测 试。
8.2 深度缓存算法 ( Z—buffer算法)
1. Z—Buffer 用于存放与屏幕上像素点对应的物体上点的深度值。 y
投影面
z
视线方向
不可见点 可见点
视点位置
x
屏幕像素
F — Buffer
Z—Buffer
2. 算法 初始化:ZB( i, j )=机器最大值 ;FB( i, j )=背景色。 for ( j=1; j<= n ; j++ ) /* 共有 n 根扫描线 */
5. 空间分割技术 依据:场景中的物体,它们的投影在投影平面上是否有重 叠部分?(是否存在相互遮挡的可能?)对于根本不存在相互
遮挡关系的物体,应避免这种不必要的测试。
方法:将投影平面上的窗口分成若干小区域;为每个小区
域建立相关物体表,表中物体的投影于该区域有相交部分;则
在小区域中判断那个物体可见时,只要对该区域的相关物体表 中的物体进行比较即可。
z
D A o C B
空中小三 角形面片
y
E
x o
y
分离面 P
x
8.4 光线投射算法
算法思路 将通过绘图窗口内每一个像素的投影线与 场景中的所有多边形求交。如果有交点,用深 度值最大的交点(最近的)所属的多边形的颜 色显示相应的像素;如果没有交点,说明没有 多边形的投影覆盖此像素,用背景色显示即可。
算法描述:
for ( v= 0;v<vmax;v++) for (u= 0; u<umax; u++) { 形成通过像素(u,v)的投影线; for (场景中每一个多边形) 将投影线与多边形求交; if (有交点) 以最近交点所属多边形的颜色显示像素(u,v) else 以背景色显示像素(u,v); }
6. 复杂度比较: 不妨假定每个小区域的相关物体表中平均有h个物体,场 景中有k个物体,由于物体在场景中的分布是分散的,显然h远 小于k。根据第二种消隐方法所述,其算法复杂度为O(h*h),远 小于O(k*k)。
7. 物体分层表示 表示形式:模型变换中的树形表示方式 原理:减少场景中物体的个数,从而降低算法复杂度。 方法: 将父节点所代表的物体看成子节点所代表物体的包 围盒,当两个父节点之间不存在遮挡关系时,就没有必要对两
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,则 Zi, j = —
区域相关性:一个区域是指屏幕上一组相邻的像素,它们
通常属于同一个可见面。区域相关性表现在一条扫描线上时,即 为扫描线上的每个区间内只有一个面可见。 扫描线相关性:在相邻的两条扫描线上,可见面的分布情 况相似。
深度相关性:物体的同一表面上的相邻部分深度是相近的。
2. 包围盒技术
用于对物体间的某些关系进行比较和测试,从而可避免盲
的),从而用它的颜色来显示该像素。此类算法通常用于消除 隐藏面。
若显示区域中有 m×n 个像素,则其计算复杂度为O(mnkh)。
算法描述如下:
for (窗口内的每一个像素) {确定距观察点最近的物体,以该物体表面的颜色来显示像素; }
三.消隐算法中常用的处理技术 1. 排序 确定物体间遮挡关系的要素: v(y) n(z)