首页> 中国专利> 三维模型的边界面网格单元的处理方法和装置

三维模型的边界面网格单元的处理方法和装置

摘要

本发明公开了一种三维模型的边界面网格单元的处理方法和装置。其中,该处理方法包括:查找边界网格单元数据中的密集边,并基于密集边确定第一密集面;对第一密集面的网格数据进行密集边处理,得到第二密集面;判断第二密集面上的为尖锐单元的第一单元是否具有与其邻接的为尖锐单元的第二单元;若否,按照第一单元的类型对第一单元进行位姿调整操作,得到第三密集面;若是,对第一单元和第二单元的区域进行重构操作,得到第三密集面。通过本发明,解决了现有技术中得到高质量的三维模型中网格的方法耗时长、效率低的问题,实现了快速高效地调整边界网格单元的质量的效果。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-27

    授权

    授权

  • 2015-05-27

    实质审查的生效 IPC(主分类):G06T17/30 申请日:20141223

    实质审查的生效

  • 2015-04-29

    公开

    公开

说明书

技术领域

本发明涉及数据处理领域,具体而言,涉及一种三维模型的边界面网格单元的处 理方法和装置。

背景技术

ACIS是目前广泛使用的几何驱动引擎和图形系统开发平台,现有很多大型商业软 件,如AutoCAD、Solidwork、Rhio等均采用了ACIS作为图形开发的内核。由于现在 CAD/CAE集成一体化技术不断发展,在同一平台内部进行几何建模和仿真分析成为 越来越多人研究的方向。ACIS本身具有三维网格单元划分功能,适用于边界元法、无 网格法等分析计算的数据源。但对于造型复杂,曲面特征较多的模块,ACIS的划分方 法容易产生较多的尖锐单元、密集边分布等质量较差情况,较大程度上会影响数值分 析计算结果精度。

近年来,随着计算机技术的飞速发展,CAD/CAE功能得到不断完善,但二者之 间的融合技术依然未有重大突破。一直以来,很多学者致力于研究CAD/CAE一体化 建模,在CAE中集成部分CAD建模功能。但由于数值分析的前处理及计算效率问题, 这种集成并没有真正实现建模和分析的同步。传统的有限元法分析中,前处理占据整 个有限元处理时间的40%~45%,其中,网格剖分消耗了大部分时间。同时,准确数值 计算通常通过牺牲计算时间来获得好的结果,而高质量的网格单元能起到较大的帮助 作用。因此,提高网格剖分效率及质量以及加速数值计算是解决CAD和CAE融合难 题的关键。

针对不同的环境和要求,近年来出现了多种网格剖分算法。主流的算法包含有映 射法、拓扑分解法、波前法,栅格法等。但没有任何算法只通过一次剖分就可以能得 到高质量的网格单元。

目前,优化网格质量的方法分为两种类型:1)一类是通过插入、删除节点或局部 节点重置改变网格的拓扑结构;2)另一类是在不改变拓扑信息前提下,通过计算所有 节点最优位置,纠正形状不规整单元,使之达到理想的形状提升网格质量。实际应用 中,使用较多的是第一种类型算法。此类方法大都针对于局部规划、尺寸调整、单元 面积优化等要求。虽然此类优化算法但在处理大规模的数据时,能节约大量的计算时 间,但算法本身可靠性较差,优化结果波动较大。最早出现且使用最广泛的此类算法 是Laplace算法,主要是将节点调整到与之邻接的所有节点中间位置。后来出现了评 价函数最优法等算法。上述方法执行需要消耗大量时间,效率较低。

针对现有技术中得到高质量的三维模型中网格的方法耗时长、效率低的问题,目 前尚未提出有效的解决方案。

发明内容

本发明的主要目的在于提供一种三维模型的边界面网格单元的处理方法和装置, 以解决得到高质量的三维模型中网格的方法耗时长、效率低的问题。

为了实现上述目的,根据本发明实施例的一个方面,提供了一种三维模型的边界 面网格单元的处理方法。

根据本发明的方法包括:查找边界网格单元数据中的密集边,并基于密集边确定 第一密集面;对第一密集面的网格数据进行密集边处理,得到第二密集面;判断第二 密集面上的为尖锐单元的第一单元是否具有与其邻接的为尖锐单元的第二单元,其中, 尖锐单元为至少有一个内角的角度小于预设角度值的三角形单元;若第二密集面上的 为尖锐单元的第一单元不具有与其邻接的为尖锐单元的第二单元,按照第一单元的类 型对第一单元进行位姿调整操作,得到第三密集面;若第二密集面上的为尖锐单元的 第一单元具有与其邻接的为尖锐单元的第二单元,对第一单元和第二单元的区域进行 重构操作,得到第三密集面。

进一步地,查找边界网格单元数据中的密集边,并基于密集边确定第一密集面包 括:计算网格单元数据的面信息中每条边任意两个节点间的平均距离;按照从大到小 的顺序对平均距离进行排序,得到距离序列;依序计算距离序列中两两平均距离之间 的比值,若比值大于第一预设阈值,则检测出距离序列中两两平均距离中排序在后的 边为密集边;若面信息所指示的面为平面,且平面的非密集边长度与密集边长度之比 小于第二预设阈值,则确定平面为第一密集面。

进一步地,对第一密集面的网格数据进行密集边处理,得到第二密集面包括:对 第一密集面的密集边进行稀疏处理得到处理后的第四密集面,其中,对第一密集面的 密集边进行稀疏处理包括:获取第一密集面的密集边的映射点数量o和第一密集面的 密集边的节点数量k;删除密集边中下标非为l·n-l+1的节点,得到第四密集面,l=0, 1,2…,n=k/o;获取第四密集面的密集边点集合ω={μ1,μ2,…,μp},依次从密集边 点集合中取μi、μi+1以及第一密集面的密集边的密集边的映射点集合中的节点ζi (i=1,2,3…),构造第三单元,得到第二密集面,其中,i<p。

进一步地,对第一单元和第二单元的区域进行重构操作,得到第三密集面包括: 获取与第二单元邻接的第四单元;若第i四单元为尖锐单元,则将第四单元记录为第 一单元,直至第四单元不为尖锐单元;获取第一单元、第二单元和第四单元构成的图 形的最外层节点的节点数据;调用多边形网格剖析算法对节点数据所包围的多边形区 域进行网格重构处理,得到第三密集面。

进一步地,按照第一单元的类型对第一单元进行位姿调整操作,得到第三密集面 包括:判断第一单元中内角角度小于预设角度值的内角个数;若内角个数为1,则判 断出第一单元为狭长三角形单元,判断狭长三角形单元的三个顶点是否均在第二密集 面的边界上,其中,三个顶点包括第一节点、第二节点和第三节点,其中,第一节点 的角度小于预设角度值。若狭长三角形单元的三个顶点未均在第二密集面的边界上, 且第二节点和第三节点均具有四个邻接单元,比较第二节点和第三节点对应狭长三角 形单元的第一角度和第二角度;若第一角度大于第二角度,则获取四个邻接单元的五 个节点,删除五个节点中的第三节点,按照逆序生成第五单元和第六单元,得到第三 密集面,其中,第五单元的顶点包括第一节点、第二节点和五个节点中的第四节点, 第六单元的顶点包括第二节点、第四节点和五个节点中的第五节点,五个节点包括第 一节点、第二节点、第三节点、第四节点和第五节点。若狭长三角形单元的三个顶点 未均在第二密集面的边界上,且第二节点或第三节点具有四个邻接单元,获取四个邻 接单元的五个节点,删除五个节点中具有四个邻接单元的第三节点,按照逆序生成第 五单元和第六单元,得到第三密集面,其中,第五单元的顶点包括第一节点、第二节 点和五个节点中的第四节点,第六单元的顶点包括第二节点、第四节点和五个节点中 的第五节点,五个节点包括第一节点、第二节点、第三节点、第四节点和第五节点。 若狭长三角形单元的三个顶点均在第二密集面的边界上,则获取第二节点与第三节点 的共同的共面邻接单元,获取共面邻接单元的第四节点,按照逆序生成第五单元和第 六单元,得到第三密集面,其中,共面邻接单元的顶点包括:第二节点、第三节点和 第四节点,第五单元为共面邻接单元,第六单元的顶点包括:第一节点、第二节点和 第四节点。若内角个数为2,则判断出第一单元为扁平三角形单元,获取扁平三角形 单元的第一节点、第二节点和第三节点,其中,第一节点和第二节点的角度小于预设 角度值。判断第一节点和第二节点是否均在第二密集面的边界上;若第一节点和第二 节点不同时在第二密集面的边界上,则获取第一节点与第三节点的共同的共面邻接单 元,获取共面邻接单元的第四节点,按照逆序生成第五单元和第六单元,得到第三密 集面,其中,共面邻接单元的顶点包括:第一节点、第三节点和第四节点,第五单元 为共面邻接单元,第六单元的顶点包括:第二节点、第三节点和第四节点。若第一节 点和第二节点同时在第二密集面的边界上,则计算第三节点的共面邻接单元的数量。 若共面邻接单元的数量为1,则获取共面邻接单元的第四节点,按照逆序生成第五单 元和第六单元,得到第三密集面,其中,共面邻接单元的顶点包括:第一节点、第三 节点和第四节点,第五单元为共面邻接单元,第六单元的顶点包括:第二节点、第三 节点和第四节点。若共面邻接单元的数量为3,则获取三个共面邻接单元的四个节点, 将三个共面邻接单元的并集作为第五单元,得到第三密集面,其中,三个共面邻接单 元的四个节点包括:第一节点、第二节点、第三节点和第四节点,第五单元的顶点包 括第一节点、第二节点和第四节点。若共面邻接单元的数量为4,则获取四个共面邻 接单元的四个节点,其中,四个节点包括:四个共面邻接单元的并集组成的图形的四 个顶点,四个顶点包括:第一节点、第二节点、第四节点和第五节点。比较第四节点 的第一角度与第五节点的第二角度;从第一角度与第二角度之间大的角度对应的节点 引出对角线,重新划分四个共面邻接单元的并集组成的图形,得到第五单元和第六单 元,得到第三密集面。

为了实现上述目的,根据本发明实施例的另一方面,提供了一种三维模型的边界 面网格单元的处理装置。

根据本发明的装置包括:查找模块,用于查找边界网格单元数据中的密集边,并 基于密集边确定第一密集面;密集边处理模块,用于对第一密集面的网格数据进行密 集边处理,得到第二密集面;第一判断模块,用于判断第二密集面上的为尖锐单元的 第一单元是否具有与其邻接的为尖锐单元的第二单元,其中,尖锐单元为至少有一个 内角的角度小于预设角度值的三角形单元;位姿调整模块,用于若第二密集面上的为 尖锐单元的第一单元不具有与其邻接的为尖锐单元的第二单元,按照第一单元的类型 对第一单元进行位姿调整操作,得到第三密集面;重构处理模块,用于若第二密集面 上的为尖锐单元的第一单元具有与其邻接的为尖锐单元的第二单元,对第一单元和第 二单元的区域进行重构操作,得到第三密集面。

进一步地,查找模块包括:第一计算模块,用于计算网格单元数据的面信息中每 条边任意两个节点间的平均距离;排序模块,用于按照从大到小的顺序对平均距离进 行排序,得到距离序列;第一检测模块,用于依序计算距离序列中两两平均距离之间 的比值,若比值大于第一预设阈值,则检测出距离序列中两两平均距离中排序在后的 边为密集边;第一确定模块,用于若面信息所指示的面为平面,且平面的非密集边长 度与密集边长度之比小于第二预设阈值,则确定平面为第一密集面。

进一步地,密集边处理模块包括:稀疏处理模块,用于对第一密集面的密集边进 行稀疏处理得到处理后的第四密集面,其中,对第一密集面的密集边进行稀疏处理包 括:获取第一密集面的密集边的映射点数量o和第一密集面的密集边的节点数量k; 删除密集边中下标非为l·n-l+1的节点,得到第四密集面,l=0,1,2…,n=k/o;单 元构造模块,用于获取第四密集面的密集边点集合ω={μ1,μ2,…,μp},依次从密集边 点集合中取μi、μi+1以及第一密集面的密集边的密集边的映射点集合中的节点ζi (i=1,2,3…),构造第三单元,得到第二密集面,其中,i<p。

进一步地,重构处理模块包括:第一获取模块,用于获取与第二单元邻接的第四 单元;记录模块,用于若第四单元为尖锐单元,则将第四单元记录为第一单元,直至 第四单元不为尖锐单元;第二获取模块,用于获取第一单元、第二单元和第四单元构 成的图形的最外层节点的节点数据;重构子模块,用于调用多边形网格剖析算法对节 点数据所包围的多边形区域进行网格重构处理,得到第三密集面。

进一步地,位姿调整模块包括:第二判断模块,用于判断第一单元中内角角度小 于预设角度值的内角个数;第三判断模块,用于若内角个数为1,则判断出第一单元 为狭长三角形单元,判断狭长三角形单元的三个顶点是否均在第二密集面的边界上, 其中,三个顶点包括第一节点、第二节点和第三节点,其中,第一节点的角度小于预 设角度值。第一单元处理模块,用于若狭长三角形单元的三个顶点未均在第二密集面 的边界上,且第二节点和第三节点均具有四个邻接单元,比较第二节点和第三节点对 应狭长三角形单元的第一角度和第二角度;若第一角度大于第二角度,则获取四个邻 接单元的五个节点,删除五个节点中的第三节点,按照逆序生成第五单元和第六单元, 得到第三密集面,其中,第五单元的顶点包括第一节点、第二节点和五个节点中的第 四节点,第六单元的顶点包括第二节点、第四节点和五个节点中的第五节点,五个节 点包括第一节点、第二节点、第三节点、第四节点和第五节点。第二单元处理模块, 用于若狭长三角形单元的三个顶点未均在第二密集面的边界上,且第二节点或第三节 点具有四个邻接单元,获取四个邻接单元的五个节点,删除五个节点中具有四个邻接 单元的第三节点,按照逆序生成第五单元和第六单元,得到第三密集面,其中,第五 单元的顶点包括第一节点、第二节点和五个节点中的第四节点,第六单元的顶点包括 第二节点、第四节点和五个节点中的第五节点,五个节点包括第一节点、第二节点、 第三节点、第四节点和第五节点。

第三单元处理模块,用于若狭长三角形单元的三个顶点均在第二密集面的边界上, 则获取第二节点与第三节点的共同的共面邻接单元,获取共面邻接单元的第四节点, 按照逆序生成第五单元和第六单元,得到第三密集面,其中,共面邻接单元的顶点包 括:第二节点、第三节点和第四节点,第五单元为共面邻接单元,第六单元的顶点包 括:第一节点、第二节点和第四节点。

第四单元处理模块,用于若内角个数为2,则判断出第一单元为扁平三角形单元, 获取扁平三角形单元的第一节点、第二节点和第三节点,其中,第一节点和第二节点 的角度小于预设角度值。第四判断模块,用于判断第一节点和第二节点是否均在第二 密集面的边界上;第五单元处理模块,用于若第一节点和第二节点不同时在第二密集 面的边界上,则获取第一节点与第三节点的共同的共面邻接单元,获取共面邻接单元 的第四节点,按照逆序生成第五单元和第六单元,得到第三密集面,其中,共面邻接 单元的顶点包括:第一节点、第三节点和第四节点,第五单元为共面邻接单元,第六 单元的顶点包括:第二节点、第三节点和第四节点。第二计算模块,用于若第一节点 和第二节点同时在第二密集面的边界上,则计算第三节点的共面邻接单元的数量。第 六单元处理模块,用于若共面邻接单元的数量为1,则获取共面邻接单元的第四节点, 按照逆序生成第五单元和第六单元,得到第三密集面,其中,共面邻接单元的顶点包 括:第一节点、第三节点和第四节点,第五单元为共面邻接单元,第六单元的顶点包 括:第二节点、第三节点和第四节点。第七单元处理模块,用于若共面邻接单元的数 量为3,则获取三个共面邻接单元的四个节点,将三个共面邻接单元的并集作为第五 单元,得到第三密集面,其中,三个共面邻接单元的四个节点包括:第一节点、第二 节点、第三节点和第四节点,第五单元的顶点包括第一节点、第二节点和第四节点。 第八单元处理模块,用于若共面邻接单元的数量为4,则获取四个共面邻接单元的四 个节点,其中,四个节点包括:四个共面邻接单元的并集组成的图形的四个顶点,四 个顶点包括:第一节点、第二节点、第四节点和第五节点。比较模块,用于比较第四 节点的第一角度与第五节点的第二角度;第九单元处理模块,用于从第一角度与第二 角度之间大的角度对应的节点引出对角线,重新划分四个共面邻接单元的并集组成的 图形,得到第五单元和第六单元,得到第三密集面。

根据发明实施例,可以在尽量保留原始拓扑信息、不牺牲优化效率的前提下,将 边界离散网格单元质量较差单元(密集面的尖锐单元)进行特征化区分,针对不同类 型采用不同的高效优化方法,完成全部网格单元的质量调整任务,从而通过局部光顺 的手段得到高质量的网格单元。通过本发明实施例,解决了现有技术中得到高质量的 三维模型中网格的方法耗时长、效率低的问题,实现了快速高效地调整边界网格单元 的质量的效果。

附图说明

构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实 施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的三维模型的边界面网格单元的处理方法的流程图;

图2是根据本发明实施例的第一种可选的三维模型的边界面网格单元的处理方法 的流程图;

图3是根据本发明实施例的三维模型的平面和曲面连接处节点分布类型和密集边 的示意图;

图4是根据本发明实施例的第二种可选的三维模型的边界面网格单元的处理方法 的流程图;

图5是根据本发明实施例的三维模型的尖锐单元的延拓示意图;

图6是根据本发明实施例的第三种可选的三维模型的边界面网格单元的处理方法 的流程图;

图7是根据本发明实施例的第四种可选的三维模型的边界面网格单元的处理方法 的流程图;

图8是根据本发明实施例的尖锐单元的分类的示意图;

图9是根据本发明实施例的三维模型的边界面网格单元的处理前后的对比图;以 及

图10是根据本发明实施例的三维模型的边界面网格单元的处理装置的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的 附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例 仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领 域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于 本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第 二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这 样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语 “包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含 了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步 骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的 其它步骤或单元。

本发明实施例提供了一种三维模型的边界面网格单元的处理方法。

图1是根据本发明实施例的三维模型的边界面网格单元的处理方法的流程图。如 图1所示,该方法包括步骤如下:

步骤S102:查找边界网格单元数据中的密集边,并基于密集边确定第一密集面;

步骤S104:对第一密集面的网格数据进行密集边处理,得到第二密集面;

步骤S106:判断第二密集面上的为尖锐单元的第一单元是否具有与其邻接的为尖 锐单元的第二单元,其中,尖锐单元为至少有一个内角的角度小于预设角度值的三角 形单元;

步骤S108:若第二密集面上的为尖锐单元的第一单元不具有与其邻接的为尖锐单 元的第二单元,按照第一单元的类型对第一单元进行位姿调整操作,得到第三密集面;

步骤S110:若第二密集面上的为尖锐单元的第一单元具有与其邻接的为尖锐单元 的第二单元,对第一单元和第二单元的区域进行重构操作,得到第三密集面。

采用本发明实施例,对三维模型的边界网格单元数据进行处理,并且在处理过程 中,先确定密集面,对密集面进行密集边处理,然后判断第二密集面上的为尖锐单元 的第一单元是否具有与其邻接的为尖锐单元的第二单元,也即判断第二密集面上的尖 锐单元是否为独立的,若第二密集面上的尖锐单元可以连成一个区域,则对该区域执 行重构操作;若第二密集面上的尖锐单元为单个的单元,则针对其的类型对其进行位 姿操作。通过上述实施例,可以在尽量保留原始拓扑信息、不牺牲优化效率的前提下, 将边界离散网格单元质量较差单元(密集面的尖锐单元)进行特征化区分,针对不同 类型采用不同的高效优化方法,完成全部网格单元的质量调整任务,从而通过局部光 顺的手段得到高质量的网格单元。通过本发明实施例,解决了现有技术中得到高质量 的三维模型中网格的方法耗时长、效率低的问题,实现了快速高效地调整边界网格单 元的质量的效果。

其中,上述实施例中的尖锐单元η:指三角形单元内角中有至少有一个角度小于 预设角度值(如20度)。可选地,尖锐三角形单元分为两类:狭长三角形单元η1和扁 平三角形单元η2,狭长三角形单元有一个内角的角度小于预设角度值,扁平三角形 单元有两个内角的角度小于预设角度值。

下面结合附图2详细介绍本发明实施例,如图2所示,本发明实施例可以通过如 下步骤实现:

步骤S202:调用图形系统开发平台的面模块。

具体地,可以调用图形系统开发平台的面模块得到边界网格单元数据。

步骤S204:查找边界网格单元数据中的密集边,并确定密集面。

具体地,可以查找边界网格单元数据中的密集边,并确定密集面用密集边处理算 法,对曲面上的密集边m进行判断,改善辐射狭长单元质量。

步骤S206:判断第二密集面上的为尖锐单元的第一单元是否为单个尖锐单元。

其中,若是,则执行步骤S208;若否,则执行步骤S210。

通过该步骤可以判断出第一单元是否具有与其邻接的为尖锐单元的第二单元。

步骤S208:针对每个面上的单个尖锐单元η,对不同类型的单个尖锐单元调用不 同方法进行逐个位姿调整操作。

具体地,可以研究第一单元的内角特点及尖锐节点位置将之分为六类,对不同类 型的单个尖锐单元调用不同方法进行逐个位姿调整操作。

步骤S210:通过尖锐单元节点的不断延拓操作,构建尖锐单元集中区域,并将此 区域进行网格单元重新离散。

在上述实施例中,优化过程迭代次数少,优化效率较高,给出了非常灵活的网格 单元质量调整方案,解决了各类边界网格单元离散可能出现的问题。

根据本发明的上述实施例,查找边界网格单元数据中的密集边,并基于密集边确 定第一密集面可以包括:计算网格单元数据的面信息中每条边任意两个节点间的平均 距离;按照从大到小的顺序对平均距离进行排序,得到距离序列;依序计算距离序列 中两两平均距离之间的比值,若比值大于第一预设阈值,则检测出距离序列中两两平 均距离中排序在后的边为密集边;若面信息所指示的面为平面,且平面的非密集边长 度与密集边长度之比小于第二预设阈值,则确定平面为第一密集面。

其中,密集边m:边上顺序两两节点间的平均距离与其他边对应的平均距离相差 第一预设阈值(如,2)以上时,此边称为密集边。表示非密集边,面上的密集边集 合М={m1,m2,…,mt},t表示密集边数量;密集面Τ:含有密集边的曲面,或者<第二预设阈值(如1.5)的平面(L(m)表示边 的长度),这样的面被称为密集面。

在本发明的上述实施例中,对第一密集面的网格数据进行密集边处理,得到第二 密集面可以包括:对第一密集面的密集边进行稀疏处理得到处理后的第四密集面,其 中,对第一密集面的密集边进行稀疏处理包括:获取第一密集面的密集边的映射点数 量o和第一密集面的密集边的节点数量k;删除密集边中下标非为l·n-l+1的节点,得 到第四密集面,l=0,1,2…,n=k/o;获取第四密集面的密集边点集合 ω={μ1,μ2,…,μp},依次从密集边点集合中取μi、μi+1以及第一密集面的密集边的 密集边的映射点集合φ中的节点ζi(i=1,2,3…),构造第三单元,得到第二密集面, 其中,i<p。

其中,密集边点μ:密集边上的节点,ω={μ1,μ2,…,μk},k表示密集边上节点 数目;密集边稀疏将ω若干个节点删除,使得边上的节点稀疏化,包含有两种方 式:其一,若是辐射狭长单元重构,设y=o,x=k,x/y=n。只保留下标为l·n-l+1(l= 0,1,2…)的点,其他节点删除;其二,若是整个面所有密集边同时稀疏,则删除所有下 标为偶数的节点;辐射狭长单元重构Ψ:辐射狭长单元是指在边界上,由于密集边的 存在,导致边界单元为狭长单元,且呈现由密集边映射点向密集边辐射状。Ψ实现的 是,消除边界上呈辐射状的局部狭长单元。具体方法:调用函数f,得到新的 ω={μ1,μ2,…,μp}(p表示密集边新的节点数),依次取μi,μi+1以及集合 Φ={ζ1,ζ2,…,ζo}中的节点ζi(i=1,2,3…),构造新的单元,其中i<p。;密集边映 射点ζ:依次取密集边上的两个节点,这两个节点所在的某一特定边上的三角形单元 有第三个节点n,则称此n点为密集边映射点,Φ={ζ1,ζ2,…,ζo},o表示ζ数量; 延拓f:按照逆时针顺序求出节点所邻接的非已经存在的同一面上的所有单元数据,Ψ ={χ1,χ2,…,χs},s表示得到的单元数,χ表示单元数据信息。

在上述实施例中,利用密集边处理算法,对曲面上的密集边m进行判断,改善辐 射狭长单元质量。具体地,当一条边连接的分别是平面和曲面时,其上的节点分布会 有两种情况:Type I,此边是密集边,曲面的网格划分较为细致;平面内部网格单元较 为均匀,但边界处单元有突变,由此,边界处易形成向外扩散状辐射狭长三角形单元。 Type II,此边是非密集边,但由于邻边是密集边,使得内部节点单元分布密集,靠近 此边处单元分布稀疏,即有向内扩散状辐射狭长三角形单元,如图3所示的Type I和 Type II,以及密集边m和非密集边

通过本发明的上述实施例,依次取密集边上的两个节点,这两个节点所在的某一 特定边上的三角形单元有第三个节点n,则称此n点为密集边映射点, Φ={ζ1,ζ2,…,ζo}。将含有密集边的曲面,或者非密集边长度和密集边长度之比小 于1.5的平面称为密集面Τ。

然后对第一密集面上的密集边进行密集边的稀疏处理得到第四密集面,即:将 密集边若干个节点删除,使得边上的节点稀疏化。其中包含有两种方式:其一,若是 辐射狭长单元重构,设y=o,x=k,x/y=n,只保留下标为l·n-l+1(l=0,1,2…) 的点,其他节点删除;其二,若是整个面所有密集边同时稀疏,则删除所有下标为偶 数的节点。

可选地,在上述实施例中,可以获取第四密集面上的各个单元的邻接单元,得到 新的密集边点集合ω={μ1,μ2,…,μp},依次取μi,μi+1以及集合Φ中的节点ζi (i=1,2,3…),构造新的单元,其中i<p。

下面结合附图4详细介绍本发明实施例,如图4所示,该方案可以通过如下步骤 实现:

步骤S401:读取面的信息。

在本发明实施例中,从实体的第一个面开始循环。

步骤S402:计算每条边节点间的平均长度,并将之按照从大到小的顺序排列。

步骤S403:依次计算两两平均长度之间的比值,判断比值是否大于第一预设阈值。

若比值大于第一预设阈值(如2),则排序在后的平均长度对应的边为密集边;若 所有的比值均不大于第一预设阈值,则执行步骤S404:判断出此面M集合为空。

步骤S405:将密集边m的信息添加至向量M中。

其中,М={m1,m2,…,mt}。

步骤S406:判断此面是否为曲面。

若是,则执行步骤S407;若否,执行步骤S408。

步骤S407:获取此面所有边的信息,将所有节点依次添加到向量中,构造出多边 形P。

通过该步骤可以将面上原来的单元添加到向量E中。

步骤S409:根据构造的多边形信息,重新剖分网格单元,并将得到的单元与节点 信息加入系统中。

步骤S408:判断非密集边长度与密集边长度之间的比值是否小于第二预设阈值。

具体地,判断非密集边的长度i与密集边的长度j之间的比值k是否小于第二预设 阈值(如1.5)。

若否,则执行步骤S407;若是,则执行步骤S410。

步骤S410:循环查找密集边M的节点,查找{ζ1,ζ2,…,ζo},存入向量Q。

步骤S411:设置密集边M的节点数为p,密集边映射点数量为q,p/q=y;将M 上第i个节点与第i+y-1个节点和{ζ1,ζ2,…,ζo}上的第l个节点构成第l个单元。

具体地,设置密集边M的节点数为p,密集边映射点数量为q,p/q=y;将M上 第i(i从零开始)个节点与第i+y-1个节点和{ζ1,ζ2,…,ζo}上的第l(l从零开始) 个节点构成第l个单元。

步骤S412:m=i+y-1,n=l+1,判断n是否大于等于q。

若是,执行步骤S413;若否,执行步骤S414。

步骤S413:将M上第i个节点与第p个节点和{ζ1,ζ2,…,ζo}上的第q个节点 构成第m个单元(即上述实施例中的第三单元)。

步骤S414:i=m;l=n。

步骤S415:此面处理完毕,指向下一个面。

根据本发明的上述实施例,对第一单元和第二单元的区域进行重构操作,得到第 三密集面可以包括:获取与第二单元邻接的第四单元;若第四单元为尖锐单元,则将 第四单元记录为第一单元,直至第四单元不为尖锐单元;获取第一单元、第二单元和 第四单元构成的图形的最外层节点的节点数据;调用多边形网格剖析算法对节点数据 所包围的多边形区域进行网格重构处理,得到第三密集面。

通过上述实施例,可以检查网格单元数据,重构面上尖锐单元集中区域。具体地, 对网格数据进行密集边处理后得到分布比较均匀的网格单元数据以及节点数据,统称 为二级数据。二级数据较原始数据有很大改进,但可能包含有密集边处理算法未涉及 并处理的尖锐单元,如果这些单元分布比较集中,我们通过构造局部多边形区域,并 进行局部节点重新计算布置,从而消除尖锐单元。

需要将进一步地说明的是,在于尖锐单元局部区域的搜索和确定。此区域的选择 有要注意两点:(1)保证所有集中区域单元都包含;(2)尖锐单元集中区域和外部区 域形成隔离层,以防重置节点位置时对外部区域产生影响。

当前单元与目标单元在同一面上,称为为共面邻接单元α;否则为异面邻接单元 β。S={α1,α2,…i,β1,β2,…βj}。S(x)表示节点x邻接单元数;α(x)表示节点共面邻 接单元数;β(x)表示节点异面邻接单元数。对于为尖锐单元的第一单元的三个节点, 按照逆时针顺序求出节点所邻接的非已经存在的同一面上的所有单元数据,Ψ= {χ1,χ2,…,χs},s表示得到的单元数,χ表示单元数据信息。分别判定这些单元是 否为尖锐单元,如果是则继续对此单元节点的邻接单元进行判定,直至所有邻接单元 均不是尖锐单元(如图5所示),将最终得到的所有单元最外面的节点存入PG_Vertex, 并对此节点数据集所包围的区域重新进行离散网格单元操作。

下面结合图6详细介绍本发明上述实施例,如图6所示,该实施例可以通过如下 步骤实现:

步骤S601:扫描到第二密集面的第一单元是尖锐单元。

步骤S602:判断第一单元是否具有为尖锐单元的第二单元。

若是,则执行图2中的步骤S208,针对每个面上的单个尖锐单元η,对不同类型 的单个尖锐单元调用不同方法进行逐个位姿调整操作;若否,则执行步骤S603。

步骤S603:沿着每一个尖锐单元向外层延拓。

其中,延拓f:按照逆时针顺序求出节点所邻接的非已经存在的同一面上的所有 单元数据,Ψ={χ1,χ2,…,χs},s表示得到的单元数,χ表示单元数据信息。

步骤S604:检查所得到的外层单元,查看是否有尖锐单元η。

若有,则执行步骤S603;若无,则执行步骤S605。

步骤S605:将得到图形最外层节点存入向量PG_vertex1。

步骤S606:沿着向量中节点调用f。

步骤S607:检查此层中是否有尖锐单元η。

若是,则执行步骤S608;若否,则执行步骤S611。

步骤S608:沿着η方向调用f。

步骤S609:将新得到的外层单元的外部节点插入PG_vertex1。

步骤S610:判断调用f得到的单元中是否有η。

若是,则执行步骤S608;若否,则执行步骤S611。

步骤S611:将向量PG_vertex1中的节点两两相连,得到所需多边形结构。

步骤S612:在此多边形内重新划分网格,得到新的单元网格和节点数据。

步骤S613:判断下一个单元为空。

若是,则结束;若否,则执行步骤S601。

具体地,由η节点调用f,得Ψ={χ1,χ2,…,χs}。可选地,由得到的η1或η2 节点调用f,得到新的Ψ集合。循环迭代,直到新的Ψ集合中没有η1或η2存在,将 此时Ψ的外层节点加入向量PG_Vertex1向量中。(如图5中在L1线条上的节点,在 图5中的1至40的单元均判断为尖锐单元,L1和L2围成的区域即为上述的第一单元、 第二单元和第四单元构成的图形,L3为终止线,且图5中还示出了插入PG_vertex1 的示意节点)。

在上述实施例中,沿着PG_Vertex1中的节点,调用f,得到的节点插入PG_vertex1 中,直至无法检索到尖锐单元,然后用PG_vertex的数据构造多边形,删除多边形内 部单元及节点数据,调用多边形网格剖分算法得到新的数据。

在本发明的上述实施例中,按照第一单元的类型对第一单元进行位姿调整操作, 得到第三密集面可以包括:判断第一单元中内角角度小于预设角度值的内角个数;若 内角个数为1,则判断出第一单元为狭长三角形单元,判断狭长三角形单元的三个顶 点是否均在第二密集面的边界上,其中,三个顶点包括第一节点、第二节点和第三节 点,其中,第一节点的角度小于预设角度值。若狭长三角形单元的三个顶点未均在第 二密集面的边界上,且第二节点和第三节点均具有四个邻接单元,比较第二节点和第 三节点对应狭长三角形单元的第一角度和第二角度,若第一角度大于第二角度,则获 取四个邻接单元的五个节点,删除五个节点中的第三节点,按照逆序生成第五单元和 第六单元,其中,第五单元的顶点包括第一节点、第二节点和五个节点中的第四节点, 第六单元的顶点包括第二节点、第四节点和五个节点中的第五节点。若狭长三角形单 元的三个顶点未均在第二密集面的边界上,且第二节点或第三节点具有四个邻接单元, 获取四个邻接单元的五个节点,删除五个节点中具有四个邻接单元的第三节点,按照 逆序生成第五单元和第六单元,其中,第五单元的顶点包括第一节点、第二节点和五 个节点中的第四节点,第六单元的顶点包括第二节点、第四节点和五个节点中的第五 节点;若狭长三角形单元的三个顶点均在第二密集面的边界上,则获取第二节点与第 三节点的共同的共面邻接单元,获取共面邻接单元的第四节点,按照逆序生成第五单 元和第六单元,其中,共面邻接单元的顶点包括:第二节点、第三节点和第四节点, 第五单元为共面邻接单元,第六单元的顶点包括:第一节点、第二节点和第四节点。 若内角个数为2,则判断出第一单元为扁平三角形单元,获取扁平三角形单元的第一 节点、第二节点和第三节点,其中,第一节点和第二节点的的角度小于预设角度值。 判断第一节点和第二节点是否均在第二密集面的边界上。若第一节点和第二节点不同 时在第二密集面的边界上,则获取第一节点与第三节点的共同的共面邻接单元,获取 共面邻接单元的第四节点,按照逆序生成第五单元和第六单元,其中,共面邻接单元 的顶点包括:第一节点、第三节点和第四节点,第五单元为共面邻接单元,第六单元 的顶点包括:第二节点、第三节点和第四节点。若第一节点和第二节点同时在第二密 集面的边界上,则计算第三节点的共面邻接单元的数量;若共面邻接单元的数量为1, 则获取共面邻接单元的第四节点,按照逆序生成第五单元和第六单元,其中,共面邻 接单元的顶点包括:第一节点、第三节点和第四节点,第五单元为共面邻接单元,第 六单元的顶点包括:第二节点、第三节点和第四节点。若共面邻接单元的数量为3, 则获取三个共面邻接单元的四个节点,将三个共面邻接单元的并集作为第五单元,其 中,三个共面邻接单元的四个节点包括:第一节点、第二节点、第三节点和第四节点, 第五单元的顶点包括第一节点、第二节点和第四节点。若共面邻接单元的数量为4, 则获取四个共面邻接单元的四个节点,其中,四个节点包括:四个共面邻接单元的并 集组成的图形的四个顶点,四个顶点包括:第一节点、第二节点、第四节点和第五节 点。比较第四节点的第一角度与第五节点的第二角度。从第一角度与第二角度之间大 的角度对应的节点引出对角线,重新划分四个共面邻接单元的并集组成的图形,得到 第五单元和第六单元。

通过本发明上述实施例,可以针对每个曲面上的单个尖锐单元η调用单个尖锐单 元进行逐个位姿调整操作。

当检测完所有尖锐单元集中区域后,可能仍有若干孤立分布的尖锐单元存在,这 时就需要调用单个尖锐单元的优化算法。对单个单元的优化主要方法分为两种:i.单元 的合并。也就是将若干个和此尖锐单元邻接的单元与此单元合并为少量几个非尖锐单 元。ii.改变对角线方向。即找到尖锐单元的某一个邻接单元,并与之构成四边形,改 变对角线方向,从而构成两个新的单元。为了保证优化之后的单元节点编号为逆时针, 同时考虑到在同一面上进行优化时,可能触碰到边界的问题,此步骤将尖锐单元类型 划分为六类,SE_1~SE_6(如图8所示),针对节点位置、邻接单元特点及内角大小分 别采取不同处理方法。这里需要注意,如果每次优化过程都经过一次预判断,如果更 改后的结构比原单元结构质量差(新结构最小内角比原结构最小内角小),那么将不会 更改原结构,直接指向下一尖锐单元。

下面结合图7和图8详细介绍本发明。如图7和图8所示,该方法可以通过如下 步骤实现:

步骤S701:判断第一单元的类型是否为狭长三角形单元。

若第一单元为狭长三角形单元η1,则执行步骤S702;若第一单元为扁平三角形 单元η2,则执行步骤S703。

狭长三角形单元的三个顶点包括第一节点S、第二节点P1和第三节点P2,其中, 第一节点S的角度小于预设角度值;η1的节点逆序排列:S,P1,P2。

扁平三角形单元的三个顶点包括第一节点S1、第二节点S2和第三节点P,其中, 第一节点S1和第二节点S2的角度小于预设角度值,η2的节点逆序排列:S1,S2,P。

在本发明实施例中的扁平三角形单元的节点与狭长三角形单元的节点的对应关系 为:S1=P2,S2=S,P=P1。

步骤S702:判断η1的三个节点是否都在边界上。

若是,则执行步骤S703;若否,则执行步骤S704。

步骤S703:判断P1(或P2)和S在边界上。

若是,则执行步骤S705:寻找共面邻接单元;若否,则执行步骤S706和步骤S707。

具体地,判断S(P1)=4或S(P2)=4,也即,判断第二节点和第三节点是否具有四 个共面邻接单元,若S(P1)=4且S(P2)=4,则比较T[P1]和T[P2]的大小,保留角度大 的角顶点,如图8所示的SE_1、SE_2,若T[P1]大,则执行步骤S706;若T[P2]大则 执行步骤S707。

可选地,若,S(P1)=4或S(P2)=4,则邻接四个单元的节点将被删除,同时保证单 元节点逆序。

步骤S704:使用第一方法进行位姿调整。

具体地,第一方法为:GNE E1:S2,P,NP0;GNE E2:NP0,P,S1。

其中的E1和E2分别为新的单元,对应上述实施例为第五单元和第六单元。

步骤S706:使用第二方法进行位姿调整。

具体地,第二方法为:GNE E1:S,NP0,P2;GNE E2:NP0,NP1,P2;DOE E3; DOE E4;DON P1。其中,NP0为第四节点,NP1为第五节点。

步骤S707:使用第三方法进行位姿调整。

具体地,GNE E1:S,P1,NP0,GNE E2:NP0,P1,NP1;DOE E3,DOE E4; DON P2。

步骤S708:判断S1和S2是否均在边界上。

若是,则执行步骤S710;若否,则执行步骤S704。

步骤S710:获取节点的同面的邻接单元。

步骤S711:计算P节点的共面邻接单元数。

其中,共面邻接单元数α(S)={α1,α2,…αi}。

若共面邻接单元数为1(i=1),则执行步骤S704;若共面邻接单元数为3(i=3), 则执行步骤S711;若共面邻接单元数为4(i=4),则执行步骤S712。

步骤S711:使用第四方法进行位姿调整。

具体地,第四方法为:GNE E1:NP0,S1,S2;DOE E2,DOE E3;DON P。

步骤S712:判断T[NP0]是否大于T[NP1]。

若是,执行步骤S713;若否执行步骤S714。

步骤S713:使用第五方法进行位姿调整。

具体地,第五方法为:GNE E1:NP0,S1,NP1;GNE E2:NP1,S1,S2;DOE  E3,DOE E4;DON P。

步骤S714:使用第六方法进行位姿调整。

具体地,第六方法为:GNE E1:NP1,NP0,S2;GNE E2:NP0,S1,S2;DOE  E3;DOE E4;DON P。

在上述实施例中,若i=1,单元E=α(P1)∩α(P2),E和η重新构造新的单元。 如图8的SE_3所示;若i=3,新单元E=α1∪α2∪α3,如图8的SE_4所示;若i= 4,四边形Y=α1∪α2∪α3∪α4,判断T[NP0]和T[NP1]大小,从大角度对应的顶 点引出一条对角线,划分新单元,如图8的SE_5、SE_6所示。

在本发明上述实施例中,生成新单元之前,必须比较新生成的单元质量(单元最小 角度与原单元最小角度比较);上述的节点x对应的角度表示为T[x];GNE用于表示 利用三个节点按照逆序生成新的单元;DOE用于表示删除单元;DON用于表示删除 节点。

如图9所示的椭圆和圆形标记中的尖锐单元的质量,经过本发明的处理有了明显 的提高表1中示出了边界网格单元质量调整方法对比数据。

表1

本发明实施例还提供了一种三维模型的边界面网格单元的处理装置。需要说明的 是,本发明实施例的三维模型的边界面网格单元的处理装置可以用于执行本发明实施 例所提供的三维模型的边界面网格单元的处理方法,本发明实施例的三维模型的边界 面网格单元的处理方法也可以通过本发明实施例所提供的三维模型的边界面网格单元 的处理装置来执行。

如图10所示,该装置可以包括:查找模块10、密集边处理模块30、第一判断模 块50、位姿调整模块70以及重构处理模块90。

其中,查找模块用于查找边界网格单元数据中的密集边,并基于密集边确定第一 密集面;密集边处理模块用于对第一密集面的网格数据进行密集边处理,得到第二密 集面;第一判断模块用于判断第二密集面上的为尖锐单元的第一单元是否具有与其邻 接的为尖锐单元的第二单元,其中,尖锐单元为至少有一个内角的角度小于预设角度 值的三角形单元;位姿调整模块用于若第二密集面上的为尖锐单元的第一单元不具有 与其邻接的为尖锐单元的第二单元,按照第一单元的类型对第一单元进行位姿调整操 作,得到第三密集面;重构处理模块,用于若第二密集面上的为尖锐单元的第一单元 具有与其邻接的为尖锐单元的第二单元,对第一单元和第二单元的区域进行重构操作, 得到第三密集面。

采用本发明实施例,对三维模型的边界网格单元数据进行处理,并且在处理过程 中,先确定密集面,对密集面进行密集边处理,然后判断第二密集面上的为尖锐单元 的第一单元是否具有与其邻接的为尖锐单元的第二单元,也即判断第二密集面上的尖 锐单元是否为独立的,若第二密集面上的尖锐单元可以连成一个区域,则对该区域执 行重构操作;若第二密集面上的尖锐单元为单个的单元,则针对其的类型对其进行位 姿操作。通过上述实施例,可以在尽量保留原始拓扑信息、不牺牲优化效率的前提下, 将边界离散网格单元质量较差单元(密集面的尖锐单元)进行特征化区分,针对不同 类型采用不同的高效优化方法,完成全部网格单元的质量调整任务,从而通过局部光 顺的手段得到高质量的网格单元。通过本发明实施例,解决了现有技术中得到高质量 的三维模型中网格的方法耗时长、效率低的问题,实现了快速高效地调整边界网格单 元的质量的效果。

其中,上述实施例中的尖锐单元η:指三角形单元内角中有至少有一个角度小于 预设角度值(如20度)。可选地,尖锐三角形单元分为两类:狭长三角形单元η1和 扁平三角形单元η2,狭长三角形单元有一个内角的角度小于预设角度值,扁平三角形 单元有两个内角的角度小于预设角度值。

在上述实施例中,优化过程迭代次数少,优化效率较高,给出了非常灵活的网格 单元质量调整方案,解决了各类边界网格单元离散可能出现的问题。

根据本发明的上述实施例,查找模块可以包括:第一计算模块,用于计算网格单 元数据的面信息中每条边任意两个节点间的平均距离;排序模块,用于按照从大到小 的顺序对平均距离进行排序,得到距离序列;第一检测模块,用于依序计算距离序列 中两两平均距离之间的比值,若比值大于第一预设阈值,则检测出距离序列中两两平 均距离中排序在后的边为密集边;第一确定模块,用于若面信息所指示的面为平面, 且平面的非密集边长度与密集边长度之比小于第二预设阈值,则确定平面为第一密集 面。

在本发明的上述实施例中,密集边处理模块可以包括:稀疏处理模块,用于对第 一密集面的密集边进行稀疏处理得到处理后的第四密集面,其中,对第一密集面的密 集边进行稀疏处理包括:获取第一密集面的密集边的映射点数量o和第一密集面的密 集边的节点数量k;删除密集边中下标非为l·n-l+1的节点,得到第四密集面,l=0, 1,2…,n=k/o;单元构造模块,用于获取第四密集面的密集边点集合 ω={μ1,μ2,…,μp},依次从密集边点集合中取μi、μi+1以及第一密集面的密集边的 密集边的映射点集合φ中的节点ζi(i=1,2,3…),构造第三单元,得到第二密集 面,其中,i<p。

在上述实施例中,利用密集边处理算法,对曲面上的密集边m进行判断,改善辐 射狭长单元质量。具体地,当一条边连接的分别是平面和曲面时,其上的节点分布会 有两种情况:Type I,此边是密集边,曲面的网格划分较为细致;平面内部网格单元较 为均匀,但边界处单元有突变,由此,边界处易形成向外扩散状辐射狭长三角形单元。 Type II,此边是非密集边,但由于邻边是密集边,使得内部节点单元分布密集,靠近 此边处单元分布稀疏,即有向内扩散状辐射狭长三角形单元,如图3所示的Type I和 Type II,以及密集边m和非密集边。

通过本发明的上述实施例,依次取密集边上的两个节点,这两个节点所在的某一 特定边上的三角形单元有第三个节点n,则称此n点为密集边映射点, Φ={ζ1,ζ2,…,ζo}。将含有密集边的曲面,或者非密集边长度和密集边长度之比小 于1.5的平面称为密集面Τ。

然后对第一密集面上的密集边进行密集边的稀疏处理得到第四密集面,即:将 密集边若干个节点删除,使得边上的节点稀疏化。其中包含有两种方式:其一,若是 辐射狭长单元重构,设y=o,x=k,x/y=n,只保留下标为l·n-l+1(l=0,1,2…) 的点,其他节点删除;其二,若是整个面所有密集边同时稀疏,则删除所有下标为偶 数的节点。

可选地,在上述实施例中,可以获取第四密集面上的各个单元的邻接单元,得到 新的密集边点集合ω={μ1,μ2,…,μp},依次取μi,μi+1以及集合Φ中的节点ζi (i=1,2,3…),构造新的单元,其中i<p。

根据本发明的上述实施例,重构处理模块可以包括:第一获取模块,用于获取与 第二单元邻接的第四单元;记录模块,用于若第四单元为尖锐单元,则将第四单元记 录为第一单元,直至第四单元不为尖锐单元;第二获取模块,用于获取第一单元、第 二单元和第四单元构成的图形的最外层节点的节点数据;重构子模块,用于调用多边 形网格剖析算法对节点数据所包围的多边形区域进行网格重构处理,得到第三密集面。

通过上述实施例,可以检查网格单元数据,重构面上尖锐单元集中区域。具体地, 对网格数据进行密集边处理后得到分布比较均匀的网格单元数据以及节点数据,统称 为二级数据。二级数据较原始数据有很大改进,但可能包含有密集边处理算法未涉及 并处理的尖锐单元,如果这些单元分布比较集中,我们通过构造局部多边形区域,并 进行局部节点重新计算布置,从而消除尖锐单元。

根据本发明的上述实施例,位姿调整模块可以包括:第二判断模块,用于判断第 一单元中内角角度小于预设角度值的内角个数;第三判断模块,用于若内角个数为1, 则判断出第一单元为狭长三角形单元,判断狭长三角形单元的三个顶点是否均在第二 密集面的边界上,其中,三个顶点包括第一节点、第二节点和第三节点,其中,第一 节点的角度小于预设角度值。第一单元处理模块,用于若狭长三角形单元的三个顶点 未均在第二密集面的边界上,且第二节点和第三节点均具有四个邻接单元,比较第二 节点和第三节点对应狭长三角形单元的第一角度和第二角度;若第一角度大于第二角 度,则获取四个邻接单元的五个节点,删除五个节点中的第三节点,按照逆序生成第 五单元和第六单元,得到第三密集面,其中,第五单元的顶点包括第一节点、第二节 点和五个节点中的第四节点,第六单元的顶点包括第二节点、第四节点和五个节点中 的第五节点,五个节点包括第一节点、第二节点、第三节点、第四节点和第五节点。 二单元处理模块,用于若狭长三角形单元的三个顶点未均在第二密集面的边界上,且 第二节点或第三节点具有四个邻接单元,获取四个邻接单元的五个节点,删除五个节 点中具有四个邻接单元的第三节点,按照逆序生成第五单元和第六单元,得到第三密 集面,其中,第五单元的顶点包括第一节点、第二节点和五个节点中的第四节点,第 六单元的顶点包括第二节点、第四节点和五个节点中的第五节点,五个节点包括第一 节点、第二节点、第三节点、第四节点和第五节点。第三单元处理模块,用于若狭长 三角形单元的三个顶点均在第二密集面的边界上,则获取第二节点与第三节点的共同 的共面邻接单元,获取共面邻接单元的第四节点,按照逆序生成第五单元和第六单元, 得到第三密集面,其中,共面邻接单元的顶点包括:第二节点、第三节点和第四节点, 第五单元为共面邻接单元,第六单元的顶点包括:第一节点、第二节点和第四节点。 第四单元处理模块,用于若内角个数为2,则判断出第一单元为扁平三角形单元,获 取扁平三角形单元的第一节点、第二节点和第三节点,其中,第一节点和第二节点的 角度小于预设角度值。第四判断模块,用于判断第一节点和第二节点是否均在第二密 集面的边界上。第五单元处理模块,用于若第一节点和第二节点不同时在第二密集面 的边界上,则获取第一节点与第三节点的共同的共面邻接单元,获取共面邻接单元的 第四节点,按照逆序生成第五单元和第六单元,得到第三密集面,其中,共面邻接单 元的顶点包括:第一节点、第三节点和第四节点,第五单元为共面邻接单元,第六单 元的顶点包括:第二节点、第三节点和第四节点。第二计算模块,用于若第一节点和 第二节点同时在第二密集面的边界上,则计算第三节点的共面邻接单元的数量。第六 单元处理模块,用于若共面邻接单元的数量为1,则获取共面邻接单元的第四节点, 按照逆序生成第五单元和第六单元,得到第三密集面,其中,共面邻接单元的顶点包 括:第一节点、第三节点和第四节点,第五单元为共面邻接单元,第六单元的顶点包 括:第二节点、第三节点和第四节点。第七单元处理模块,用于若共面邻接单元的数 量为3,则获取三个共面邻接单元的四个节点,将三个共面邻接单元的并集作为第五 单元,得到第三密集面,其中,三个共面邻接单元的四个节点包括:第一节点、第二 节点、第三节点和第四节点,第五单元的顶点包括第一节点、第二节点和第四节点。 第八单元处理模块,用于若共面邻接单元的数量为4,则获取四个共面邻接单元的四 个节点,其中,四个节点包括:四个共面邻接单元的并集组成的图形的四个顶点,四 个顶点包括:第一节点、第二节点、第四节点和第五节点。比较模块,用于比较第四 节点的第一角度与第五节点的第二角度。第九单元处理模块,用于从第一角度与第二 角度之间大的角度对应的节点引出对角线,重新划分四个共面邻接单元的并集组成的 图形,得到第五单元和第六单元,得到第三密集面。

通过本发明上述实施例,可以针对每个曲面上的单个尖锐单元η调用单个尖锐单 元进行逐个位姿调整操作。

当检测完所有尖锐单元集中区域后,可能仍有若干孤立分布的尖锐单元存在,这 时就需要调用单个尖锐单元的优化算法。对单个单元的优化主要方法分为两种:i.单元 的合并。也就是将若干个和此尖锐单元邻接的单元与此单元合并为少量几个非尖锐单 元。ii.改变对角线方向。即找到尖锐单元的某一个邻接单元,并与之构成四边形,改 变对角线方向,从而构成两个新的单元。为了保证优化之后的单元节点编号为逆时针, 同时考虑到在同一面上进行优化时,可能触碰到边界的问题,此步骤将尖锐单元类型 划分为六类,SE_1~SE_6(如图8所示),针对节点位置、邻接单元特点及内角大小分 别采取不同处理方法。这里需要注意,如果每次优化过程都经过一次预判断,如果更 改后的结构比原单元结构质量差(新结构最小内角比原结构最小内角小),那么将不会 更改原结构,直接指向下一尖锐单元。

本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应 用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施 例中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或 硬件实现。

从以上的描述中,可以看出,本发明实现了如下技术效果:

通过上述实施例,可以在尽量保留原始拓扑信息、不牺牲优化效率的前提下,将 边界离散网格单元质量较差单元(密集面的尖锐单元)进行特征化区分,针对不同类 型采用不同的高效优化方法,完成全部网格单元的质量调整任务,从而通过局部光顺 的手段得到高质量的网格单元。通过本发明实施例,解决了现有技术中得到高质量的 三维模型中网格的方法耗时长、效率低的问题,实现了快速高效地调整边界网格单元 的质量的效果。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用 的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所 组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以 将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模 块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明 不限制于任何特定的硬件和软件结合。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部 分,可以参见其他实施例的相关描述。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的 任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号