一种外存模型基于顶点聚类的快速并行自适应简化方法
技术领域
本发明涉及计算机图形学领域,特别涉及一种外存模型基于顶点聚类的快速并行自适应简化方法。
背景技术
随着三维扫描仪、数字几何造型等技术的快速发展,三角网格模型在逆向工程、虚拟现实以及三维动画等诸多领域得到了广泛的应用。同时,随着造型精度以及物体复杂性的提高,产生的三角网格数据量也越来越大,往往需要成百上千万的三角面片才能精确刻画物体表面的细节特征。这些庞大的数据量给计算机的存储、分析、显示以及网络传输都带来了巨大的压力。然而在很多情况下,高分辨率的模型并不总是必要的,模型的准确度和处理时间需要有一个折衷,因此,从上世纪90年代起,对三角网格模型的简化就成了计算机图形学领域研究的热点问题之一[1,2]。
根据简化机制的不同,现有的三角网格简化算法大致可以分为以下四类[2]。第一是迭代的几何元素删除法,包括顶点删除法、边折叠、半边折叠以及面删除等[3,4]。第二类是重采样方法,以Turk的Re-Tiling算法为主要代表。第三类是基于小波分解的简化方法,1995年,Matthias Eck的改进使得该算法可以处理任意拓扑的三角网格。第四类就是顶点聚类算法。这类算法具有实现简单、效率高和鲁棒性好等优点,从1993年Rossignac提出顶点聚类算法[5]至今,人们始终没有停止改进它的热情。
1997年,Low和Tan提出了一种更为灵活的浮动栅格聚类方法[6]。该算法每次都以重要性最高的顶点为中心建立一个小格,格中的其他顶点合并到中心点,重复此过程直到简化完成。利用该算法,简化模型的视觉和几何质量都得到了明显的改善。同年Luebke提出了一种动态的层次聚类简化算法,采用八叉树代替均匀栅格,通过合并八叉树单元实现了基于视点的自适应简化[7]。2000年Lindstrom应用Garland的二次误差测度(Quadric Error Metric,QEM)来指导新顶点位置的计算[8],取得了更好的简化质量。国内的周昆采用二次误差测度和八叉树切分,也得到了质量较好的自适应简化结果[9]。2000年,Brodsky提出了另一种有趣的顶点聚类简化算法R-Simp[10],该算法首先对输入模型进行二次量化,然后在曲面曲率的指导下,通过不断切分曲率变化最大的立方体来获得最终的简化结果,在时间复杂度为O(nlogm)的情况下,得到顶点个数为m的自适应简化模型。此外,由于采用了由粗到细的逆向简化过程,R-Simp算法能够对简化模型的规模m进行精确控制。2001年,Shaffer和Garland在对模型进行均匀分割的基础上,采用二叉空间切分树(Binary Space PartitioningTree,BSP)实现了一种适用于外存模型的聚类简化算法[4]。该算法采用二次误差测度来选择待切分的立方体,用双重二次误差来计算立方体的切分面,得到了自适应的简化结果。但是由于采用OBB树结构来定位立方体的切分面,因此,该算法在初始网格拓扑的保持上存在不足。国内,蔡康颖、费广正等人在R-Simp工作的基础上,同样采用二次量化技术来定位模型的细节分布,实现了外存模型的快速自适应简化[11,12];而陶志良和苗兰芳则分别改进和应用BSP树结构完成了加快多层次细节模型构造和绘制的工作[13,14]。
从1993年至今,尽管很多学者提出了多种不同的改进方法以提高顶点聚类算法的简化性能,但是由于不能保持初始模型拓扑、简化规模控制困难以及简化结果质量较差这几个主要因素,该算法始终未能发展到像边折叠方法那样受到更为普遍的关注。然而考虑到此类算法的简单和高效性,直到现在,在场景绘制、计算机动画、虚拟现实以及超大规模外存模型的快速简化中,顶点聚类算法依旧得到了足够的重视和应用[11,12,15]。因此,本专利提出了一种基于顶点聚类的大数据量外存三角网格模型的并行简化方法。与文献[4,10]以及[11,12]相比,本专利方法不需要复杂的曲面曲率以及二次量化计算来定位模型的细节分布,也不需要像文献[40那样计算切分立方体中顶点集合的特征值与特征向量来定位切分面,只依据顶点法向的夹角即可保证立方体的自适应切分,在时间复杂度呈线性的情况下,计算量要明显小于上述算法。而且实验结果也表明采用BSP树结构切分初始模型,控制参数可以有效实现BSP树深度或者广度优先的搜索策略,从而即可以得到自适应的多细节层次简化模型,又可以对输出模型的规模进行精确控制。顶点法向的应用还有效的保持了初始网格拓扑,实现了基于视点的简化。此外,并行计算技术的应用,一方面可以充分利用集群的计算资源,简化以前单台机器不能处理的外存模型;另一方面还可以大大加速简化的处理过程。
发明内容
为了克服现有技术中存在的技术问题,本发明提供了一种。
为了实现上述目的,本发明提供以下技术方案:
一种外存模型基于顶点聚类的快速并行自适应简化方法,所述方法具体为:
划分与通信:把整个复杂的模型划分为多个规模较小的子模型,并且为每个子模型产生7个任务,分别用于计算子模型中所有顶点法向向量、所有三角面片平面方程a、b、c、d系数、所有边长的中值、所有顶点的包围盒、对子模型进行递归分割简化、更新简化后子模型中所有顶点的编号,以及重构简化后子模型中的三角面片;
聚集和映射:将任务聚集起来使通信量最小化,为每个处理器创建一个任务;
把3-D模型文件中连续存放的顶点和面片分割成若干个大小相等的条块;模型分割算法基本描述为:
假设n是元素的个数,p是进程数。进程i控制的第一个元素是:
进程i控制的最后一个元素是i+1所控制的第一个元素的前一个元素:
对于特定的元素j,控制它的进程是:
由主控进程依次读入每一个条块,根据顶点和面片在模型文件中的物理位置自动生成相应的ID,并根据条块在模型数据文件中所处的位置分别分发给不同从属进程;
获取面片包含的顶点:从属进程从主控进程获得模型子集以后,开始准备网格简化算法所需要各项数据;
计算全局顶点法向向量、平面方程a、b、c、d系数和边长中值;
并行排序:基于PSRS并行排序算法,可以根据顶点的z方向坐标值对顶点进行全局排序,经过并行排序以后,模型中所有顶点都按照z方向坐标值从小到大的顺序均匀分布于各个从属进程之中;
获取所有定点所属于的面片;
更新顶点编号。
作为本发明的优选技术方案,在分割模型的时候需遍历整个3-D模型,然后根据每一个顶点和面片的空间位置关系进行分割;充分利用集群系统分布式内存的特点,直接把3-D模型中连续存放的顶点和面片分别分割成若干个大小相等的子模型,先分别装载到不同的计算节点中,然后相互之间再进行比要的数据交换,确保每个子模型中所包含的顶点和面片来自同一个连续的子网格;为此,我们还需要为每个子模型产生4个任务,用于获取当前子模型中所有面片包含的顶点、计算全局的顶点法向向量、平面方程a、b、c、d系数和边长中值、根据顶点z坐标值进行排序、获取当前子模型中所有排序后顶点所属的面片。
作为本发明的优选技术方案,所述获取面片包含的定点的具体步骤为:首先,每个从属进程需要获取当前子模型中所有面片包含的顶点ID列表;通过扫面当前子模型中所有面片,可以把面片中每个顶点的ID号记录下来;然后,每个从属进程把本地的顶点ID列表分发给相应的其它从属进程;最后,每个从属进程都把相应的顶点发送给其它从属进程。
作为本发明的优选技术方案,所述获取所有定点所属的面片具体为:首先,每个从属进程需要获取当前子模型中所有顶点ID列表;然后,每个从属进程把本地的顶点ID列表发送给其它从属进程;接下来,每个从属进程分别根据从其它从属进程接收到的顶点ID列表准备要发送的面片;面片扫面结束后,对映射表中每一行所有元素求和可以计算当前从属进程向对应从属进程发送的面片数量;,而对映射表中所有元素求和可以计算当前从属进程向其它从属进程发送的总面片数量;最后,每个从属进程把准备好的面片发送给其它从属进程。
作为本发明的优选技术方案,所述更新顶点编号具体为:首先,获取各个从属进中网格简化后剩余顶点的数量;接下来,每个从属进程各自更新内部所有剩余顶点的ID;然后,每个从属进程分别计算各自顶点的起始ID;最后,更新顶点合并关系查找表。
本发明带来的有益效果是:首先实现了外存模型的快速简化;其次,能够显著加速简化的执行过程;最后就是能够有效保持模型的拓扑和几何模型,并且实现了基于视点的自适应简化。
附图说明
图1为高性能计算集群的拓扑图
图2为原始模型与简化后模型的对比
图3(a)为兔子和维纳斯模型的并行简化执行效率之执行时间图
图3(b)为兔子和维纳斯模型的并行简化执行效率之加速比图
图3(c)为兔子和维纳斯模型的并行简化执行效率之并行效率图
图4为兔子与维纳斯模型在不同参数下的简化结果
图5为简化模型保持初始网格拓扑的示例图
图6为基于视点简化模型的示例图
具体实施方式
下面对结合附图对本发明的较佳实施例作详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围作出更为清楚明确的界定。
本专利方法的实现需要依托高性能计算集群,只要在高性能计算集群上部署好完整的系统软件和并行计算环境。在部署上本专利方法的源代码之后,经过编译就可以很好的使用本方法处理大数据量的三角网格模型了。
图1所示为一个高性能计算集群的拓扑图示意。
集群上部署的软件包括安装Redhat Linux 5操作系统、COMS集群优化管理系统以及Intel C\C++编译器、Intel MPI、OpenMPI、MVAPICH等并行计算所需的各种运行环境。
本专利方法首先实现了外存模型的快速简化;其次,能够显著加速简化的执行过程;最后就是能够有效保持模型的拓扑和几何模型,并且实现了基于视点的自适应简化。
1、外存模型的简化,如图2所示,可已看出原始模型与简化后的模型对比。
表1.待简化模型的数据量
2、并行简化的执行效率
从图3(a)至图3(c)可以看出,采用并行计算技术可以有效的减少网格简化的时间。
3、拓扑与几何细节保持
如上图5(b)所示,在角度阈值为45度的情况下,结合0.3倍的边长中值作为最小切分立方体的限制,简化模型中的脚趾骨并没有和其他骨头融合在一起,仍然处于一个个分离的状态,从而很好的保持了初始网格拓扑。
图6中红色箭头代表着观察方向,通过计算顶点法向和视点方向的点积,可以为模型的每一个顶点定义一个置信度。如果顶点的置信度大于预设的阈值,则该点就要按照本专利方法进行简化,否则只依据最小切分立方体的限制进行简化。从图4中的两个简化模型“维纳斯”和“兔子”可以看出,网格可见部分顶点的数量要比不可见部分稠密的多。在现实应用中,不论是哪种情况,都没有必要保留不可见部分过多的细节信息。因此,基于视点的简化既可以有效地保留模型可见部分精细的几何特征,又可以在很大程度上减少模型的数据量,减小存储和传输的压力。
以上所述,仅为本发明的具体实施方式之一,但本发明的保护范围并不局限于此,任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可不经过创造性劳动想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。
参考文献
1 蔡康颖,孙汉秋,吴恩华。基于顶点聚类简化外存模型的保流形算法[J]。计算机辅助设计与图形学学报,2004,16(10):1346-1354
2 何辉光,田捷,张晓鹏等。网格模型化简综述[J]。软件学报,2002,13(12):2215-2224
3 Michael Garland,Paul S Heckbert.Surface Simplification Using QuadricError Metrics[C]//Proceedings of Computer Graphics,AnnualConference Series,ACM SIGGRAPH,Los Angeles,1997:209-216
4 Eric Shaffer,Michael Garland.Efficient Adaptive Simplification ofMassive Meshes[C]//Proceedings of IEEE Visualization,San Diego,California,2001:127-134
5 Rossignac J,Borrel P.Multi-resolution 3D Approximations forRendering Complex Scenes[C]//Proceedings of Modeling in ComputerGraphics,Genova,1993:455-465
6 Low Kok-Lim,Tan Tiow-Seng.Model Simplification UsingVertex-Clustering[C]//Proceedings of the 1997 symposium onInteractive 3D graphics,Providence,Rhode Island,1997:75-81
7 D Luebke,C Erikson.View-Dependent Simplification of ArbitraryPolygonal Environments[C]//Proceedings of Computer Graphics,AnnualConference Series,ACM SIGGRAPH,Los Angeles,1997:199-208
8 Peter Lindstrom.Out-of-Core Simplification of Large Polygonal Models[C]//Proceedings of Computer Graphics,Annual Conference Series,ACMSIGGRAPH,New Orleans,2000,259-262
9 周昆,潘志庚,石教英。一种新的基于顶点聚类的网格简化算法[J]。自动化学报,1999,25(1):1-8
10 Brodsky Dmitry,Watson Benjamin.Model Simplification ThroughRefinement[C]//Proceedings of Graphics Interface,Montreal,2000:221-228
11 蔡康颖,王文成,费广正,吴恩华。一遍完成的平衡布点外存模型简化算法[J]。计算机学报,2002,25(9):936-944
12 费广正,蔡康颖,吴恩华。基于细节迁移的快速外存模型简化方法[J]。软件学报,2001,12(11):1630-1638
13 陶志良,成迟薏,潘志庚等。多分辨率BSP树的生成及应用[J]。软件学报,2001,12(1):117-125
14 苗兰芳,彭群生。基于点索引的网格模型的层次结构[J]。计算机辅助设计与图形学学报,2005,17(9):1906-1910
15 Hao Song,His-Yung Feng.A Global Clustering Approach to Point CloudSimplification with a Specified Data Reduction Ratio[J].Computer-Aided Design,2008,40(3):281-292。