多边形模型简化算法综述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 1 顶点聚类 顶点聚类的思想很简单 :对于给定的多边形表面 ,把模型
所在空间分成很多个小格 (小格尺寸小于用户指定的近似误 差阈值 ε) ,为每个小格计算一个代表顶点 ,把原始模型落在这 个小格内的顶点都合并到代表顶点上 。如果一个三角形有两 个或者三个顶点位于同一小格之内 ,就会被删除 ,网格因此得 到简化 。聚类算法的主要特点包括 :
Luebke提出的层次动态简化 (H ierarchical Dynam ic Simp li2 fication, HDS) [26 ] ,就是一种动态的聚类算法 。它用八叉树代 替均匀栅格 ,通过合并八叉树单元来实现基于视点的自适应的 简化 。任何顶点聚类算法都可以应用在这个方法的框架中 。 HDS不保持拓扑结构 ,编程实现简单 ,但简化质量不算高 。
L indstrom 对 文 献 [ 29 ]的 算 法 进行 了 扩 展 , 提 出 Out2of2 Core算法 [22 ]对规模极大以致无法完全读入内存的模型进行简 化 。采用 Garland的 QEM 2quadric Error M etric[8 ]误差度量指导
第 8期
郭力真等 :多边形模型简化算法综述
form a tion Science, U n iversity of M acau, M acao, Ch ina)
Abstract: Gives a survey of polygonal model simp lification algorithm s. The algorithm s are classified into 4 basic polygon re2 moval mechanism s, and introduction is given to each class on its basic p rincip le, strength, weakness, and various algorithm s published on the class. Finally, the paper p rovides some comments on how to select p roper simp lification method in different app lications. Key words: Polygonal Simp lification; LOD; V ertex Clustering; Incremental D ecimation
(2)边折叠 ( Edge Collap se) 。 Hoppe 等 人 在 网 格 优 化 算 法 [12 ]中首次提出用边折叠进行简化操作 。边折叠操作选择两 个相邻的顶点 u和 v,删除它们之间的边 ( u, v)和这条边上的 两个三角形 ,两顶点合并到一个位置 w。对不同的算法 , 新顶 点 w 的选择方案有多种 。
边折叠算法的特点是 : ①简化模型的质量比较好 。 ②健壮 性好 ,可以在任何拓扑结构上进行简化 。 ③多数可以闭合模型 表面的孔洞 ,从而改变拓扑结构 ,进行大幅度简化 。文献 [ 8, 28 ]还把折叠对象扩展到不相邻的“顶点对 ”,使模型中彼此分 离的部分也可以合并 。 ④生成不同精度的模型 ,很容易进行相 互之间的无缝切换 。 ⑤不同算法的区别主要在采用不同的误 差度量来选择要折叠的边和新顶点的位置 ,实现难度和处理速 度相差很多 。但是在速度和简化质量上达到最佳平衡的算法 主要在这一类中 。
· 21 ·
代表顶点的选取 ,代表顶点设置再到小格内所有三角形所在平 面距离平方和最小的位置 。简化结果质量较好 。时间复杂度 为 O (n)。
上面提到的都属于静态简化算法 ,它们预先生成一个或一 组简化模型 。在实际应用中根据需要 ,选择合适的模型进行绘 制 ,编程实现简单 ,得到较好的硬件支持 。动态简化算法则先 创建适当的数据结构 。在实际应用时从该数据结构中提取所 需的层次细节 ,生成适合当前需要的简化模型 ,从而使简化质 量更好 ,并能实现不同的层次之间的平滑过渡 。
增量式删除从原始模型开始 ,每次根据用户指定的准则选 取一个点删除 ,对相关区域重新进行三角化 。这个准则可能仅 判断顶点能否删除 [2, 30 ] ,也可能对这个操作对模型质量的影响 给出一个量化的值 (称为误差度量 ) [8, 13~16, 21 ] 。候选被删除点 通常根据误差度量的升序存放在堆结构中 。每次选择最小值 对应的点删除 ,并对那些邻域发生改变的顶点重新计算误差度 量 ,调整它们在堆中的位置 ,这是主要的运算开销 。这类算法 的主要特点是 : ①计算复杂性大大超过顶点聚类方法 ,平均 O ( n logn) ,最坏时达到 O ( n2 ) 。 ②在绝大多数情况下可以产生 更高质量的网格 。 ③反复进行多次简单的局部调整 ,而不是较 少几次复杂的修改 。简单的局部操作使简化有可能实时完成 , 大大推动了动态简化算法的发展 。也有利于不同精度模型之 间的光滑切换 。 ④可以自然地产生层次结构 ,也就是多分辨率 模型 。它由一个简单的基模型和一系列简化和细化 (简化的 逆操作 )组成 ,通过对基模型应用细化和简化操作 ,可以获得 不同精细程度的近似模型 ) 。
(4) 简化模型的精度依赖于小格的尺寸 。用户可以通过 定义小格的大小 ,保证一个全局近似误差范围 。但对于给定的 误差范围 ,聚类算法很难达到最优简化 。大面积的平面会保留 过多的三角形 ,微小的尖锐特征则容易被删除 。
顶点聚类算法的主要区别在于如何设置小格和如何为小 格选择代表顶点 。
Rossignac和 Borrel提出的顶点聚类算法 [29 ]用均匀栅格划 分模型 ,对每个顶点衡量其重要性 ,在较大的面或者较高的曲 率处的顶点重要性较高 。选取小格中重要性最高的顶点作该 小格的代表顶点 。顶点为 n时 ,时间复杂度是 O ( n) 。简化质 量不高 。
边折叠算法由于速度 、健壮性的优势 ,以及பைடு நூலகம்为增量式简 化具有自然生成多分辨率模型的优点 ,获得了广泛深入的研 究 ,相关算法非常多 ,这里仅列举几个最著名的 。
Hoppe提出的渐进网格 [13 ]算法 ,把多边形模型表示成一 个最粗糙的网格和一系列顶点分裂 (边折叠的逆操作 )操作 。 在实时绘制过程中可以通过逐次加入细节生成不同复杂度的 简化模型 。算法采用能量方程进行误差度量 ,其中还添加了度 量非几何特征和不连续曲线的因子 。简化质量非常好 ,但实现 和使用困难 ,运行时间长 ,而且不允许改变拓扑结构 。基于视 点的简化 [14, 33 ]以渐进网格为基础 ,将顶点的合并关系以层次 形式表现 ,允许不同区域自适应地选择不同的分辨率进行绘 制 ,支持与视点相关的简化 。视点相关参数不仅包括模型到视 点的距离 ,还包括与视线的方向视锥大小 、物体的速率等 。
对超大规模模型 , L indstrom还提出一个混合方法 [24 ] ,先采 用 Out2of2Core算法获得一个可以读入内存的中间结果 ,再用 HDS算法对这个中间结果实现基于视点的自适应简化 。
1. 2 增量式删除
如果简化算法对模型进行一系列局部更新 ,每一步都减小 模型的复杂程度 ,同时单调降低近似精度 ,这些算法就是“增 量的 ( Incremental) ”[1 ] 。
删除采用的局部更新操作主要有以下三种 : (1)顶点删除 (Vertex Decimation) 。顶点删除每次删除一 个顶点和它的相邻面 ,产生的空洞通过局部三角化填补 ,操作 反复进行 ,直到网格不能再简化或达到用户的简化要求为止 。 该类算法的特点是 : ①最擅长删除冗余几何信息 ,如共面 的多边形 。 ②生成模型的质量比较好 。 ③多数不允许改变拓 扑结构 ,因此大幅度简化能力有限 。 ④不同算法的实现难度和 处理速度相差很多 。其中某些容易编码 ,处理速度非常快 。 顶点删除算法的代表是 Schroeder等人提出的网格简化算 法 [30 ] 。首先根据顶点的局部几何和拓扑信息把顶点分成“可 删除 ”和“不可删除 ”两类 。每次选择一个可删除顶点 ,如果 顶点到相邻顶点“平均平面 ”的距离小于误差阈值 ,就删除它 。 对非流型输入模型 ,先把它分割成各自满足流型结构的块 ,分
1 算法的分类介绍
常见 的 简 化 机 制 [1, 4, 7, 27 ] 包 括 顶 点 聚 类 ( V ertex Cluste2 ring) 、增量式简化 ( Incremental Decimation) 、采样 ( Samp ling)和 自适应细分 (Adap tive Subdivision) ,简化算法基本都采用了这 四种机制的某种结合或者是变形 。由于简化机制通常决定了 一个算法的适应性 、效率 、实现难度等特点 ,很多文献根据这一 点对算法进行分类 [1, 4, 7, 27 ] 。在下面的论述中 ,我们也沿用这 个分类介绍该算法 。
多边形模型是计算机图形学中最流行 、最重要 ,并且得到 最广泛支持的模型表示方法 。随着技术的发展 ,模型的复杂性 (通常用多边形的数量来度量 )常常超过了系统的处理能力 。 为此人们提出了很多简化算法 ,用于简化模型上相对较小 、远 离观察者或者不重要的区域 ,以便降低渲染开销或占用较少的 传输带宽 ,从而既可以提高运行速度 ,又不明显影响场景的视 觉效果 。
·20·
计算机应用研究
2005年
多边形模型简化算法综述
郭力真 1 , 吴恩华 1, 2
(11中国科学院 软件研究所 计算机科学重点实验室 , 北京 100080; 2. 澳门大学 计算机与信息科学系 , 澳门 )
摘 要 : 给出了多边形模型简化算法的一个综述 ,首先根据基本的简化机制对算法进行分类 ,介绍每一类的基 本原理 、优缺点和一些已经发表的重要算法 ;然后针对不同的应用需求给出了选择简化算法的建议 。 关键词 : 多边形简化 ; 层次细节 ; 顶点聚类 ; 增量式删除 中图法分类号 : TP391 文献标识码 : A 文章编号 : 100123695 (2005) 0820020204
Survey of Polygonal Model Simp lification A lgorithm s
GUO L i2zhen1 , WU En2hua1, 2 ( 1. Key L aboratory of Com puter Science, Institu te of Softw are, Ch inese A cadem y of S ciences, B eijing 100080, Ch ina; 2. D ept. of Com puter & In2
(1) 编程实现和使用最简单 ,效率非常高 。 (2) 健壮性好 ,对输入网格的拓扑结构 (连接关系 )没有
收稿日期 : 2004204222; 修返日期 : 2004211223
限制 。 (3) 可能在简化过程中修改网格的拓扑结构 。当同一个
小格内 ,有来自原始模型上两个或者更多个不相邻区域的顶点 时 ,聚类就会导致拓扑结构改变 。修改拓扑有利于进行大幅度 简化 ,对由很多不同部分组成或是带有很多孔洞的模型 ,保持 拓扑结构会使简化幅度受到很大限制 。但改变拓扑结构可能 对简化模型的外观产生不利影响 。
别处理之后再进行拼接 。算法在时间和空间上的效率都比较 高 ,实现和应用也较简单 ,简化质量好 ,可以应用在大规模网格 上 ,但对于保持光滑表面有困难 。其他的顶点删除算法能产生 更高质量的表面 ,但是速度很慢 ,占用的空间也很大 。例如 Cohen提出的简化信封 ( Simp lification Envelopes, SE) 算法 [2 ] 。 对给定输入表面 M ,以偏移 - ε和 +ε分别建立表面 M 的信封 表面 M - 和 M + ,对原始顶点 ,只有当删除后形成的新三角形 不与 M - 或者 M +相交时 ,才可以删除 。简化结果质量很好 , 近似误差严格控制在给定的阈值内 。但只能处理流型拓扑结 构 ,而且时间空间开销很大 。
Low和 Tan的浮动栅格聚类方法 [25 ]对模型的划分是分布 进行的 。每次以重要性最高的顶点为中心建立一个小格 ,格中 其他顶点都合并到中心点 ,这个过程反复进行 。文献 [ 25 ]减 轻了简化结果对模型位置和朝向的敏感性 ,对顶点重要性的计 算作了改进 ,视觉和几何质量都得到了改善 。时间复杂度是 O ( n logn) 。
所在空间分成很多个小格 (小格尺寸小于用户指定的近似误 差阈值 ε) ,为每个小格计算一个代表顶点 ,把原始模型落在这 个小格内的顶点都合并到代表顶点上 。如果一个三角形有两 个或者三个顶点位于同一小格之内 ,就会被删除 ,网格因此得 到简化 。聚类算法的主要特点包括 :
Luebke提出的层次动态简化 (H ierarchical Dynam ic Simp li2 fication, HDS) [26 ] ,就是一种动态的聚类算法 。它用八叉树代 替均匀栅格 ,通过合并八叉树单元来实现基于视点的自适应的 简化 。任何顶点聚类算法都可以应用在这个方法的框架中 。 HDS不保持拓扑结构 ,编程实现简单 ,但简化质量不算高 。
L indstrom 对 文 献 [ 29 ]的 算 法 进行 了 扩 展 , 提 出 Out2of2 Core算法 [22 ]对规模极大以致无法完全读入内存的模型进行简 化 。采用 Garland的 QEM 2quadric Error M etric[8 ]误差度量指导
第 8期
郭力真等 :多边形模型简化算法综述
form a tion Science, U n iversity of M acau, M acao, Ch ina)
Abstract: Gives a survey of polygonal model simp lification algorithm s. The algorithm s are classified into 4 basic polygon re2 moval mechanism s, and introduction is given to each class on its basic p rincip le, strength, weakness, and various algorithm s published on the class. Finally, the paper p rovides some comments on how to select p roper simp lification method in different app lications. Key words: Polygonal Simp lification; LOD; V ertex Clustering; Incremental D ecimation
(2)边折叠 ( Edge Collap se) 。 Hoppe 等 人 在 网 格 优 化 算 法 [12 ]中首次提出用边折叠进行简化操作 。边折叠操作选择两 个相邻的顶点 u和 v,删除它们之间的边 ( u, v)和这条边上的 两个三角形 ,两顶点合并到一个位置 w。对不同的算法 , 新顶 点 w 的选择方案有多种 。
边折叠算法的特点是 : ①简化模型的质量比较好 。 ②健壮 性好 ,可以在任何拓扑结构上进行简化 。 ③多数可以闭合模型 表面的孔洞 ,从而改变拓扑结构 ,进行大幅度简化 。文献 [ 8, 28 ]还把折叠对象扩展到不相邻的“顶点对 ”,使模型中彼此分 离的部分也可以合并 。 ④生成不同精度的模型 ,很容易进行相 互之间的无缝切换 。 ⑤不同算法的区别主要在采用不同的误 差度量来选择要折叠的边和新顶点的位置 ,实现难度和处理速 度相差很多 。但是在速度和简化质量上达到最佳平衡的算法 主要在这一类中 。
· 21 ·
代表顶点的选取 ,代表顶点设置再到小格内所有三角形所在平 面距离平方和最小的位置 。简化结果质量较好 。时间复杂度 为 O (n)。
上面提到的都属于静态简化算法 ,它们预先生成一个或一 组简化模型 。在实际应用中根据需要 ,选择合适的模型进行绘 制 ,编程实现简单 ,得到较好的硬件支持 。动态简化算法则先 创建适当的数据结构 。在实际应用时从该数据结构中提取所 需的层次细节 ,生成适合当前需要的简化模型 ,从而使简化质 量更好 ,并能实现不同的层次之间的平滑过渡 。
增量式删除从原始模型开始 ,每次根据用户指定的准则选 取一个点删除 ,对相关区域重新进行三角化 。这个准则可能仅 判断顶点能否删除 [2, 30 ] ,也可能对这个操作对模型质量的影响 给出一个量化的值 (称为误差度量 ) [8, 13~16, 21 ] 。候选被删除点 通常根据误差度量的升序存放在堆结构中 。每次选择最小值 对应的点删除 ,并对那些邻域发生改变的顶点重新计算误差度 量 ,调整它们在堆中的位置 ,这是主要的运算开销 。这类算法 的主要特点是 : ①计算复杂性大大超过顶点聚类方法 ,平均 O ( n logn) ,最坏时达到 O ( n2 ) 。 ②在绝大多数情况下可以产生 更高质量的网格 。 ③反复进行多次简单的局部调整 ,而不是较 少几次复杂的修改 。简单的局部操作使简化有可能实时完成 , 大大推动了动态简化算法的发展 。也有利于不同精度模型之 间的光滑切换 。 ④可以自然地产生层次结构 ,也就是多分辨率 模型 。它由一个简单的基模型和一系列简化和细化 (简化的 逆操作 )组成 ,通过对基模型应用细化和简化操作 ,可以获得 不同精细程度的近似模型 ) 。
(4) 简化模型的精度依赖于小格的尺寸 。用户可以通过 定义小格的大小 ,保证一个全局近似误差范围 。但对于给定的 误差范围 ,聚类算法很难达到最优简化 。大面积的平面会保留 过多的三角形 ,微小的尖锐特征则容易被删除 。
顶点聚类算法的主要区别在于如何设置小格和如何为小 格选择代表顶点 。
Rossignac和 Borrel提出的顶点聚类算法 [29 ]用均匀栅格划 分模型 ,对每个顶点衡量其重要性 ,在较大的面或者较高的曲 率处的顶点重要性较高 。选取小格中重要性最高的顶点作该 小格的代表顶点 。顶点为 n时 ,时间复杂度是 O ( n) 。简化质 量不高 。
边折叠算法由于速度 、健壮性的优势 ,以及பைடு நூலகம்为增量式简 化具有自然生成多分辨率模型的优点 ,获得了广泛深入的研 究 ,相关算法非常多 ,这里仅列举几个最著名的 。
Hoppe提出的渐进网格 [13 ]算法 ,把多边形模型表示成一 个最粗糙的网格和一系列顶点分裂 (边折叠的逆操作 )操作 。 在实时绘制过程中可以通过逐次加入细节生成不同复杂度的 简化模型 。算法采用能量方程进行误差度量 ,其中还添加了度 量非几何特征和不连续曲线的因子 。简化质量非常好 ,但实现 和使用困难 ,运行时间长 ,而且不允许改变拓扑结构 。基于视 点的简化 [14, 33 ]以渐进网格为基础 ,将顶点的合并关系以层次 形式表现 ,允许不同区域自适应地选择不同的分辨率进行绘 制 ,支持与视点相关的简化 。视点相关参数不仅包括模型到视 点的距离 ,还包括与视线的方向视锥大小 、物体的速率等 。
对超大规模模型 , L indstrom还提出一个混合方法 [24 ] ,先采 用 Out2of2Core算法获得一个可以读入内存的中间结果 ,再用 HDS算法对这个中间结果实现基于视点的自适应简化 。
1. 2 增量式删除
如果简化算法对模型进行一系列局部更新 ,每一步都减小 模型的复杂程度 ,同时单调降低近似精度 ,这些算法就是“增 量的 ( Incremental) ”[1 ] 。
删除采用的局部更新操作主要有以下三种 : (1)顶点删除 (Vertex Decimation) 。顶点删除每次删除一 个顶点和它的相邻面 ,产生的空洞通过局部三角化填补 ,操作 反复进行 ,直到网格不能再简化或达到用户的简化要求为止 。 该类算法的特点是 : ①最擅长删除冗余几何信息 ,如共面 的多边形 。 ②生成模型的质量比较好 。 ③多数不允许改变拓 扑结构 ,因此大幅度简化能力有限 。 ④不同算法的实现难度和 处理速度相差很多 。其中某些容易编码 ,处理速度非常快 。 顶点删除算法的代表是 Schroeder等人提出的网格简化算 法 [30 ] 。首先根据顶点的局部几何和拓扑信息把顶点分成“可 删除 ”和“不可删除 ”两类 。每次选择一个可删除顶点 ,如果 顶点到相邻顶点“平均平面 ”的距离小于误差阈值 ,就删除它 。 对非流型输入模型 ,先把它分割成各自满足流型结构的块 ,分
1 算法的分类介绍
常见 的 简 化 机 制 [1, 4, 7, 27 ] 包 括 顶 点 聚 类 ( V ertex Cluste2 ring) 、增量式简化 ( Incremental Decimation) 、采样 ( Samp ling)和 自适应细分 (Adap tive Subdivision) ,简化算法基本都采用了这 四种机制的某种结合或者是变形 。由于简化机制通常决定了 一个算法的适应性 、效率 、实现难度等特点 ,很多文献根据这一 点对算法进行分类 [1, 4, 7, 27 ] 。在下面的论述中 ,我们也沿用这 个分类介绍该算法 。
多边形模型是计算机图形学中最流行 、最重要 ,并且得到 最广泛支持的模型表示方法 。随着技术的发展 ,模型的复杂性 (通常用多边形的数量来度量 )常常超过了系统的处理能力 。 为此人们提出了很多简化算法 ,用于简化模型上相对较小 、远 离观察者或者不重要的区域 ,以便降低渲染开销或占用较少的 传输带宽 ,从而既可以提高运行速度 ,又不明显影响场景的视 觉效果 。
·20·
计算机应用研究
2005年
多边形模型简化算法综述
郭力真 1 , 吴恩华 1, 2
(11中国科学院 软件研究所 计算机科学重点实验室 , 北京 100080; 2. 澳门大学 计算机与信息科学系 , 澳门 )
摘 要 : 给出了多边形模型简化算法的一个综述 ,首先根据基本的简化机制对算法进行分类 ,介绍每一类的基 本原理 、优缺点和一些已经发表的重要算法 ;然后针对不同的应用需求给出了选择简化算法的建议 。 关键词 : 多边形简化 ; 层次细节 ; 顶点聚类 ; 增量式删除 中图法分类号 : TP391 文献标识码 : A 文章编号 : 100123695 (2005) 0820020204
Survey of Polygonal Model Simp lification A lgorithm s
GUO L i2zhen1 , WU En2hua1, 2 ( 1. Key L aboratory of Com puter Science, Institu te of Softw are, Ch inese A cadem y of S ciences, B eijing 100080, Ch ina; 2. D ept. of Com puter & In2
(1) 编程实现和使用最简单 ,效率非常高 。 (2) 健壮性好 ,对输入网格的拓扑结构 (连接关系 )没有
收稿日期 : 2004204222; 修返日期 : 2004211223
限制 。 (3) 可能在简化过程中修改网格的拓扑结构 。当同一个
小格内 ,有来自原始模型上两个或者更多个不相邻区域的顶点 时 ,聚类就会导致拓扑结构改变 。修改拓扑有利于进行大幅度 简化 ,对由很多不同部分组成或是带有很多孔洞的模型 ,保持 拓扑结构会使简化幅度受到很大限制 。但改变拓扑结构可能 对简化模型的外观产生不利影响 。
别处理之后再进行拼接 。算法在时间和空间上的效率都比较 高 ,实现和应用也较简单 ,简化质量好 ,可以应用在大规模网格 上 ,但对于保持光滑表面有困难 。其他的顶点删除算法能产生 更高质量的表面 ,但是速度很慢 ,占用的空间也很大 。例如 Cohen提出的简化信封 ( Simp lification Envelopes, SE) 算法 [2 ] 。 对给定输入表面 M ,以偏移 - ε和 +ε分别建立表面 M 的信封 表面 M - 和 M + ,对原始顶点 ,只有当删除后形成的新三角形 不与 M - 或者 M +相交时 ,才可以删除 。简化结果质量很好 , 近似误差严格控制在给定的阈值内 。但只能处理流型拓扑结 构 ,而且时间空间开销很大 。
Low和 Tan的浮动栅格聚类方法 [25 ]对模型的划分是分布 进行的 。每次以重要性最高的顶点为中心建立一个小格 ,格中 其他顶点都合并到中心点 ,这个过程反复进行 。文献 [ 25 ]减 轻了简化结果对模型位置和朝向的敏感性 ,对顶点重要性的计 算作了改进 ,视觉和几何质量都得到了改善 。时间复杂度是 O ( n logn) 。