1、第 卷第期 年月中 国 科 技 论 文 面向离散模型的 构建、特征简化及网格生成方法郭宇飞,孙科武,赵荣利,王英雷,陈元培,王智斌,(航天科工集团智能科技研究院,北京 ;航天防务智能系统与技术科研重点实验室,北京 )摘要:由逆向工程得到的离散模型网格质量较差,缺乏几何信息,且包含大量细小特征,通常不能直接用于有限元分析。面向离散模型的高质量曲面网格生成,提出了一套构建离散模型的边界表征(,)算法,并在此基础上实现了特征简化和网格生成。首先识别离散模型的特征信息,并以此构建离散模型的 表达;随后自动识别模型中不必要的特征,并通过虚操作予以消除;最后基于球填充算法和加点删点方法生成高质量的网格。实
2、验结果验证了所提算法的有效性和实用性。关键词:特征识别;特征简化;网格生成;边界表征;离散模型中图分类号:文献标志码:文章编号:()开放科学(资源服务)标识码():,(.,;.,):,(),:;收稿日期:基金项目:国家自然科学基金资助项目()第一作者:郭宇飞(),男,高级工程师,主要研究方向为计算力学、计算机图形学通信作者:孙科武,高级工程师,主要研究方向为计算机视觉,有限元仿真在科学研究和工业生产中有着重要的作用。网格生成是有限元仿真中的关键环节,生成网格的质量将直接影响有限元仿真分析结果的准确性。网格生成通常以包含丰富几何信息的模型为输入,输出对应的网格。然而,由逆向工程得到的模型为离散模
3、型,缺失大量的几何信息,同时离散模型通常包含大量的几何特征,很多小的特征是不必要的设计细节,如小曲面、独立短边等,这些细节会使得网格生成算法更加复杂,也会使得生成的网格对局部区域进行不必要的加密,制约高质量网格的生成。因此,在网格生成之前,对细小特征进行一定程度的简化具有十分重要的意义。几何模型具有不同的表达方式,常见的几何模型造型方式包括 、构造实体几何、特征模型及体 素 造 型 等。其 中,是 计 算 机 辅 助 设 计(,)领域应用广泛的造型方式之一,网格生成算法通常基于 造型进行开发。因此,研究 几何模型的特征简化是当前特征简化算法研究的主流。大多数 软件或计算机辅助工程(,)前处理软
4、件均支持对参数模型的特征简化。而离散模型由于仅具有面片几何信息,如 格式,缺乏与参数模型类似的 信息,大多数软件不支持离散模型的特征简化。然而,离散模型的使用变得越来越普遍,一方面,在实际应用中,很多模型都是通过逆向工程得到的,这种方式生成的模型本身就是离散模型;另一方面,参数模型表示复杂,所占存储空间大,在不同软件之间传递容易出现误差,而离散模型表示简单,方便在不同软件之间传递。因此,研究如何构建离散模型的 表征并在此基础上实现特征简化具有重要意义。目前,已有很多面向离散模型网格生成的优秀中 国 科 技 论 文第 卷工 作,如 局 部 操 作 方 法、重 参 法、标 价 场法 、中心沃罗诺伊
5、图细分法(,)及 最 优 德 劳 内 三 角 法(,)等,然而这些方法都偏向应用于计算机图形学领域,未考虑特征简化的问题。对于计算力学等领域,模型的特征简化尤为重要。本文针对离散模型的有限元应用,提出一整套构建离散模型的 算法、特征简化算法及网格生成算法,以期有效满足高质量网格生成。算法流程 包括曲线、曲面、顶点以及它们之间的拓扑关系。离散网格模型缺乏 这样的高层次拓扑关系,需要进行构建。考虑到三角网格模型是最常用的离散网格模型,因此本文研究如何构造三角网格的 信息。为了区别于连续曲面的 ,描述算法之前,先定义一些必要的术语。)几何边:由多个相连接的三角面片线段组成,对应 的曲线。)几何面:由
6、多个相连接的三角面片组成,对应 的曲面。)几何顶点:三角网格的特征节点或几何边的交点,对应 的顶点。)点和线段:三角面片的顶点称为点,三角面片的边称为线段。)特征线段:具有一定可区分特征的线段,即构成几何边的线段。本文算法流程如下:步骤构建离散模型的低层次拓扑关系。构建离散模型的点线段相邻关系、点面片相邻关系和面片之间相邻关系。步骤构建离散模型的 信息。首先识别离散模型的特征线段,然后在此基础上构建模型的几何边、几何顶点和几何面,最后构建几何顶点、几何边和几何面之间的高层次拓扑关系。步骤特征简化。从几何边中识别独立的短边,从几何面中识别小曲面,并通过虚操作将它们消除。步骤网格生成。基于球填充算
7、法和加点删点方法剖分离散模型。离散模型低层次拓扑关系的构建离散模型通常仅具有三角面片或多边形面片的几何信息,缺乏面片之间的拓扑邻接关系,如 格式,只提供三角面片的个顶点坐标和对应的面片法向量。后续特征线段的识别以及 信息的构建均需要利用离散模型的低层次拓扑关系,因此需对其进行构建,包括点线段相邻关系、点面片相邻关系和面片相邻关系。构建点线段相邻关系比较简单,只需要遍历所有的线段,将每条线段记录到个端点所对应的相邻线段的集合()中即可。同理,构建点面片相邻关系只需要遍历所有的面片,将每个面片记录到个顶点所对应的相邻面片的集合()中即可。面片相邻关系可以借助点面片相邻关系确定,个点相邻的面片中共用
8、相同线段的面片相邻。离散模型 信息的构建本文采用类似连续曲面的 信息来构造离散曲面的 信息,即在离散曲面上构建模型的几何顶点、几何边和几何面,以及它们之间的拓扑关系。模型 信息如图所示。由图()所示的连续模型可以明显看到模型的边和面。图()为该连续模型对应的离散模型。如图()所示,可以将连续模型的 信息对应到离散模型。也就是说,同一几何模型,不论是采用连续模型的表达方式还是采用离散模型的表达方式,它们的 信息都是相同的。不同之处在于,连续模型采用自由曲线和曲面方程来定义几何边和几何面;离散模型采用多条特征线段相连来表达几何边,几何面则由多个三角面片组合来表达。图模型 信息 构建离散模型的几何边
9、之后,构建模型的几何顶点和几何面是比较容易的,下文将具体介绍它们的构建流程。由于网格模型的几何边由特征线段组合而成,所以构建网格模型的 信息首先需识别网格模型的特征线段。目前,已有很多离散网格模型特征线段识别的算法。如:上官宁等 提出先通过判断曲率来识别离散网格模型的特征点,然后连接特征点形成特征线段;等 结合法向张量投票法和 聚类算法来识别特征线段;等 采用相邻三角面片的法向夹角来识别特征线段,当夹角大于 时,相邻三角面片的共用线段被识别为特征线段;等 利用法向夹角提出了一种识别和不连续的特征线段算法。考虑到文献 的算法简单高效,本文采用该算法来识别离散模型的特征线段。需要注意的是,文献 识
10、别线段的算法并非直接用于离散模型 构建,而是用于限制 方法节点生成的位置和网格优化中节点移动的方向。本文识别特征线段用于构建离散模型 ,并第期郭宇飞,等:面向离散模型的 构建、特征简化及网格生成方法给出了完整算法的流程。几何边的构建本文根据文献 提供的算法来识别特征线段。具体为:遍历每条线段,计算共用该线段的三角面片法向量的夹角,并将对应夹角大于 的线段标记为特征线段;当线段只有个相邻三角面片时,同样需要标记为特征线段,标记完之后再恢复各条几何边。恢复某条几何边的具体算法如下:步骤从上述标记线段中选择条种子线段加入线段集()中,并将种子线段的个端点加入端点集()中;步骤从中取出个端点,然后根据
11、点线段相邻关系,判断与当前端点相邻的其他标记线段的个数,若为,且两线段的夹角大于 ,则选取与当前端点相邻的其他标记线段加入中,并将标记线段的另一端点加入;步骤重复步骤,直至为空时结束。该几何边由中的线段组成。几何面的构建构建某个几何面的具体算法如下:步骤从三角面片中选取个种子面片,将其加入面片集()中;步骤从中取出某个三角面片作为当前面片,根据面片相邻关系选取与当前面片相邻的三角面片,若选取的相邻面片与当前面片共用的线段为非标记线段,则将选取的面片加入中;步骤重复步骤,直至为空时结束。当前几何面由所有加入过的三角面片组成。几何顶点为几何边的交点。几何边与几何面之间的拓扑关系在构建几何面的同时即
12、可确定。构成几何面的三角面片所包含的特征线段所在的几何边即为该几何面相邻的几何边。至此,完成了离散模型的 构建。然而,此时的离散模型仍然包含大量的细小特征,这些细节会使得网格生成算法更加复杂,也会使得生成的网格对局部区域进行不必要的加密,制约高质量网格的生成。特征简化面向离散模型高质量曲面网格生成,本文发现有类细小特征会影响最终生成网格质量:)小面。图()所示的 模型的右耳上存在细小的曲面,若保留这些特征,该处会生成很多细长的网格,如图()所示。)独立短边。图()所示模型的左脚踝和右膝盖存在独立的短边,若保留这些特征,该处的网格会出现局部加密的情况,如图()所示。累加离散模型每个几何面的所有三
13、角面片的面积,当其小于用户定义的最小面积()时,可确定图细小特征对网格生成的影响 为小面。累加离散网格模型组成几何边的特征线段的长度,当其小于用户定义的最小长度()且不与其他几何边相连时,可确定为独立短边。大多数 软件或 前处理软件都支持对参数模型的特征简化。这些软件通过改变模型的几何和拓扑或者通过重采样等方式对模型进行简化。本文将这种特征简化方法称为基于实操作的特征简化方法。然而,对于离散模型几何的改变存在太多的歧义性,实操作复杂度很高,往往需要人工干预。因此,本文提出基于虚操作的离散模型特征简化方法。该方法不改变模型的几何,只将几何面或几何边的特征标记消除即可。消除特征标记意味着在之后的网
14、格生 成 过程 中不再将其作为特征来考虑。如:消除某几何边的特征标记,则网格节点不需要沿着该边来布置。相比实操作,虚操作无需进行复杂的几何计算,实现更为简单,效率也较高。本文利用关系图来表示几何边与几何面的拓扑关系,关系图中节点表示几何面,节点之间的连线表示几何边。图为某模型及其相邻关系图。关系图中连线的一端可以不连接节点,表示该几何边为模型的边界,如图中;关系图中连线的两端可以为同一节点,表示模型中独立的边,如图中。取消独立短边的特征线段的标记即可完成独立短边的清理。如清理图中独立短边,将其特征线段的标记取消即可。删除小曲面的几何边(即将几何边的特征线段的标记取消),将与小曲面相连的曲面合并
15、即可完成模型小曲面的清理。如清理图中小曲面,先删除几何边,再将曲面和合并即可。图为特征简化后的模型及其相邻关系图。图特征简化前模型关系示意图 中 国 科 技 论 文第 卷图特征简化后模型关系示意图 离散模型网格生成方法本文基于球填充算法和加点删点算法生成曲面网格,并基于前沿节点思想改进了球填充算法。球填充算法的思想是通过紧密地放置小球来生成网格,具体来讲,该方法以小球球心的位置来代表节点的位置,相邻小球球心之间的距离则代表单元的尺寸大小,连接小球球心为网格边,则可以获得较好的网格,如图所示。图球填充算法 常见的球填充算法一般需要通过求解复杂偏微分方程或者依据前沿推进法生成节点的规则来确定小球的
16、位置 。求解偏微分方程效率较低,而前沿推进法需要复杂的前沿管理规则。本文创新性地将前沿推进法中前沿边的思想转换为前沿节点的思想,通过管理前沿节点来生成小球。基于前沿节点思想的球填充算法简单高效。该方法维护个记录小球的列表,依次遍历每个小球,布置正在执行的小球附近的所有小球,并将这些小球添加到列表中。只需次遍历,即可获得整个问题域的节点,算法的复杂度为()。为了保留离散模型的几何特征,本文按照离散模型顶点、几何边界和几何面的顺序依次布置小球。获得网格节 点之 后,可 以通过 前 沿 推进 法 或 三角剖分法连接节点形成网格,但是这些算法无法确保网格模型的有效性。考虑到离散模型本身就是质量较差的网格,在该网格上添加个节点,会将节点所在的三角网格分裂成个三角网格,而新的网格依然是合法的网格,本文通过该方法依次将新生成的节点添加到离散模型中,再通过该逆过程将原离散模型的节点删除,最后通过有限次边翻转优化生成高质量的 网格。该算法的具体过程如图所示。图本文网格生成算法 实验结果与分析为了验证算法效果,本文选用了若干实例在 的 平台上进行测试,并与著名的开源网格生成软件 及最大泊松盘采样法 进行对