一种三维数字几何网格模型结构的自动修复方法

文档序号:6522959阅读:424来源:国知局
一种三维数字几何网格模型结构的自动修复方法
【专利摘要】本发明公开了一种三维数字几何网格模型结构的自动修复方法,该方法将任意结构的三维数字几何网格模型转换为满足3D打印要求的水密二维流形三维数字几何网格模型。方法主要包括以下步骤:对输入网格模型进行体素化,将模型从多边形网格形式转化成由体素堆积的体表示形式,并将所得体素标记为内部体素、外部体素和边界体素;分析每个包含8个相邻体素的计算单元,根据其中内部体素、外部体素和边界体素的数量及相对位置,确定每个计算单元内部生成面片的方式,并由这些面片组成输出网格模型;检测并修复输出网格模型中的缺陷结构,校正输出网格模型中面片的法向量,并使用输入网格模型对输出网格模型进行校准获得最终的输出网格模型。
【专利说明】一种三维数字几何网格模型结构的自动修复方法
【技术领域】
[0001]本发明涉及一种数字几何网格模型结构修复方法,属于计算机图形学领域,具体地说是一种基于体表示的三维数字几何网格模型结构自动修复方法。
技术背景
[0002]随着三维扫描技术和三维建模技术的发展,我们正处在一个三维模型爆炸式增长的时期,其中使用最广泛的是三维网格模型。但是由于三维模型的来源(如遥感,医学扫描,CAD等)多样,使得三维网格模型在结构上存在巨大的差异,进而导致网格模型的分析和重用受到限制。例如,大多数的网格模型处理及分析方法,如测地近邻计算、有限元分析、光栅化、曲面平滑、模型简化等,都要求输入网格模型是流形的网格曲面;另外,在三维模型的应用领域,其中具有代表性的是近年来兴起的3D打印,也要求所使用的网格模型必须是水密(watertight)二维流形(2-dimensional manifold)的,否则将无法使用或者导致最终打印出的实体模型出现严重错误。
[0003]尽管大量工作针对基于表面的(surface-based)网格模型结构修复展开研究,如文献 1:Attene, Marco, Marcel Campen, and Leif Kobbelt."Polygon mesh repairing:Anapplication perspective.〃ACM Computing Surveys (CSUR) 45,n0.2 (2013): 15.,然而,大多数方法都仅能对某一类特定缺陷进行检测和处理。如文献2 =Klincsek, G.T."Minimaltriangulations of polygonal domains."Ann.Discrete Math9(1980):121-123.主要针对网格模型中存在的孔洞(hole)进行处理;文献3:Gueziec, Andre, GabrielTaubin,Francis Lazarus, and B.Horn."Cutting and stitching:Converting setsof polygons to manifold surfaces."Visualization and Computer Graphics, IEEETransactions on7, n0.2 (2001): 136-151.主要针对网格模型中的复杂边(complexedge)和奇异顶点(singular vertex)进行处理;文献 4:Barequet, Gill, and MichaSharir."Filling gaps in the boundary of a polyhedron."Computer Aided GeometricDesignl2, n0.2 (1995): 207-229.,主要针对网格模型面片之间的缝隙(gap)和重叠(overlap)进行处理。此类基于表面的网格模型修复方法的不足除了在于仅能修复某一类特定缺陷之外,还在于对输入网格模型有一定的要求,然而,这些要求有时却是难以满足甚至无法自动检测的。另外,此类算法需要用户交互,因此无法用于网格模型修复过程的自动化。
[0004]另一方面,文献5:Nooruddin, Fakir S., and Greg Turk."Simplificationand repair of polygonal models using volumetric techniques."Visualizationand Computer Graphics, IEEE Transactions on9, n0.2 (2003): 191-205.首先提出使用基于体表示(volumetric)的网格模型修复方法,并根据体素化得到的结果直接生成流形的网格模型。但是其面片提取时使用的文献6:Lorensen, William E.,and HarveyE.Cline."Marching cubes:A high resolution3D surface construction algorithm.〃InACM Siggraph Computer Graphics, vol.21, n0.4, pp.163-169.ACM, 1987.中提出的Marching Cubes(MC)算法,在面片提取的某些情况存在歧义;同时,文献7:Newman, TimothyS., and Hong Y1.survey of the marching cubes algorithm.〃Computers&Graphics30,n0.5(2006):854-879.指出,尽管存在解决MC算法中歧义的方法,但是这些方法不仅需要用户针对模型中出现的歧义选择不同的解决方法,而且还大大增加了 MC算法的时间复杂度。

【发明内容】

[0005]发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种三维数字几何网格模型结构的自动修复方法,主要用于满足3D打印对三维数字几何网格模型结构的要求。
[0006]为了解决上述技术问题,本发明公开了一种三维数字几何网格模型结构的自动修复方法,包括以下步骤:
[0007]步骤一,三维模型网格生成:借助输入网格模型体素化后得到的体表示作为中间状态,对输入网格模型进行处理,生成输出网格模型,包括体素化、边界提取和网格提取三个步骤:
[0008]体素化包括:将输入网格模型的包围立方体空间均匀切割为NXNXN个体素,N为体素化的维数,并将所得体素分别标记为内部体素和外部体素,所述体素为输入网格模型的包围立方体空间被切割成的一组立方体;
[0009]边界提取包括:根据内部体素和外部体素的相对位置,提取出处在内部体素和外部体素交界处的边界体素;
[0010]网格提取包括:从所述边界体素中,生成顶点集合和三角面片集合,并将所有的三角面片组成输出网格模型;
[0011]步骤二,三维模型网格优化:处理步骤一获得的输出网格模型,包括缺陷结构删除、面片法向量校正和模型校准三个步骤:
[0012]缺陷结构删除包括:检测和删除输出网格模型中存在的缺陷结构,确保输出三维网格模型是水密二维流形网格模型;
[0013]面片法向量校正包括:根据步骤122获得的内部体素、外部体素和边界体素标记结果,校正三角面片顶点序号的顺序;
[0014]模型校准包括:将输出网格模型的顶点投影到输入网格模型的边上,使用输入模型对输出模型进行校准。
[0015]本发明步骤一中所述的体素化部分还包括以下步骤:步骤111,计算输入网格模型的包围盒,所述包围盒是指包含输入网格模型且边平行于坐标轴的最小六面体;步骤112,将输入网格模型缩放平移至[0,I] X [0,I] X [0,I]的三维空间中,得到缩放比率和平移参数;步骤113,通过移动OpenGL在不同视点下的可视空间来模拟切割输入网格模型所在三维空间的过程,并根据在不同视点下得到的颜色缓存判断对应的体素是属于三维网格模型内部还是外部,从而将该体素标记为内部体素或外部体素,所述OpenGL的不同视点包括沿三个坐标轴的正反两个方向的共6个视点。
[0016]本发明步骤一中所述的边界提取部分还包括以下步骤:步骤121,获取每个内部体素的三组面邻居体素,所述一组面邻居体素是指位于当前体素的前后或左右或上下的两个体素;步骤122,根据每组面邻居体素的标记值的和是否为零,判断当前内部体素是否为边界体素,如果为零,则将当前内部体素标记为边界体素。
[0017]本发明步骤一中所述的网格提取部分还包括以下步骤:步骤131,根据每个边界体素的位置,生成相应顶点的坐标,并将此顶点加入输出网格模型顶点集合;步骤132,根据每个计算单元中内部体素、外部体素及边界体素的数量及相对位置,在这个计算单元内部生成三角面片,并连接这些三角面片组成输出网格模型,所述计算单元是指组成一个立方体区域的8个相邻体素。
[0018]本发明步骤二中所述的缺陷结构删除部分还包括以下步骤:步骤211,通过检测输出模型中的悬挂面,迭代删除悬挂面,所述悬挂面是指包含悬挂边的面片,所述悬挂边是指仅与一个面片相连的边;步骤212,检测与每个顶点相连的面片之间的边连通性,如果与顶点相连的面片集合中存在非边连通的面片,设定该顶点为奇异顶点,复制该奇异顶点,将非边连通的面片中该奇异顶点的序号更新为复制得到新的顶点序号,以消除该奇异顶点;所述面片的边连通性是指两个面片边连通,即这两个面片有公共边,或者这两个面片边连通的面片有公共边;步骤213,检测与每条边相连的面片的数量,如果边连接的面片数量大于2,设定该边为复杂边。再通过检测该复杂边的每个顶点的面片在去除该复杂边后的边连通性,如果与顶点相连的面片集合中存在非边连通的面片,则将该顶点复制,将非边连通的面片中该顶点的序号更新为复制得到新的顶点序号,以消除复杂边;步骤214,检测顶点与面片之间的隶属关系,如果顶点不属于任何面片,则设定该顶点为悬挂顶点,从输出网格模型的顶点集合中删除该悬挂顶点。
[0019]本发明步骤二中所述的面片法向量校正部分还包括以下步骤:步骤221,借助步骤122中获得的体素标记,计算每个输出网格模型顶点的法向量;步骤222,由每个三角面片的三个顶点的法向量平均得到该三角面片的法向量;步骤223,计算由三角面片当前顶点顺序依照右手法则生成的法向量和步骤222中得到的法向量之间的夹角,依据所述夹角调整面片当前顶点序号顺序。
[0020]本发明步骤二中所述的模型校准部分还包括以下步骤:步骤231,将输入网格模型进行网格细分,使细分后的输入网格模型的边的长度小于设定阈值,所述网格模型的网格细分是指通过在长度大于设定阈值的边的中点位置生成新的顶点,将每个包含该边的三角面片替换成两个新生成的三角面片;设定阈值为包围盒最长边的1/20 ;步骤232,将输出网格模型的顶点投影到步骤231获得的细分后的输入网格模型的目标边上,所述目标边是指候选边的集合中与待投影的输出网格模型的顶点之间投影距离最小的边,候选边是指输出网格模型的顶点能够投影到该边的内部而不是该边的延长线上;步骤233,根据输出网格模型中顶点及与其相邻的顶点的投影情况,对输出网格模型中顶点的位置进行调整。统计输出网格模型中与当前顶点相邻的顶点投影到输入模型中包含当前顶点目标边的各个面片上的数量,选择其中投影顶点数量最多的面片,使用投影到该面片上的顶点和当前顶点的坐标的平均值作为当前顶点的新位置,所述顶点投影到面片上是指顶点的目标边是该面片的边;步骤234,根据步骤112的缩放比率和平移参数,将输出模型还原至步骤112中缩放平移之前输入模型的大小及所在空间。
[0021]本发明在体表示修复方法的基础上,首先生成具有便于处理的网格结构的三维数字几何模型,再使用基于表面的模型修复算法对生成的模型进行修复,进而实现三维数字几何模型的自动修复。
[0022]有益效果:本发明具有以下优点:首先,本发明接受任意结构的三维数字几何网格模型作为输入模型,并将其处理成满足3D打印要求的水密二维流形三维数字几何网格模型;其次,本发明通过使用输入模型对输出模型进行校准,使得输出模型在全局特征和局部特征上都与输入模型保持较高的一致性;最后,本发明在处理过程中无需与用户进行交互,可自动完成三维数字几何模型结构修复的整个过程,适合批量处理大量模型。
【专利附图】

【附图说明】
[0023]下面结合附图和【具体实施方式】对本发明做进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0024]图1是本发明的处理流程示意图。
[0025]图2a?图2h是本发明处理的三维数字几何网格模型结构缺陷示意图。
[0026]图3是步骤132中面片生成方式示意图。
[0027]图4a?图4c是实施例的输入三维数字几何网格模型中不同图元的示意图。
[0028]图5a?图5c是对图4a?图4c所示输入模型体素化后,由边界体素生成的网格模型中不同图元的示意图。
[0029]图6a?图6c是将图5a?图5c所示模型进行缺陷结构消除和面片法向量校正后获得的网格模型中不同图元的示意图。
[0030]图7a?图7c是对图4a?图4c所示输入模型进行网格细分后获得的网格模型中不同图元的示意图。
[0031]图8a?图8c是使用图7a?图7c所示模型对图6a?图6c所示模型进行校准后获得的网格模型中不同图元的示意图。
[0032]图9a?图9c是将图8a?图8c所示模型进行顶点位置进行调整后获得的网格模型中不同图元的示意图。
【具体实施方式】:
[0033]由于本发明的特殊性,附图效果只能以灰度形式进行展现。
[0034]本发明所修复的缺陷,为会导致输入三维数字几何网格模型无法满足3D打印要求或打印出错误的模型的网格结构缺陷,具体为悬挂部件(dangling element)、复杂边(complex edge)、奇异顶点(singular vertex)、法向量不一致(inconsistentorientation)、面片退化(degeneracy)、缝隙(gap)、面片交错(intersection)、孔洞(hole),各缺陷示例如图2a?图2h所示。其中,图2a是悬挂部件示意图,图2b是复杂边示意图,图2c是奇异顶点示意图,图2d是法向量不一致示意图,图2e是退化面片示意图,图2f是缝隙示意图,图2g面片交错示意图,图2h是孔洞示意图。
[0035]如图1所示,本发明公开的一种三维数字几何网格模型结构的自动修复方法,具体包括以下步骤:
[0036]步骤一,三维模型网格生成:借助输入网格模型体素化后得到的体表示作为中间状态,对输入网格模型进行处理,生成输出网格模型;
[0037]步骤二,三维模型网格优化:处理步骤一获得的输出网格模型。[0038]本发明的输入三维模型为任意结构的三维数字几何网格模型。
[0039]下面具体介绍各个步骤的主要流程:
[0040]1.三维模型网格生成
[0041]三维模型网格生成过程借助输入网格模型体素化后得到的体表示作为中间状态,对输入网格模型进行处理,生成输出网格模型,包括体素化、边界提取和网格提取三个步骤。
[0042]1.1体素化
[0043]体素化过程将输入网格模型的包围立方体空间均匀切割为NXNXN个体素,N为体素化的维数,并将所得体素分别标记为内部体素和外部体素,所述体素为输入网格模型的包围立方体空间被切割成的一组立方体。步骤如下:
[0044]步骤I先计算输入网格模型Minput的包围盒,所述包围盒是指包含输入网格模型且边平行于坐标轴的最小六面体,包围盒的两个对角控制点BoundingBoxmax和BoundingBoxmin分别为:
[0045]BoundingBoxmax= (Xniax,


^max? ^max^
[0046]=(MAX{x| (x, y, z) G VinpuJ , MAX {y | (x, y, z) G VinpuJ , MAX {z | (x, y, z) G VinpuJ)BoundingBoxmin= (Xniin, ymin, Zniin)
[0047]= (MIN {x I (x, y, z) G VinpuJ,MIN {y | (x, y, z) G VinpuJ,MIN {z | (x, y, z) G VinpuJ)其中,x,y,z分别为控制点在三个坐标轴上的坐标,MAX为求集合中的最大值函数,MIN为求集合中的最小值函数,Vinput为输入网格模型Minput的顶点集合。
[0048]步骤2将输入模型Minput缩放平移至[0,I] X [0,I] X [0,I]的空间中,得到缩放后的模型M' input,缩放比率scale及平移向量tmmtate分别为:
[0049]scale=l/MAX {(BoundingBoxmax [i]-BoundingBoxmin[i]) | i G {X,Y,Z}}
[0050]translate = -BoumiingBoxmifl
[0051]其中,MAX为求集合中的最大值函数,X,Y,Z为坐标系的X轴,Y轴,Z轴。
[0052]步骤3初始化OpenGL窗口大小为NXN,N为体素化的维数。通过在不同视点下移动OpenGL中的可视空间来模拟切割模型所在空间的过程。生成的体素使用NXNXN三维矩阵VoxelMatrix[N] [N] [N]来保存,矩阵元素的值对应体素的标记,初始化为O。具体方法如下:
[0053]首先,设置OpenGL的视口尺寸,多边形绘制模式、模型绘制颜色、场景背景色及像素对其方式,分别为:
[0054]
【权利要求】
1.一种三维数字几何网格模型结构的自动修复方法,其特征在于,包括以下步骤: 步骤一,三维模型网格生成:借助输入网格模型体素化后得到的体表示作为中间状态,对输入网格模型进行处理,生成输出网格模型,包括体素化、边界提取和网格提取三个步骤: 体素化包括:将输入网格模型的包围立方体空间均匀切割为NXNXN个体素,N为体素化的维数,并将所得体素分别标记为内部体素和外部体素,所述体素为输入网格模型的包围立方体空间被切割成的一组立方体; 边界提取包括:根据内部体素和外部体素的相对位置,提取出处在内部体素和外部体素交界处的边界体素; 网格提取包括:从所述边界体素中,生成顶点集合和三角面片集合,并将所有的三角面片组成输出网格模型; 步骤二,三维模型网格优化:处理步骤一获得的输出网格模型,包括缺陷结构删除、面片法向量校正和模型校准三个步骤: 缺陷结构删除包括:检测和删除输出网格模型中存在的缺陷结构,确保输出三维网格模型是水密二维流形网格模型; 面片法向量校正包括:根据步骤122获得的内部体素、外部体素和边界体素标记结果,校正三角面片顶点序号的顺序; 模型校准包括:将输出网格模型的顶点投影到输入网格模型的边上,使用输入模型对输出模型进行校准。
2.根据权利要求1所述的一种三维数字几何网格模型结构的自动修复方法,其特征在于,步骤一中所述的体素化部分包含以下步骤: 步骤111,计算输入网格模型的包围盒,所述包围盒是指包含输入网格模型且边平行于坐标轴的最小六面体; 步骤112,将输入网格模型缩放平移至[O,I] X [O,I] X [O,I]的三维空间中,得到缩放比率和平移参数; 步骤113,通过移动OpenGL在不同视点下的可视空间模拟切割输入网格模型所在三维空间的过程,并根据在不同视点下得到的颜色缓存判断对应的体素是属于三维网格模型内部还是外部,从而将该体素标记为内部体素或外部体素,所述OpenGL的不同视点包括沿三个坐标轴的正反两个方向的共6个视点。
3.根据权利要求2所述的一种三维数字几何网格模型结构的自动修复方法,其特征在于,步骤一中所述的边界提取部分包含以下步骤: 步骤121,获取每个内部体素的三组面邻居体素,所述一组面邻居体素是指位于当前体素的前后或左右或上下的两个体素; 步骤122,根据每组面邻居体素的标记值的和是否为零,判断当前内部体素是否为边界体素,如果为零,则将当前内部体素标记为边界体素。
4.根据权利要求3所述的一种三维数字几何网格模型结构的自动修复方法,其特征在于,步骤一中所述的网格提取部分包含以下步骤: 步骤131,根据每个边界体素的位置,生成相应顶点的坐标,并将此顶点加入输出网格模型顶点集合;步骤132,根据每个计算单元中内部体素、外部体素及边界体素的数量及相对位置,在这个计算单元内部生成三角面片,并连接这些三角面片组成输出网格模型,所述计算单元是指组成一个立方体区域的8个相邻体素。
5.根据权利要求4所述的一种三维数字几何网格模型结构的自动修复方法,其特征在于,步骤二中所述的缺陷结构删除部分包含以下步骤: 步骤211,检测输出模型中的悬挂面,迭代删除悬挂面,所述悬挂面是指包含悬挂边的面片,所述悬挂边是指仅与一个面片相连的边; 步骤212,检测与每个顶点相连的面片之间的边连通性,如果与顶点相连的面片集合中存在非边连通的面片,设定该顶点为奇异顶点,复制该奇异顶点,将非边连通的面片中该奇异顶点的序号更新为复制得到新的顶点序号,以消除该奇异顶点;所述面片的边连通性是指两个面片边连通,即这两个面片有公共边,或者这两个面片边连通的面片有公共边; 步骤213,检测与每条边相连的面片的数量,如果边连接的面片数量大于2,设定该边为复杂边,检测该复杂边的每个顶点的面片在去除该复杂边后的边连通性,如果与顶点相连的面片集合中存在非边连通的面片,则将该顶点复制,将非边连通的面片中该顶点的序号更新为复制得到新的顶点序号,以消除该复杂边; 步骤214,检测顶点与面片之间的隶属关系,如果顶点不属于任何面片,则设定该顶点为悬挂顶点,从输出网格模型的顶点集合中删除该悬挂顶点。
6.根据权利要求5所述的一种三维数字几何网格模型结构的自动修复方法,其特征在于,步骤二中所述的面片法向量校正部分包含以下步骤:` 步骤221,根据步骤122中获得的体素标记,计算每个输出网格模型顶点的法向量; 步骤222,由每个三角面片的三个顶点的法向量平均得到该三角面片的法向量; 步骤223,计算由三角面片当前顶点顺序依照右手法则生成的法向量和步骤222中得到的法向量之间的夹角,依据所述夹角调整面片当前顶点序号顺序。
7.根据权利要求6所述的一种三维数字几何网格模型结构的自动修复方法,其特征在于,步骤二中所述的模型校准部分包含以下步骤: 步骤231,将输入网格模型进行网格细分,使细分后的输入网格模型的边的长度小于设定阈值,所述网格模型的网格细分是指通过在长度大于设定阈值的边的中点位置生成新的顶点,将每个包含该边的三角面片替换成两个新生成的三角面片;设定阈值为包围盒最长边的1/20 ; 步骤232,将输出网格模型的顶点投影到步骤231获得的细分后的输入网格模型的目标边上,所述目标边是指候选边的集合中与待投影的输出网格模型的顶点之间投影距离最小的边,所述候选边是指输出网格模型的顶点能够投影到该边的内部; 步骤233,根据输出网格模型中顶点及与其相邻的顶点的投影情况,对输出网格模型中顶点的位置进行调整;统计输出网格模型中与当前顶点相邻的顶点投影到输入模型中包含当前顶点目标边的各个面片上的数量,选择投影顶点数量最多的面片,将投影到该面片上的顶点和当前顶点的坐标的平均值作为当前顶点的新位置,所述顶点投影到面片上是指顶点的目标边是该面片的边; 步骤234,根据步骤112的缩放比率和平移参数,将输出模型还原至步骤112中缩放平移之前输入模型的大小及所在空间。
【文档编号】G06T5/00GK103617603SQ201310662076
【公开日】2014年3月5日 申请日期:2013年12月6日 优先权日:2013年12月6日
【发明者】孙正兴, 郎许锋, 严海, 宋沫飞 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1