第5讲 计算机图形学消隐算法
计算机图形学消隐算法

图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
计算机图形学——隐藏线和隐藏面的消除(消隐算法)

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

点与多边形的包含性检测: (1)射线法
P P1 P2 P3 P P1 P2
由被测点P处向 y = - 方向作射线 交点个数是奇数,则被测点在多边形内部。否则,偶数 表示在多边形外部。
若射线正好经过多边形的顶点 ,则采用“左开右闭”的原则来 实现。即:当射线与某条边的顶 点相交时,若边在射线的左侧, 交点有效,计数;若边在射线的 右侧,交点无效,不计数。 用射线法来判断一个点是否 在多边形内一是计算量大,二 是不稳定。原因是射线在经过 多边形顶点时,由于计算机本 身的误差(也许多了0.00001), 把本该无效的交点变成有效的 交点了。所以这种算法是不稳 定的。
上图所画的仅仅是一个简单的立方体,如果一个物体是由多 个形体所组成的,或者整个三维场景是由多个物体构成的,情 况就更为复杂了。 因此,要绘制出意义明确的、富有真实感的立体图形,首 先必须消去形体中的不可见部分,而只在图形中表现可见部 分。这就要去寻求解决显示三维物体的图形中消去不可见部 分的方法,也就是所谓的“消隐”问题。消隐包括消除“隐 藏线”和“隐藏面”两个问题。
消 隐
三维物体的显示和真实感图形是当今计算机图形学研究的 一个焦点。在二维显示设备上显示三维图像, 必须对三维图像 进行消隐处理, 通过消隐处理的物体才能很好的表现三维立体 效果, 但是这种物体明显缺乏真实感, 还需要对物体进行真实 感的处理, 这样才能逼真的显示物体。
主要讲述的内容:
消隐的分类,如何消除隐藏线、隐藏面,主要介绍以 下几个算法:
Z-Buffer算法() { 帧缓存全臵为背景色
深度缓存全臵为最小Z值(比如赋一个10-8次方)
for(每一个多边形)
{扫描转换该多边形
for(该多边形所覆盖的每个象素(x,y) )
5消隐面

5.1 可见面判断的有效技术
• 可见线( 可见线(面)的判断是一个计算量很大的工作。例如, 的判断是一个计算量很大的工作。例如, N个面的两两相交的工作量是 (N2)。减少这个工作 个面的两两相交的工作量是O( )。减少这个工作 个面的两两相交的工作量是 量是非常重要的事。 量是非常重要的事。 常用的技术有: 常用的技术有: – 边界盒 – 后向面消除 – 非垂直面投影转换成垂直投影
扫描线算法
• 设平面Ax+By+Cz+D=0. (x,y)处的深度是 z = [-Ax-By-D]/C • 首先计算各多边形的y的范围。 自上而下递归地计算多边形的 左边界y=mx+b的x坐标和z深度。
y y-1 x x′
x =y/m-b/m, x′ = (y-1)/m–b/m = x –1/m, z = [-Ax-By-D]/C, z′ = [-Ax′-B(y-1)-D]/C ′ ′ = [-A(x-1/m)-B(y-1)-D]/C = z+(A/m+B)/C. 当左边界是垂直边时, x′ = x, z′ = z + B/C.
5.4 z缓冲器算法和扫描线算法
• 对投影平面上每个像素所对应的表面深 度进行比较,显示较近的表面上的属性。 • 需要两个缓冲器:深度缓冲器(Z-缓冲器) 和刷新缓冲器,分别保存各像素所对应 的三维点的深度和像素属性。缺点是它 需要很大的存储空间。 • 优点是算法简单:首先,缓冲器初始化, 即初始化每个像素的深度和颜色。 其次,计算多边形面上各像素点的深度 值, 若距离投影面较近,则记下深度和 颜色。
opengl算法学习---消隐

opengl算法学习---消隐图形系统图形⽣成应⽤程序:顶点帧缓存:像素每个顶点与每个像素都要处理图形系统实现的两种策略基于对象空间基于图像空间图形绘制系统四阶段建模->⼏何处理->光栅化->⽚元处理建模:定义⼏何对象的顶点数据库⼏何处理:投影、图元装配、裁剪、着⾊作⽤于顶点数据光栅化:像素赋颜⾊扫描转换视⼝变换屏幕坐标⽚元处理⽚元赋颜⾊隐藏⾯消除纹理颜⾊消隐当将三维场景投影到⼆维平⾯的时候,需要确定哪些多边形是可见的,哪些是不可见的消隐:消除被遮挡的不可见的线或⾯未经消隐的图形存在的问题:杂乱,⼆义性后向⾯消除外法向:每个多边形指向物体外部的法向量前向⾯:外法向与视线⽅向夹⾓为钝⾓后向⾯:外法向与视线⽅向夹⾓为锐⾓Z-Buffer算法绘制物体时,每⼀个所⽣成像素的深度即z坐标,保存在⼀个缓冲区中,称为z缓冲区或深度缓冲区Z缓冲区中的单元与屏幕像素单元⼀⼀对应如果场景中另外⼀个物体也在同⼀个像素⽣成渲染结果,绘制系统就会⽐较⼆者的深度,保留距离视点较近的物体。
然后将这个所保留的深度保存到深度缓冲区中根据深度缓冲区可正确地实现较近的物体遮挡较远的物体帧缓冲器⼀保存各像素颜⾊值Z缓冲器⼀保存各像素处物体深度值z缓冲器中的单元与帧缓冲器中的单元⼀⼀对应算法思路当要显⽰某个点时,⾸先检查该点处的深度值是否⼤于该像素对应的深度值如果⼤于,说明当前点更靠近视点,⽤它的颜⾊替换像素原来的颜⾊否则说明当前像素处,当前点被前⾯所绘制的点遮挡,不可见,像素颜⾊值不改变伪代码1)初始化:depthBuffer(x,y)=最⼩值(最远深度)frameBuffer(x, y)=I背景2)消隐绘制:for(每⼀个多边形)for(该多边形所覆盖的每个像素(x, y))计算该多边形在该像素的深度值z(x, y);if(z(x, y)>depthBuffer(x, y)){depthBuffer(x, y)=z,frameBuffer(x, y)=I(x, y)}计算采样点(x, y)的深度z (x, y)假定多边形的平⾯⽅程为:Ax+By+Cz+D=Oo扫描线上所有后继点的深度值当处理下⼀条扫描线y=y-1时,该扫描线上与多边形相交的最左边(x最⼩)交点的X值可以利⽤上⼀条扫描线上的最左边的X值计算:深度信息利⽤中伪深度问题当深度值⽐较⼩时,深度⽐较常会产⽣错误当深度值⽐较⼩时,真实深度值上的⼀个⼩变化映射到伪深度值后变为极⼩的变化两个接近的深度值有可能会被映射为相同的伪深度值,这可能会在深度⽐较时导致错误因此需要使⽤更多的位来表⽰伪深度值24位或32位优缺点z缓冲器算法在像素级上以近物取代远物,与形体在屏幕上的出现顺序⽆关优点: 1)简单稳定,利于硬件实现2)不需要整个场景的⼏何数据缺点: 1)需要⼀个额外的z缓冲器2)在每个多边形占据的每个像素处都要计算深度值,计算量⼤扫描线Z-buffer算法Z缓冲器算法中所需要的z缓冲器容量较⼤,为克服这个缺点可以将整个绘图区域分割成若⼲个⼩区域按区域显⽰,这样z缓冲器的单元数只要等于⼀个区域内像素的个数就可以如果将⼩区域取成屏幕上的扫描线,就得到扫描线z缓冲器算法将窗⼝分割成扫描线画家算法画家⾸先绘制距离较远的场景,然后⽤绘制距离较近的场景覆盖较远的部分⾸先将场景中的多边形根据深度进⾏排序,然后按照顺序进⾏绘制这样可⾃然解决可见性问题下列情况⽆法正确排序1.多边形循环遮挡2.多边形相互穿透解决办法:分割成两个算法思想1)先把屏幕置成背景⾊2)先将场景中的物体按其距观察点的远近进⾏排序,结果放在⼀张线性表中;(线性表构造:距观察点远的称优先级低,放在表头;距观察点近的称优先级⾼,放在表尾。
计算机图形学消隐算法的分析与实现

本科毕业设计题目:计算机图形学消隐算法的分析与实现姓名院系信息科学与工程学院专业计算机科学与技术年级学号指导教师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)“消隐”?
将三维场景绘制在计算机二维显示屏上必须经过投影变换,投影 变换将三维信息变换到二维平面上,这个过程中深度信息被丢失, 生成的图形往往具有二义性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、 消隐基本技术
为了提高消隐算法的效率,各种消隐算法常 采用一些有效的消隐基本算法。
利用连贯性 将透视投影转换成平行投影 包围盒技术 背面剔除 空间分割技术 物体分层表示
利用连贯性
连贯性是指从一个事物到另一个事物,其属性值(如颜色值、 空间位置)通常是平缓过渡的性质。
物体连贯性 面的连贯性 区域连贯性
包围盒技术
一个形体的包围盒指的是包围它的简单形体。 比如,2D的矩形,3D的立方块、长方体、球等。
目的: 避免盲目的求交测试; 各物体间的比较等。
一个好的包围盒要具有两个条件: 包围和充分紧密包围着形体; 对其的测试比较简单。
例:矩形包围盒及长方体包围盒提高算 法效率
• 包围盒不相交,线段和多边形也不相交,线段完全可见,无需就线段和多边形 的遮挡关系进行进一步判断。可推广到面与面的遮挡快速判断。
特点是:算法可以达到相当高的精度。
for (场景中的每一个物体) { 将其与场景中的其它物体比较,确定其表面的可见部分;
显示该物体表面的可见部分; }
第二种是像空间算法。 它以构成图形的每一个像素为处理单元的,确定场景中哪些表面的像• 特点是:算法精度低,只能达到屏幕精度为止,但速度往 往更高。
• 按消隐空间分类
物体空间消隐算法 图像空间消隐算法
线消隐(Hidden-line) 消隐对象是物体上不可见的线,一般用于线框图。当用笔式绘图仪或
其它画线设备绘制图形时,主要使用这种算法。 面消隐(Hidden-surface)
消隐对象是物体上不可见的面,一般用于填色图。当用光栅扫描显示 器绘制图形时,主要使用这种算法。
消隐算法
主要内容:
一、概述 二、消隐的基本技术 三、凸多面体消除隐藏线 四、消除隐藏面
一、概述
用计算机生成三维形体的真实图形,是计算机图形学研究 的重要内容之一。在使用显示设备描绘三维图形时,必须把三 维信息作某种投影变换,在二维显示表面上绘制出来。
由于投影变换失去了深度信息,往往导致图形的二义性:
要消除二义性,必须在绘制时消隐实际不可见得线和面, 即消隐。经过消隐的投影图称为物体的真实图形。
• 消隐不仅与消隐对象有关,还与观察者的位置有关。如图所示, 由于视点的位置不同,物体的可见部分也不同:
D
C
E2
A
B
E1
消隐与观察者的位置关系
• 按消隐的对象分类
线消隐(Hidden-line) 面消隐(Hidden-surface)
• 例如:两个空间多边形A、B在投影平面上的投影分别为A’,B’ ,因为A’ 、B’的 矩形包围盒不相交,则A’、B’不相交,无须进行遮挡测试。右图:包围盒相交, 投影也相交;包围盒相交,投影不相交。
A
B
A’
B’
背面剔除
剔除依据: 物体表面是封闭的,背面总是被前向面所遮挡,从 而始终是 不可见的。
早期图形显示器是用线条表示图形,消隐主要是消隐线问题。使用光栅显 示器后,物体可用连续变化的色调来描述,消隐算法的研究渐渐转向消隐面 的问题。
隐藏线(面)的消除的两种基本算法
第一种是物空间算法。 • 它以三维场景中的物体对像作为处理单元的,在所有的对像之间进行
比较,除去完全不可见的的物体和物体上不可见的部分。常用于线框 表示立体的线隐藏,也用于面隐藏。
9
象空间消隐算法: 这类算法对屏幕上的每个象素进行判断,以决定物体上哪个多边
形在该象素 点上是可见的。若屏幕上有m×n个象素点,每个物体表面 上有h个多边形,则该类消隐算法计算量正比于mnh。
则: k个物体的算法复杂度为: O(mnkh) 。
10
算法排序
各种消隐算法均采用一定形式的几何排序。通过排序,可搜查出位置 上靠近观察者的几何元素,确定几何元素之间在位置上的遮挡关系,解决 消隐计算的主要问题。各种算法都有各自的排序方法和排序次序。排序次 序影响算法的效率。
其算法是对每一个像素: 在和投影点到像素的连线相交的表面中找到离观察点最近的表面 用该表面上交点处的颜色填充该像素。
for (窗口内的每一个像素) { 确定距视点最近的物体,以该物体表 面的颜色来显示像素}
算法复杂度
假设场景中有k个物体,平均每个物体表面 由h个多边形构成,显示区域中有m x n个像素, 则:
• 一张面内的各种属性值一般是缓慢变化的,可采用增量的形式对其进行计算;
• 区域连贯性
• 一个区域一般指屏幕上一组相邻的象素,他们通常为同一个可见面所占据,可见性相 同;
• 扫描线的连贯性
• 在相邻两条扫描线上,可见面的分布情况相似;
• 深度连贯性
• 同一表面上的相邻部分深度是相近的,而占据屏幕上同一区域的不同表面的深度不同, 这样只需取其上一点计算出深度值,比较该深度值便能得出结果;
第一种算法的复杂度为: O((kh)×(kh)) 第二种算法的复杂度为:O(mnkh)
物空间消隐算法: 需对物体表面的h个多边形中的每个面与其余h-1个面进行比较,
精确地求出物体上每个棱边或每个面的遮挡关系。算法的计算量正 比于h2,即算法复杂度为:O((h)2) 。
则:k个物体的算法复杂度为:O((kh)2) 。
扫描线的连贯性
例如:
深度连贯性
棱边的连贯性是指:棱边的可见性在它与其他棱边相交时才发生变换;
面的连贯性是指:如果面的一部分是可见的,则一般情况下整个面都是可见的。
• 物体连贯性
• 若物体A与物体B是完全分离的,消隐时只需要比较两物体之间的遮挡关系即可,不需 要对它们的表面多边形逐一进行测试;
• 面的连贯性
外法向 外法向与投影方向(观察方向)的夹角判断:前向面与后向面
(背面)
视线向量V 法向向量N
法向向量N
<90°
可见
cos N V
<90°
可见
>90°
不可见
法向向量N
视线-法线夹角法
N 面的法向量
V 面上一点指向观察点的向量
= cos-1( )
N.V
|N||V|
0<= <
时2 可见
N
.
V
>0
2<= <=
时 不可见N . V <0
、空间分割技术
依据:场景中的物体,它们的投影在投影平面上 是否有相互遮挡的重叠部分? 对于根本不存在相互遮挡关系的物体,应 避免这种不必要的测试。