当前位置:文档之家› 几种面消隐算法的比较

几种面消隐算法的比较

2.研究消隐算法的方法 2.1 从消隐空间来分析: 对消隐算法消隐空间的分析是对消隐算
法的效率的分析的一个重要方面。因为这样可以对消隐算法进行归 类, 并为提高消隐算法的效率打好基础。
根据消隐所在的空间分为消隐算法可以分为三大类: (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 算法的缺点是, 对于不可见的多边形面
相关主题