几种面消隐算法的比较
计算机图形学——隐藏线和隐藏面的消除(消隐算法)

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

几种面消隐算法的比较
马自萍;马金林
【期刊名称】《科技信息》
【年(卷),期】2008(000)002
【摘要】本文就目前现有面消隐算法进行了分类,对每类算法特点进行了总结.从每种算法本身的特点、消隐空间、排序效率和对场景的限制这几方面,重点分析比较了几种常用的面消隐算法.
【总页数】3页(P69-71)
【作者】马自萍;马金林
【作者单位】西北第二民族学院,宁夏,银川,750021;西北第二民族学院,宁夏,银川,750021
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于消隐算法的空间结构有效辐射面判断方法研究 [J], 何治;赵啟伟
2.基于三维消隐算法的装配视图消隐方法研究 [J], 薛文彦;李言;杨征瑞
3.八节点六面体有限元网格自动消隐技术 [J], 李昱明;周飞;郭新贵;彭颖红
4.几种典型消隐面算法的性能分析 [J], 张俊兰;冯伍;高文全
5.基于六面体单元三维有限元网格消隐算法 [J], 虞松;王广春;赵国群
因版权原因,仅展示原文概要,查看原文内容请购买。
chapter02_7_面消隐

Dnv :当沿扫描线v递增一个像素时,多边形所在平面 n坐标的增量,类似,Dnv =-b/c (c!=0)
nextEP:指向下一个边对结构的指针。
2019/7/6
29
2.7 消隐
消除隐藏面
基本概念 Z缓冲区(Z-Buffer)算法 扫描线Z-buffer算法 区间扫描线算法 光线投射算法
2019/7/6
1
基本概念
投影变换失去了深度信息,往往导致图形的 二义性
要消除二义性,就必须在绘制时消除被遮挡的不可 见的线或面,习惯上称作消除隐藏线和隐藏面,简 称为消隐。
2019/7/6
8
Z-Buffer算法
由来: 帧缓冲器 – 保存各像素颜色值
Z缓冲器 --保存各像素处物体深度值
Z缓冲器中的单元与帧缓冲器中的单元一 一对应
屏幕
帧缓冲器
Z缓冲器
2019/7/6
每个单元存放对应 象素的颜色值
每个单元存放对应 象素的深度值
9
Z-Buffer算法
思想:先将Z缓冲器中每个单元的初始值置为最
经过消隐得到的投影图称为物体的真实图形。
长方体线框投影图的二义性
2019/7/6
2
基本概念
消隐的对象是三维物体。三维体的表示 主要有边界表示和CSG表示等。
消隐结果与观察物体有关,也与视点有关。
线框图
2019/7/6
消隐图
真实感图形
3
消隐的分类
按消隐对象分类
线消隐
消隐对象是物体上的边,消除的是物体上不可见的边。
计算机图形学 消隐

?基本概念 ?提高消隐算法效率的常见方法 ?画家算法 ?Z缓冲器算法 ?扫描线Z缓冲器算法 ?区域子分算法 ?光线投射算法
-
基本概念
产生真实感的方法之一: 反映三维场景中的相互遮挡关系
面消隐与线消隐
表面模型与线框模型 物体表面:平面与曲面 面消隐对象: 由平面多边形构成的多面体
-
基本概念
2)然后按照从表头到表尾的顺序逐个绘制物 体。
-
画家算法
关键:如何对场景中的物体按深度(远 近)排序,建立深度优先级表? 一种针对多边形的排序算法如下:
假定在规范化投影坐标系uvn中,投影方向是n 轴的负向,因而n坐标大距观察者近。记nmin(P) nmax(P)分别为多边形P的各个顶点n坐标的最小 值和最大值,算法步骤如下:
-
提高消隐算法效率的常见方法 1
利用连贯性
物体连贯性 面的连贯性 区域连贯性 扫描线的连贯性 深度连贯性
-
提高消隐算法效率的常见方法 2
将透视投影转换成平行投影 消隐与透视关系密切,体现有:
1)消隐必须在投影之前完成; 2)物体之间的遮挡关系与投影中心(视点)的选 取有关; 3)物体之间的遮挡关系与投影方式有关
-
提高消隐算法效率的常见方法 3
图12.3 加入面消隐步骤的三维图形显示 流程图 p285 (参见图8.30 p162)
图12.4 先将透视投影转换成平行投影,南 后再消隐 p285 (参见图8.33 p167)。 (避免除法,提高了效率)
-
提高消隐算法效率的常见方法 4
包围盒技术
定义:一个形体的包围盒指的是包围它的简单形体。
-
提高消隐算法效率的常见方法 6
复杂度比较:
几种面消隐算法的比较

s ri g poy o s t e c mp e i fs e e f u i d n u f c e v lag rt ms i r ta e man y c mpa e t a h ohe . o tn l g n , h o l x t o c n , o r h d e —s r e r mo a l o ih n f s r i l o y a i r d wi e c t r h
【 yw rshd e ufc e oa B P Te — u e cn l eagrh ane ’ agrtm Ke o d ]id nsr erm vl S — reZ h f r a—i l i m p itrS loi a s n ot h
眼 于 开 发 不 可 见 景物 的 空 间连 贯性 , 类 算 法 对 高 遮 挡 率 的 场 景 非 常 这 1 引 言 但 仍 消 隐 ( d e ufc moa) 在 一 定 观察 方 向下 消 除 不 可 见 有 效 . 对 遮 挡 复 杂性 不 高 的 复 杂场 景 却 毫 无 优 势 , 无 法 达 到 实 时 。 HidnS r eRe v 是 a 1 f) 于层 次 细 节 的 图形 绘 制 技 术 2基 3 。 这 种 算 法 根 据 视 觉 o l 的线 和 面 。有 时 也 称 为 可 见 性 测 试 。虽 然 各 种 消 隐算 法 在 可 见 性 测 试 对 从 和 不 可 见 面 消 除方 法 上 区 别不 大 . 这 些 消 隐方 法 有 时 还 可 以 一 起 被 特 性 . 离 视 点 较 远 的 景 物 进 行 几何 简 化 , 而 达 到 降 低 场 景 复 杂 性 但 或 来 统 称 为 不 可 见 面 的 消 除 . 称 消 隐 。 三 维 造 型技 术 、 简 在 真实 感 图形 的显 的 目的 . 利 用 其 它 几 何 方 法 对 整个 场 景 面 片 进 行 简 化 , 减 少场 景 提 示 、 拟 场 景 的显 示 、 及 在 地 形 . 图 的 绘 制 中 . 隐 都 起 到 至 关 重 面 片数 。 这种 方 法大 大 的减 少 了场 景 的复 杂 度 . 高 了绘 制 场 景 的速 虑 以 地 消 但 经 要 的 作 用 。 所 以研 究 和实 现消 隐算 法 , 根 据 场 景 的 复 杂 度 和 各 个 不 度 , 对 高 度 复 杂 的 场 景 . 过 几 何 简 化 后 的场 景 可 能 仍 无 法 实 时 绘 并 直 同 应 用 领 域 的场 景来 提 高 消 隐算 法 的速 度 是 很 有 必 要 的 , 对 整 个 三 制 . 到 九 十 年代 中期 发 展 起 来 的纹 理 简 化 技 术 较 好 地 解 决 了 这 类 问 它 hd I eC c e技 ma 该 维 图 形 显 示 . 实感 图形 的显 示 以及 各 种 地 形 地 貌 图形 的 显 示 是 很 有 题 。其 典 型 代 表 是 S ae的图 象 缓 存 ( g ah ) 术 , 算 法 结 合 真
几种面消隐算法的研究与比较

引言消隐(Hidden Surface Removal)是在一定观察方向下消除不可见的线和面。
有时也称为可见性测试。
虽然各种消隐算法在可见性测试和不可见面消除方法上区别不大.但这些消隐方法有时还可以一起被统称为不可见面的消除.简称消隐。
在三维造型技术、真实感图形的显示、虑拟场景的显示、以及在地形.地图的绘制中.消隐都起到至关重要的作用。
所以研究和实现消隐算法,并根据场景的复杂度和各个不同应用领域的场景来提高消隐算法的速度是很有必要的,它对整个三维图形显示.真实感图形的显示以及各种地形地貌图形的显示是很有意义的。
1面消隐算法的分类就目前研究出的面消隐算法,按照它们对消隐算法加速的方法不同可分为两类:一类是致力于消隐方法的研究:(1)现有的消隐算法研究。
现有的常用的几种面消隐算法主要有:Z-buffer算法、扫描线算法、画家算法、BSP树算法等,其主要区别在于它们消隐空间不同、可见面测试方法和不可见消除方法不同,故它们所适用的范围也不同。
本文将在第三部分从每种算法本身的特点、消隐空间、排序效率和对场景的限制上对这几种消隐算法来分析和比较。
(2)由于消隐算法不同,它们适用的场景类型和复杂度也不同,所以有一些专门用于针对地形、地图的绘制、凸多边体消隐、复杂形体消隐、对某一种形体表示的场景的消隐、对曲面消隐等的算法研究。
(3)研究新的消隐方法或用不同方法对已有算法改进来提高消隐速度.如树结构的消隐算法、改进的扫描线算法、BSP树法在辐射度显示中的应用、BSP树法加入到层次遮挡图(HOM)算法、BSP树法结合Image cache(Sprite)算法等.可以在不同程度的提高图形绘制效率。
对于BSP树加入到其它算法中可提高其它算法效率,本文也将在第三部分进行比较。
另一类是致力于减少视域中的待处理的景物面片数,来达到加速消隐过程的目的。
硬件Z-buffer算法是目前最为常用的实时图形绘制算法,尽管其线性复杂度为O(N)(N为面片数),但该算法由于不考虑景物的空间连贯性,需逐一绘制景物面片而不管它是否隐藏。
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-缓冲器) 和刷新缓冲器,分别保存各像素所对应 的三维点的深度和像素属性。缺点是它 需要很大的存储空间。 • 优点是算法简单:首先,缓冲器初始化, 即初始化每个像素的深度和颜色。 其次,计算多边形面上各像素点的深度 值, 若距离投影面较近,则记下深度和 颜色。
隐藏面消隐

9.2 消隐算法分类
无论多么复杂的空间物体,沿 视线方向上都只能看到一部分表 面,其余的表面背向观察者不可 见。计算机图形学的一个重要任 务就是对空间物体的表面进行可 见性检测,绘制出可见边线和表 面。经过消隐后得到的图形称为 消隐图。
根据消隐方法的不同,消隐算法可分为两类: 1.隐线算法。用于消除物体上不可见的边界线。隐 线算法主要是针对线框模型提出的,它只要求画出 物体的各可见棱边。
9.1.1 图形的几何信息和拓扑信息 9.1.2 基本图形的数据结构 9.1.3 立体表示模型
9.1.1 图形的几何信息和拓扑信息
几何信息:描述几何元素空间位置的信息。
拓扑信息:描述几何元素之间相互连接关系的信息。
描述一个物体不仅要有几何信息的描述而且还要有 拓扑信息的描述。因为只有几何信息的描述,在表示 上存在不惟一性。如图9-1所示的五个顶点,其几何 信息已经确定,如果拓扑信息不同,则可产生图9-2 和9-3所示的两种不同图形。
表9-1 立方体顶点表
z坐标
z1=0 z2=0 z3=a z4=a z5=0 z6=0 z7=a z8=a
边
起点
终点
E1
P1
P2
E2
P2
P3
E3
P3
P4
E4
P4
P1
E5
P5
P6
E6
P6
P7
E7
P7
P8
E8
P8
P5
E9
P1
P5
E10
P2
P6
E11
P3
P7
E12
P4
P8
表9-2 立方体边表
面 边1 边2 边3 边4 F1 E1 E4 E3 E2 F2 E5 E6 E7 E8 F3 E9 E8 E12 E4 F4 E10 E2 E11 E6 F5 E1 E10 E5 E9 F6 E3 E12 E7 E11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
法的效率的分析的一个重要方面。因为这样可以对消隐算法进行归 类, 并为提高消隐算法的效率打好基础。
根据消隐所在的空间分为消隐算法可以分为三大类: (a)物体 空 间 法(光 线 投 射 Roberts):物 体 空 间 是 用 户 来 定 义 三 维 形 体的三维空间, 即所说的世界坐标系空间。它是三维形体还没有被投 影 到 二 维 空 间 内 所 在 的 空 间 。物 体 空 间 法 就 是 利 用 三 维 环 境 信 息 或 三 维视图( 主要使用三维观察坐标, 有时也使用三维世界坐标) 来消除隐 藏面, 即根据空间中各物体三维模型的几何关系, 来判断哪些表面可 见, 哪些表面不可见。 (b)图 象 空 间 法(Z- buffer、扫 描 线 、warnock) :图 象 空 间 是 把 三 维 图 形投影到的二维空间, 即我们所说的屏幕空间。图象空间法是基于物 体三维模型的二维显示图形( 使用二维显示坐标) 来确定物体或表面 与观察点的远近关系, 从而判断哪些表面遮挡了其它表面。 (c)物体空间和图像空间的消隐算法 (画 家 算 法):在 物 体 空 间 中 预 先计算面的可见性优先级, 再在图像空间中生成消隐图。 从理论上讲,对象空间方法即为一个对象必须和空间中其他对象 进行比较,以确定其是否可见。若画面中有 n 个对象,那么,比较操作的 计算量为 n2 次。图像空间方法则是将每个对象的投影分解为像素,像 素之间进行比较。若每个对象投影后含有 N 个像素,则比较计算量为 N×n 次,N 虽然很大,但像素之间比较简单。实用的消隐算法通常将对 象空间方法和图像空间方法结合起来使用。首先,使用空间对象方法 删 除 对 象 中 一 部 分 不 可 见 的 面;其 次,对 剩 余 的 面 用 图 像 空 间 方 法 进 行 比较计算。这样才能提高消隐算法的效率。 2.2 要研究一种消隐算法, 就要知道每种算法的基本组成元素, 这
【Key wor ds】hidden surface removal BSP- Tree Z- buffer scan- line algorithm painter’s algorithm
1.引言 消 隐 ( Hidden Surface Removal) 是 在 一 定 观 察 方 向 下 消 除 不 可 见
【关键词】消隐; Z- buffer 算法; 扫描线算法; 画家算法 BSP 算法 Compar ison among Ser val Hidden Sur face Removal Algor ithms Ma zi- ping Ma jing- lin
【Abstr act 】In this paper, the hidden- surface removal algorithms are classified according to the method of accelerating hidden- surface removal algorithms. And based on analyses of characters of four hidden - surface removal algorithms ,the space of hidden - surface removal, the efficiency of sorting polygons, the complexity of scene, four hidden- surface removal algorithms in first are mainly compared 性, 这类算法对高遮挡率的场景非常 有效, 但对遮挡复杂性不高的复杂场景却毫无优势, 仍无法达到实时。
(2)基于层次细节的图形绘制 技 术 。 [27]]28][29][30][31]32] 这 种 算 法 根 据 视 觉 特性, 对离视点较远的景物进行几何简化, 从而达到降低场景复杂性 的目的, 或利用其它几何方法对整个场景面片进行简化, 来减少场景 面片数。这种方法大大的减少了场景的复杂度, 提高了绘制场景的速 度, 但对高度复杂的场景, 经过几何简化后的场景可能仍无法实时绘 制, 直到九十年代中期发展起来的纹理简化技术较好地解决了这类问 题。其典型代表是 Shade 的图象缓存(Image Cache)技术[27], 该算法结合 几 何 简 化 和 基 于 图 象 的 绘 制 技 术 的 优 点 。算 法 首 先 将 场 景 组 织 成 一 棵 BSP 树。漫游时, 算法自动地决定 BSP 树中各个结点中的景物是否满 足纹理简化的误差要求, 若满足, 则取图象缓存中对应图象作为纹理, 将其映射到一空间四边形表面上来取代结点中的几何来绘制画面; 否 则, 直接采用几何来绘制。显然, 这种动态图象简化技术大大减低了场 景的复杂性, 从而提高了图形的绘制效率。但由于该算法采用从后向 前的绘制方式, 不能利用前述的空间不可见性连贯性来加速消隐过 程。为此, 郑文庭, 鲍虎军等结合了层次遮挡图和图象缓存算法, 提出 了基于时空连贯性和几何简化技术的复杂场景快速消隐绘制 算 法[31], 可以适合对各种复杂场景的实时绘制, 提高了图形绘制效率, 加速了 消隐过程。
的 线 和 面 。有 时 也 称 为 可 见 性 测 试 。虽 然 各 种 消 隐 算 法 在 可 见 性 测 试 和不可见面消除方法上区别不大, 但这些消隐方法有时还可以一起被 统称为不可见面的消除, 简称消隐。在三维造型技术、真实感图形的显 示、虑拟场景的显示 、以 及 在 地 形 , 地 图 的 绘 制 中 , 消 隐 都 起 到 至 关 重 要的作用。所以研究和实现消隐算法, 并根据场景的复杂度和各个不 同应用领域的场景来提高消隐算法的速度是很有必要的, 它对整个三 维图形显示, 真实感图形的显示以及各种地形地貌图形的显示是很有 意义的。
就目前研究出的面消隐算法, 按照它们对消隐算法加速的方法不 同可分为两类:
一类是致力于消隐方法的研究。 (1)现有的消隐算法[1][2][3][4] 研 [5][6][7] 究。现有的常用的几种面消隐算法 主要有: Z- buffer 算法、扫描线算法、画家算法、BSP 树算法[8]等, 其主要 区别在于它们消隐空间不同、可见面测试方法和不可见消除方法不 同, 故它们所适用的范围也不同。本文将在第三部分从每种算法本身 的特点、消隐空 间 、排 序 效 率 和 对 场 景 的 限 制 上 对 这 几 种 消 隐 算 法 来 分析和比较。 (2)由于消隐算法不 同 , 它 们 适 用 的 场 景 类 型 和 复 杂 度 也 不 同 , 所 以 有 一 些 专 门 用 于 针 对 地 形 、地 图 的 绘 制[9]、凸 多 边 体 消 隐[10]、复 杂 形 体消隐[11][12]、对某一种形体表示的场景的消隐[13]、对曲 面 消 隐 等 [14][15][16] 的 算法研究。 (3)研 究 新 的 消 隐 方 法 或 用 不 同 方 法 对 已 有 算 法 改 进[8]来 提 高 消 隐 速 度 , 如 树 结 构 的 消 隐 算 法[17][18]、改 进 的 扫 描 线 算 法[19]、BSP 树 法 在 辐 射 度 显 示 中 的 应 用[20]、BSP 树 法 加 入 到 层 次 遮 挡 图 (HOM)算 法[21]、BSP 树 法 结 合 Image cache( Sprite) 算 法[21]等 , 可 以 在 不 同 程 度 的 提 高 图 形 绘制效率。对于 BSP 树加入到其它算法中可提高其它算法效率, 本文 也将在第三部分进行比较。 另一类是致力于减少视域中的待处理的景物面片数, 来达到加速 消隐过程的目的。硬件 Z- buffer 算法是目前最为常用的实时图形绘制 算法, 尽管其线性复杂度为 O(N)(N 为面片数), 但该算法由于不考虑景 物的空间连贯性, 需逐一绘制景物面片而不管它是否隐藏, 因而, 对高 度复杂的场景, 硬件 Z- buffer 算法仍难以达到实时。解决这一个问题 的关键是减少复杂场景中需实时绘制的景物面片数 N。而减少视域中 的待处理面片数目前有两种途径: (1)基于空间连贯性的快速消隐算法 。这 [22][23][24]25]26] 种算法并不简化 场景几何, 而是 充 分 利 用 景 物 空 间 、图 象 空 间 和 时 间 域 上 的 可 见 性 和 不 可 见 性 连 贯 性 来 剔 除 被 遮 挡 的 景 物 面 片 。层 次 遮 挡 图 算 法 [22]和 层 次 Z- buffer 算法[243]是这类算法的典型代表。这两个算法均将景物空间组 织成层次结构, 并把面片的可见性计算分解为深度排序和在屏幕上的 重叠测试两个过程。算法引入深度 Z 锥来实现快速的保守排序, 而图 象锥则用来加速面片的重叠测试, 这两个层次结构的引入使得快速剔 除不可见面成为可能, 从而极大地降低了后续硬件 Z- buffer 算法的绘 制复杂度。更进一步, 时间域上可见性连贯性的使用保证了 Z 锥和图 象锥具有一个极好的初始条件, 为快速绘制提供了重要保障。由于着
科技信息
○IT 技术论坛○
SCIENCE & TECHNOLOGY INFORMATION
2008 年 第 2 期
几种面消隐算法的比较
马自萍 马金林 ( 西北第二民族学院 宁夏 银川 750021)
【摘 要】本文就目前现有面消隐算法进行了分类, 对每类算法特点进行了总结。从每种算法本身的特点、消隐空间、排序效率和对场景的 限制这几方面, 重点分析比较了几种常用的面消隐算法。
69
科技信息
○IT 技术论坛○
SCIENCE & TECHNOLOGY INFORMATION
2008 年 第 2 期
样才能更透彻的理解这种算法, 去研究这种算法。对于每种消隐算法, 可以从它们共同拥有的五个方面着手来研究, 因为每一个消隐算法可 以看成是以下一个五元组的集合, 即:
HA=(I,O,D,P,S), 其中: HA 为一个消隐算法 I 为要进行消隐处理的三维对象的集合; O 为经过消隐处理的二维对象的集合; D 为进行消隐处理时所采用的数据结构; P 为进行消隐处理所需基本操作过程的集合, 主要包括: 分类、排 序, 三维坐标变换, 透视投影变换, 基本图形元素间的求交计算, 两个 区域重叠判断, 点与区域的包含测试, 面的朝向测试 S 为消隐策略, 即 规定 P 中各基本操作过程被采用的先后次序。 消隐算法不同, 主要在于 D, P, S, 对于 D( 消隐处理时所采用的数 据结构) , 如扫描线算法中的 AET、APT 可以加速扫描速度, BSP 树算 法就是利用了二叉树来分割和显示场景, 都是为了加速消隐速度; 对 于 P( 分类、排序、包含性测试、可见性测试) , 算法不同, 方法也不同; S (P 中各基本操作过程被采用的先后次序) , 根据不同的应用需要, 场 景类型来设计。 因此, 设计消隐算法时应考虑上述五个要素及它们之间的相互关 系,在改进这五个基本要素方面着手去提高算法的速度, 并在应用领 域也要考虑这五个基本要素去着手。 3.几种常用面消隐算法的比较 消隐的对象是三维形体, 而消隐的结果不只与三维形体的形状有 关, 还有观察方向有关。消隐的效率有很多因素决定, 除了算法本身 外, 还有: 场景的复杂度、要显示物体的类型、可用设备、以及要显示画 面 是 动 态 的 还 是 静 态 的 等 等 。这 些 因 素 决 定 了 要 选 用 的 消 隐 的 算 法 类 型, 也决定了这种消隐算法的效率。 在设备相同, 要显示画面是静态的情况下, 下面就目前几种常用 的消隐算法: Z- buffer 算 法 , 扫 描 线 算 法 , 画 家 算 法 , BSP 树 算 法 , 从 不 同 的 场 景 复 杂 度 、消 隐 空 间 、排 序 效 率 、对 物 体 类 型 的 限 制 这 [33][34][35] 几 方面来进行比较: 3.1 从算法特点来比较 Z—buffer 算法像素级上以距离观察者近 的物体替代远的物体,物体在屏幕上的出现顺序无关紧要,算法简单, 以利于硬件实现。单初始值的多样性, 有限的复杂度 O( N) , N 为场景 中所含面的数目, 无需对场景中的多边形排序, 而扫描线和画家算法 运用了稍复杂的排序算法, 排序算法比起 Z- buffer 算法难实现。因此, Z- buffer 算法硬件易实现, 得到了广泛的应用。 但 Z—buffer 算法需要大量的存贮空间, 当画深度复 杂 度 为 : s=d, f1=a 的物体时浪费时间, z 精度的误差性高( 这时必须要采样点) 。它的 最大缺 点 是 两 个 缓 存 数 组 占 用 的 存 储 单 元 太 多 。 故 改 进 Z- Buffer 算 法,只 设 置 一 个 深 度 缓 存 变 量 ZB,帧 缓 存(CB 数 组)存 放 每 个 像 素 的 颜 色值, 这样可以大大减少存储单元。也可以用用扫描线相关性和点相 关性来改进。 另外, Z- buffer 算法速度依赖 于 场 景 中 多 边 形 面 片 数 目 , 而 不 是 场景中对于观察者可见多边形面片数目。 与 Z- buffer 算法相比较, 扫描线 Z- buffer 算法做了两点改进: ( 1) 整个绘图窗口内的消隐问题分解到一条扫描线上解决, 使所 需的 Z 缓冲器大大减少。 ( 2) 计算深度值时, 利用了面连贯性, 只用了一个加法。但它在每 个象素处都计算深度值, 进行深度比较。 扫描线算法中, 被多个多边形覆盖的象素区处还要进行多次计 算, 计算量仍然很大。区间扫描线算法克服了这一缺陷, 使得在条扫描 线上每个区间只计算一次深度值, 并且不需要 Z 缓冲器。它是把当前 扫描线与各多边形在投影平面的投影的交点进行排序后, 使扫描线分 为若干子区间。因此, 只要在区间任一点处找出在该处 z 值最大的一 个面, 这个区间上的每一个象素就用这个面的颜色来显示。 画家算法它的缺点是只能处理互不相交的面, 而且深度优先级表 中面的顺序可能出错。在两个面相交, 三个以上的面重叠的情形, 用任 何 排 序 方 法 都 不 能 排 出 正 确 的 序 。这 时 只 能 把 有 关 的 面 进 行 分 割 后 再 排序。而且, 在画家算法中, 深度排序计算量大, 而且排序后, 还需再检 查相邻的面, 以确保在深度优先级表中前者在前, 后者在后。若遇到多 边形相交, 或多边形循环重叠的情形, 还必须分割多边形, 然后进行排 序, 最后再进行显示, 。而 Z- Buffer 算法和扫描线算法可避免这个问 题。但扫描线算法和 Z- buffer 算法的缺点是, 对于不可见的多边形面