网格简化技术研究报告
lvweiwolf
问题及场景
超大场景环境下,为了精细、真实的塔模型,采用分级简化铁塔和绝缘子串模型的方法,利用PageLOD分页细节层次的机制,在不同范围下展现不同精细程度的外观。
简化模型要求速度快、质量高、文件体积小等特点。
网格简化的算法分类
删减法
删减法是目前算法中采用最多的一种模型简化操作。该方法通过重复依次删除对模型特征影响较小的几何元素并重新三角化来达到简化模型的目的。根据删除的几何元素的不同,通常又可以分成顶点删除(Vertex removal)法、边折叠(Edge Collapse)法和三角面片折叠(Triangle collapse)法等。
采样法
采样法首先将顶点(Vertex)或体素(Voxels)添加到模型表面或模型的三维网格上,然后根据物理或几何误差测度进行顶点或体素的分布调整,最后在一定约束条件下,生成尽可能与这些顶点或体素相匹配的简化模型。采样法适合于无折边、尖角和非连续区域的光滑曲面的简化,对于非光滑表面模型简化效果差。
自适应子分法
自适应子分法通过构造简化程度最高的基网格模型(Base Model),然后根据一定的规则,反复对基网格模型的三角面片进行子分操作,依次得到细节程度更高的网格模型,直到生成的网格模型与原始模型误差达到给定的阈值。自适应子分算法具备简单、实现方便等特点,但只适用于容易求出基网格模型的一些应用(如地形网格模型简化等),另外简化模型对于具有尖角和折边等特征的保持效果较差。
顶点聚类法
顶点聚类方法根据一定的规则,将原始网格模型中的两个或多个顶点合并成一个顶点,并删除合并顶点后的退化三角形,从而达到简化网格面片数量,实现网格模型简化的目的。下图为顶点聚类法操作示意图,图中将4个顶点聚类合并为一个顶点,并删除相应的退化三角形后,得到简化后的网格模型。边折叠法也可以看成是顶点聚类法中两个顶点合并的情况。顶点聚类法能处理任意拓扑类型的网格模型,算法简单,速度较快。但由于简化误差控制困难,容易丢失较小结构的细节,因此通常简化模型质量不高。
多边形合并(Polygon merging)
多边形合并法通过将近似共面的三角网格面合并成一个平面,然后对形成的平面重新三角化,来实现减少顶点和面片数量的目的。也被称为面片聚类(Face cluster)和超面(Superfaces)法。该方法在合并和三角化过程中可能改变孔洞结构,因此不能保证简化前后模型的拓扑结构。
简化算法的误差测度(度量质量和误差)
误差测度用于度量模型简化的质量和误差,因此它对模型的简化过程和最后的简化结果都具有重要的影响。大多数简化算法采用对象空间(Object-space)的一种或综合几种形式的几何误差(Geometric errors)作为误差测度,一些视点相关算法通常将对象空间的误差转换为屏幕空间(Screen-space)的误差值为误差测度,有些算法也考虑模型的颜色、法向量和纹理坐标等属性误差(Attribute errors)。
几何误差
几何误差测度一般采用欧式空间距离表示。通常有顶点到顶点、顶点到平面和平面到平面的距离等形式。
Hausdorff距离是现有算法中常常用到度量顶点到表面、表面到表面距离的几何误差测度,该距离为两个模型的顶点之间的最小距离中的最大值。
给定欧式空间的两点集 , ,Haousdorff距离就是用来衡量这两个点集间的距离。
算法过程: