CN101982837A - 一种基于有限元分析后处理结果的快速三维可视化方法 - Google Patents
一种基于有限元分析后处理结果的快速三维可视化方法 Download PDFInfo
- Publication number
- CN101982837A CN101982837A CN 201010287712 CN201010287712A CN101982837A CN 101982837 A CN101982837 A CN 101982837A CN 201010287712 CN201010287712 CN 201010287712 CN 201010287712 A CN201010287712 A CN 201010287712A CN 101982837 A CN101982837 A CN 101982837A
- Authority
- CN
- China
- Prior art keywords
- cell data
- coplane
- data
- face
- limit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明公开了一种基于有限元分析后处理结果的三维可视化方法,属于三维可视化显示技术领域。通过对生成的网格单元体分解,剔除内部的公共数据面,生成外轮廓面集合;对外轮廓面集合进行共面分组,得到共面的单元数据面集合CoMAP;将每一组CoMAP中的所有单元数据面分解成为独立的单元数据边,剔除所有的内部公共边,得到共面轮廓线集合;对所有共面轮廓线集合进行轮廓线分组,将所有形成封闭廓线的边分为一组;最后根据每一组封闭轮廓线生成一个独立的拓扑面,并判断此拓扑面为洞还是表面,对所有的非洞表面执行布尔求和运算,对洞执行布尔求差运算,生成三维模型。本发明为有限元分析技术和虚拟现实技术的结合使用提供了一种途径。
Description
技术领域
本发明属于虚拟现实及三维可视化显示技术领域,具体涉及一种基于有限元分析后处理结果的三维可视化方法。
背景技术
随着计算机技术的迅猛发展,数值仿真技术因其所具有的安全保密、设计灵活、可重复性好、环境和过程可控、效费比高等优点,被广泛应用于工业设计、武器研制、灾害模拟等领域。有限元分析是数值仿真技术中广泛应用的手段之一,常用的有限元分析软件包括ANSYS、LS-DYNA、ABAQUS、MARC等。
虚拟现实技术显示手段丰富多样,支持模型的渲染和驱动,它提供了一种实时的、三维的虚拟环境(Virtual Environment),具有高度的沉浸性、交互性和构想性,使人能够丰富地体验计算机生成的虚拟世界。
有限元软件的核心优势在于有限元计算,由于其理论建立在求解偏微分方程组基础之上,所以能够深刻地反应客观世界的物理规律。但它们在计算结果的显示手段多样性和模型的通用性方面都有共同的不足:(1)后处理显示功能不足,有的软件只有简单的颜色显示功能;(2)模型不支持纹理和材质渲染,也不能转换到其他的三维显示平台上使用,如模型驱动等;(3)不能和已经日趋成熟的虚拟现实显示技术紧密结合,有限元分析结果的可视化效果差。目前在仿真领域中,数值仿真和虚拟现实属于两种完全不同的技术体系,它们模型规范和模型接口的不一致使得数值仿真的结果难以直接运用到虚拟现实***当中。数值仿真的计算结果非常复杂,数据量异常庞大,使得模型重用面临许多困难,仅简单地重构和渲染而不进行优化处理将严重影响***运行的稳定性和效率。另一方面,数值仿真的结果有助于提高虚拟现实***的物理的真实性和逻辑准确性。如何协调建模分析的真实性和逼真性,将数值仿真和虚拟现实的优点有效地结合起来成为当前一个亟待解决的问题。
有限元软件输出的数据类型基本上是三维网格数据,如ANSYS/LS-DYNA等都可以通过命令行的设置导出该类型的数据,它主要存储网格单元顶点的属性信息、坐标信息和索引信息。该类型数据还常见于计算机X光断层摄影、磁共振、单光子发射计算机断层摄影、地震测定、电子显微镜、大气压的测定和地理信息***等领域中。这类三维数据的特点是数据量大,数据规则和连续。如果直接重构,那么重构出来的模型庞大、渲染效率低下,直接影响在三维显示平台上的显示效果。
发明内容
本发明为了克服数值仿真软件显示功能简单、手段单一的不足,解决建模渲染平台重用有限元模型时面临的模型通用性不足、模型数据庞大复杂以及模型渲染效率低下的问题,提出了一种基于有限元分析后处理结果的快速三维可视化方法,该方法在对有限元分析后处理结果进行提取、处理和转换的基础之上,改进了在三维建模平台中模型重构和渲染的方法,使其不仅具有数值仿真分析结果的精确性和可信性,同时还具有可视化三维模型的多种操作特性和快速渲染特性。
本发明对数值仿真计算结果三维重构和渲染的方法进行改进,提出了一系列高效、稳定针对三维网格数据处理方法,削减了数据的冗余度和复杂度,从而使得该方法具有简单灵活、资源耗费少,运行效率高和运行速度快,方法易拓展等特点。因此可以很好的满足三维模型实时渲染和驱动的需求。
本发明提供的基于有限元分析后处理结果的快速三维可视化方法包括五个基本步骤,具体如下:
步骤1:生成网格单元体集合,分解网格单元体,剔除内部的公共数据面,生成外轮廓面集合。
该步骤主要由以下四个步骤组成:
步骤①:读入全部网格单元体集合中的网格单元数据Elements。
步骤②:将每一个网格单元数据Element按照数据面顶点定义顺序划分成不同单元数据面Face。
步骤③:生成一个初始时为空的数据面集合FaceMAP,判断单元数据面Face是否存在数据面集合FaceMAP中:如果存在,则从FaceMAP删除此数据面;如果不存在,则在FaceMAP中添加此单元数据面。
步骤④:判断Elements是否遍历完毕:如果没有遍历完毕,则返回步骤①;否则,该阶段结束数据面集合FaceMAP中存储了所有网格单元体的外表面的可见单元数据面,称之为外轮廓面集合。
步骤2:对步骤1中生成的外轮廓面集合进行共面分组,将所有位于同一个平面上的单元数据面归为一组,每组为一个共面的单元数据面集合CoMAP。
该步骤主要由以下四个步骤组成:
步骤①:生成一个系数共面映射表ALLMAP。所述的ALLMAP为平面方程系数和单元数据面集合组成的映射表,其中的平面方程系数与单元数据面集合为一一对应的关系。
步骤②:从外轮廓面集合中任取一单元数据面,获取单元数据面的顶点数据,求解该单元数据面的平面方程,获取平面方程系数D。
步骤③:在系数共面映射表ALLMAP中查找,判断该平面方程系数是否在系数共面映射表ALLMAP中:如果是,获取此系数对应的单元数据面集合CoMAP,将当前单元数据面添加到对应的单元数据面集合CoMAP中;否则,生成与此系数对应的单元数据面集合CoMAP,将当前单元数据面添加到单元数据面集合CoMAP中,并将此系数和新生成的单元数据面集合CoMAP一起添加到ALLMAP中。
步骤④:判断轮廓面集合中的所有单元数据面是否遍历完毕:如果不是,返回步骤②;如果是,该阶段结束。
步骤3:针对每一组单元数据面集合CoMAP中的所有单元数据面分解成为独立的单元数据边,剔除所有的内部公共边,得到共面轮廓线集合。
本步骤主要由以下七个步骤组成:
步骤①:在系数共面映射表ALLMAP中任取一个共面的单元数据面集合CoMap。
步骤②:生成一个共面单元数据边集合EdgeMap,初始为空。
步骤③:从共面的单元数据面集合CoMap中任取一个单元数据面Face,依据数据面分解原理,将单元数据面分解成单元数据边Edge,将所有的单元数据面都分解成单元数据边。
步骤④:对于分解得到的每条单元数据边Edge取逆向边;判断EdgeMap中是否包含此单元数据边的逆向边:如果是,则说明含有重合的单元数据边,从EdgeMap中删除该单元数据边的逆向边;否则,在EdgeMap中***此单元数据边,最后形成的EdgeMap中的所有单元数据边组成共面轮廓线集合。
步骤⑤:判断CoMAP中的单元数据面集合中单元数据边是否遍历完毕,如果是,进入下一步,否则返回步骤④。
步骤⑥:获取CoMAP中的平面方程系数,该平面方程系数与EdgeMap组成共面轮廓线集合。
步骤⑦:判断ALLMAP中所有的共面的单元数据面集合CoMAP是否遍历完毕,如果是进入下一步,否则返回步骤①。
步骤4:将步骤3中所有共面轮廓线集合进行轮廓线分组,将形成封闭廓线的边分为一组。
本步骤的主要是为了从共面轮廓线集合中将轮廓线进行分组,提取构成单条轮廓线的全部单元数据边的集合。
该步骤主要由以下六个步骤组成:
步骤①:从全部共面轮廓线集合中取一个共面轮廓线集合EdgeMap。建立一个轮廓线向量Vector,初始为空。
步骤②:从EdgeMap中取出一个初始单元数据边,将初始单元数据边标记为当前单元数据边CurrentEdge,初始单元数据边的第一个端点标记为初始点StartPoint。
步骤③:以CurrentEdge的第二个端点为索引点在EdgeMap查找到第一端点与之相同的单元数据边。
步骤④:判断该单元数据边的第二端点是否与初始点StartPoint相同:若相同,说明组成为一条闭合的轮廓线,进入下一步骤。若不相同,说明没有闭合,将该条单元数据边标记CurrentEdge,并将原CurrentEdge顺序***到Vector且从EdgeMap删除,返回步骤③。
步骤⑤:判断当前EdgeMap是否为空:是,进入下一步骤;否,返回步骤②。
步骤⑥:判断所有EdgeMap是否遍历完毕:是,进入下一步骤;否,返回步骤①。
步骤5:根据轮廓线向量集合Vector中每一组封闭轮廓线生成一个独立的拓扑面,并判断此拓扑面为洞还是表面,对所有的非洞表面执行布尔求和运算,对洞执行布尔求差运算,生成三维模型。
本步骤是为了根据轮廓线的点的数据信息通过三维建模平台生成和有限元模型包含相同的三维几何信息的三维模型。
该步骤主要由以下七个步骤组成:
步骤①:从所有共面轮廓线集合取一个共面轮廓线集合。
步骤②:从该共面封闭轮廓线向量集合中取一条轮廓线向量Vector。
步骤③:根据该轮廓线的向量中所有点的坐标信息生成三维建模平台的拓扑边,并以此拓扑边生成三维建模平台中的拓扑面。
步骤④:判断当前共面封闭轮廓线向量集合中的所有轮廓线向量Vector是否遍历完毕:是,进入下一步骤;否,返回步骤②。
步骤⑤:将生成的所有三维建模平台中的拓扑面进行位置关系(例如使用OpenCascade)判断,并从外到内进行布尔运算(位置关系判断和布尔运算使用三维建模平台的API,例如OpenCascade的BRepAlgoAPI运算库),生成有限元模型外表面在该平面上的外形结构。
步骤⑥:判断所有共面轮廓线集合是否遍历完毕:如是,进入下一步骤;否则,返回步骤①。
步骤⑦:将生成所有平面上的外型结构进行融合(例如OpenCascade的BRepAlgoAPI_Fuse操作),得到与有限元三维几何信息相同的三维模型,结束。
本发明的优点在于:
(1)将有限元模型在虚拟现实***中重用,借助虚拟现实丰富的显示技术,有利于更好的观察和分析有限元分析的结果,同时,有限元应用于虚拟现实***中,使得虚拟现实***的模型更能深刻反应真实世界的物理规律。
(2)提供了一种快速、稳定重构方法,满足了模型在三维平台上实时渲染和驱动的需求。
(3)应用本发明提供的方法得到的三维有限元模型有如下优点,包括:1、对几何体进行布尔操作(相加,相减,相交运算);2、几何空间关系计算(法线,点积,叉积,投影,拟合等);3、几何体分析(质心,体积,曲率等);4、模型空间变换(平移,缩放,旋转);5、纹理和材质渲染;6、模型驱动(如漫游)。可以在常见的建模或渲染平台上进行渲染,使其视觉效果更加逼真,具有良好的显示性能。通过准确高效的剔除内部冗余数据简化了模型,从而提高渲染速率。
附图说明
图1为本发明提供的快速三维可视化方法流程图;
图2为本发明步骤1方法流程图;
图3为本发明步骤2方法流程图;
图4为本发明步骤3方法流程图;
图5为本发明步骤4方法流程图;
图6为本发明步骤5方法流程图;
图7为有限元模型在OpenCascade环境中共面融合快速渲染效果图;
图8为有限元软件分析后在OpenGL重构和渲染的三维可视化效果图。
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。本发明提供一种基于有限元分析后处理结果的三维可视化方法,流程图如图1所示,主要包括如下步骤:步骤1:生成网格单元体集合,分解网格单元体,剔除网格单元体内部的公共数据面,生成外轮廓面集合。
有限元模型数据主要包含两类:网格单元数据和顶点数据。网格单元数据存储构成该单元的顶点索引值(如六面体网格单元存储其构成的8个顶点的索引值),而顶点数据则存储与索引值对应的顶点的空间三维坐标。根据全部的网格单元信息和顶点信息可确定有限元模型的所有空间几何参数。
为了方便阐述本发明的原理和步骤,这里引入三个专有术语如下:
数据面:对应于某一几何面的边缘顶点坐标信息及其索引顺序。只要有数据面的数据信息就能在三维工具软件(如OpenGL、OpenCascade)中构造出几何面模型。
单元数据面:对应于三维网格数据中基本网格单元的某一几何面的数据面。
单元数据边:对应于单元数据面上的某一几何边,是一条矢量边,存储边的端点信息和先后顺序。
本步骤的目的是从有限元模型的网格单元数据中筛选出包含该有限元模型的外表面几何信息的所有单元数据面的集合。由于有限元模型的基本网格单元数量非常多(如结构分析时动辄划分出几万个到几十万个基本网格单元),如果直接将每一个基本网格单元都重新生成出来,不仅***运行效率低,而且运算极不稳定,因此模型难以重构。减少模型重构的数据量是一种提高运行效率和降低重构复杂度的有效办法,因为在三维显示过程中所关注的是模型外部的显示效果,而与内部结构无关,所以可以消去物体内部多余的网格单元,只保留最外层的网格单元的可见的单元数据面。
网格单元分解和可见数据面筛选原理:
首先,对网格单元体进行单元数据面的规划。由于网格单元都处在同一坐标系下,且网格单元中的顶点顺序是一致的,都以底部左上角顶点为起始顶点,逆时针旋转。因此,可以按照一定的顺序规划出网格单元的所有单元数据面。如一个点索引为1、2、3、4、5、6、7、8的六面体形状的网格单元,它的六个面的点索引通过如下方式得到:规定从该单元外往里看时该面时的逆时针方向进行点排列,那么1265、4378、5678、1234、1584和2673分别是它前、后、下、上、右和左六个数据面的点索引顺序。每一个六面体网格单元可分解得到6个单元数据面。6个单元数据面生成一个存储单元数据面的集合,集合对单元数据面具有查找、删除和***的功能。该集合初始时为空,将分解得到的单元数据面逐一***集合中。单元数据面的***遵循以下原则:***时首先进行查找操作,若此单元数据面在该集合中,则不***且删除已有的单元数据面;若不在该集合中,则***该单元数据面。通过该处理过程,有限元模型的数据中处在内部的单元数据面将全部被消去,只剩下模型的最外层的单元数据面,即为模型外表面的可见单元数据面的集合。
对于某一基本网格单元来说,N1~N8为八节点六面体网格单元的8个顶点,N1:(num,x1,y1,z1)代表顶点的索引号和坐标值,按照从单元外面看为逆时针方向将网格单元划分为6个单元数据面,即为:
i=1,2,3,4,5,6;j=1,2,3,4,5,6。
如图2所示,该步骤主要由以下四个步骤组成:
步骤①:读入全部网格单元体集合的数据Elements。
步骤②:将每一个网格单元体的数据Element按照数据面顶点定义顺序划分成不同单元数据面Face。
步骤③:定义一个初始时为空的数据面集合FaceMAP,判断Face是否存在数据面集合FaceMAP中:如果存在,说明有重合面,该单元数据面属于内部单元数据面,应从FaceMAP中删除此单元数据面;如果不存在,在FaceMAP中添加此单元数据面。
步骤④:对全部网格单元体集合中的每个网格单元体的单元数据面都进行步骤③的判断后,所述的数据面集合FaceMAP中存储了所有网格单元体的外表面的可见单元数据面,称之为外轮廓面集合。
步骤2:对步骤1生成的外轮廓面集合进行共面分组,将所有位于同一个平面上的单元数据面归为一组,每组为一个共面的单元数据面集合CoMAP。
本步骤是为了从外轮廓面集合中将所有在同一平面的单元数据面筛选出来,为以后三维平台生成的模型在该平面上的集合外形做准备,最终生成一个共面的单元数据面集合。该共面的单元数据面集合的数据内容包含了模型在该共面平面上的几何信息。
共面判断和分组原理如下:
共面判断和分组分为两种方式:通用共面算法和特殊位置的共面算法。
1、通用共面算法采用的是检查平面方程系数的方法,其原理如下:
在一个三维空间中,平面方程为a0x+b0y+c0z+d0=0。方程中虽然含有四个未知数a0,b0,c0,d0,但是通过归一化后,可以使得d0=1。因此,欲决定平面方程的系数,仅需要给出不共线的三点就足够了。将不共线的三点(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)代入平面方程中得:
ax1+ay1+cz1=-1
ax2+by2+cz2=-1
ax3+by3+cz3=-1
改写成矩阵的形式:
则平面方程的系数为:
以有限元模型分析输出的八节点六面体网格单元为例,模型的基本网格单元是正六面体,其单元数据面的四个顶点数据中任意三点不共线,因此通过任意三点给出该单元数据面的平面方程,并给出平面方程系数。比较两个单元数据面的平面方程系数的差异,可判断这两个单元数据面是否共面。
2、特殊情况的共面算法:
此共面算法依赖于模型的特殊形式以及模型所处的特殊坐标位置。规则模型采用八节点正六面体的方法来进行网格划分时,网格所有的基本单元的数据面只有两种位置关系:平行或者垂直。由于数据面代表网格中一个基本单元的某个几何面,意味着任意两个数据面也只有平行和垂直两种情况。这也意味着只要某一面平行于坐标轴那么所有的面也会与某一坐标轴平行或垂直。如果模型按平行轴的方向建立,只需要比较与该数据面垂直的坐标轴相应的坐标值即可判断两面之间是否平行,而数据面在此轴上的坐标值就是数据面上任一顶点在此轴上的坐标值。以垂直于x轴的单元数据面为例:其中xi、xj分别为Fi和Fj在x轴上的坐标值。如果所建模型非常规则且平行于坐标轴,使用简化的共面算法将大大提高运算效率。
如图3所示,该步骤主要由以下四个步骤组成:
步骤①:生成一个系数共面映射表ALLMAP。所述的ALLMAP为平面方程系数和单元数据面集合组成的映射表,其中的平面方程系数与单元数据面集合为一一对应的关系。
步骤②:从外轮廓面集合中任取一单元数据面,获取单元数据面的四个顶点数据,求解该单元数据面的平面方程,获取平面方程系数D。
步骤③:在映射表ALLMAP中查找,判断该平面方程系数是否在系数共面映射表ALLMAP中:如果是,获取此系数对应的单元数据面集合CoMAP,将当前单元数据面添加到对应的CoMAP中;否则,生成与此系数对应的单元数据面集合CoMAP,将当前单元数据面添加到单元数据面集合CoMAP中,并将此系数和新生成的单元数据面集合CoMAP一起添加到ALLMAP中。这样,每一个单元数据面集合CoMAP中所存储的单元数据面都是共面的单元数据面。
步骤④:判断外轮廓面集合中的所有单元数据面是否遍历完毕:如果不是,返回步骤②继续选取单元数据面进行相应分组操作;如果是,说明该外轮廓面集合中的单元数据面都已经分组完毕,该阶段结束,得到一个平面方程系数与单元数据面集合一一对应的系数共面映射表ALLMAP,系数共面映射表ALLMAP中的单元数据面集合CoMAP为共面的单元数据面集合。
步骤3:将每一组单元数据面集合CoMAP中的所有单元数据面分解成为独立的单元数据边,剔除所有的内部公共边,得到共面轮廓线集合。
本步骤是为了将某一共面的单元数据面集合CoMAP中的所有单元数据面分解成单元数据边,同样,在二维平面上,关注的是外轮廓上的数据边,而共面的数据面内部重合的单元数据边可以消去,消去后得到一系列包含该共面的单元数据面上所有二维几何信息的单元数据边的集合。
单元数据面分解以及外表面轮廓线提取原理:
首先,进行单元数据面的分解,将所有的单元数据面按照一定的规则拆成单元数据边。单元数据边是一个矢量边,它存储两个端点的索引信息和端点的先后顺序,其索引信息可以获取相应端点的坐标信息。通常按照顺时针或逆时针的顺序进行拆分。例如,对于一个由1234索引号构成的单元数据面可拆分成:1,2;2,3;3,4;4,1;四条单元数据边。
其次,提取模型在某一平面上的外表面轮廓线集合。将所有单元数据面拆分完后,构造一个存储单元数据边集合,所述的单元数据边集合对单元数据边具有查找、删除和***的功能。该单元数据边集合初始时为空,将单元数据边逐一***集合中,单元数据边的***遵循以下原则:***时首先进行查找操作,此单元数据边若在该集合中,则不***且删除已有的单元数据边;若不在该集合中,则***该单元数据边。执行上述操作之后得到的集合是一个存储该平面上所有的轮廓线的集合,这些轮廓线是由一系列闭环的单元数据边组成。
如图4所示,本步骤主要由以下七个步骤组成:
步骤①:在系数共面映射表ALLMAP中任取一个共面的单元数据面集合CoMap。
步骤②:生成一个共面单元数据边集合EdgeMap,初始为空。
步骤③:从共面的单元数据面集合中任取一个单元数据面,依据数据面分解原理,将单元数据面分解成单元数据边Edge,将共面的单元数据面集合中所有的单元数据面都分解成单元数据边。
步骤④:对于分解得到的每条单元数据边Edge取逆向边;例如:对某一条单元数据边12的两个端点1和2,取逆向边后为单元数据边21,所述的单元数据边是有方向的矢量边。判断共面单元数据边集合EdgeMap中是否包含此单元数据边的逆向边:如果是,则说明含有重合的单元数据边,从共面单元数据边集合EdgeMap中删除该单元数据边的逆向边;否则,在共面单元数据边集合EdgeMap中***此单元数据边。
步骤⑤:判断共面的单元数据面集合CoMAP中的单元数据面集合中单元数据边是否遍历完毕,如果是,进入步骤⑥,否则返回步骤④。
步骤⑥:获取CoMAP中的平面方程系数,该平面方程系数与共面单元数据边集合EdgeMap组成共面轮廓线集合。
步骤⑦:判断系数共面映射表ALLMAP中所有的共面的单元数据面集合CoMAP是否遍历完毕,如果是,进入步骤4;否则,返回步骤①进行其余共面的单元数据面集合CoMAP的剔除公共数据边的操作,直到系数共面映射表ALLMAP中所有的共面的单元数据面集合CoMAP都遍历完毕。由此得到的共面单元数据边集合EdgeMap与共面单元数据面系数相对应的集合,称为共面轮廓线集合,共面轮廓线集合的个数与共面的单元数据面集合的个数相同。步骤4:将步骤3中所有共面轮廓线集合进行轮廓线分组,将形成封闭廓线的边分为一组。
本步骤是为了从共面轮廓线集合中将轮廓线进行分组,提取构成单条轮廓线的全部单元数据边的集合。
单条轮廓线提取原理:
按照一定顺序提取组成轮廓线的所有单元数据边,其操作如下:任意取一条单元数据边的一个端点作为起始,以这条边第二个端点搜索下一条边,依次循环下去,直到某条边的第二端点与最初取的起始端点相等为止,该过程取出了一系列按顺序排列的点,这些点集就构成了闭环且有顺序的轮廓线。循环执行上述操作直到取完所有的单元数据边为止,形成某一平面内的一簇轮廓线的集合。
如图5所示,该步骤主要由以下六个步骤组成:
步骤①:从全部共面轮廓线集合中取一个共面单元数据边集合EdgeMap。建立一个轮廓线向量集合Vector,初始为空。
步骤②:从共面单元数据边集合EdgeMap中取出一个初始单元数据边,将初始单元数据边标记为当前单元数据边CurrentEdge,当前单元数据边的第一个端点标记为初始点StartPoint。
步骤③:以当前单元数据边CurrentEdge的第二个端点为索引点在EdgeMap查找到第一端点与之相同的单元数据边。
步骤④:判断该查找到的单元数据边的第二端点是否与初始点StartPoint相同:若相同,说明组成为一条闭合的轮廓线,进入步骤⑤。若不相同,说明没有闭合,将该条单元数据边标记CurrentEdge,并将原CurrentEdge顺序***到Vector且从共面单元数据边集合EdgeMap删除,返回步骤③。
步骤⑤:判断当前共面单元数据边集合EdgeMap是否为空:如果是,进入步骤⑥;否则,返回步骤②,对共面单元数据边集合EdgeMap中的所有单元数据边都进行一次查找。
步骤⑥:判断所有共面轮廓线集合中的所有共面单元数据边集合EdgeMap是否遍历完毕,如果是,进入步骤5;否则,返回步骤①,对全部共面轮廓线集合中的其余共面单元数据边集合EdgeMap进行相应查找操作。最后,得到与共面单元数据边集合EdgeMap相对应的轮廓线向量集合Vector,轮廓线向量集合Vector中存储的都是能够形成封闭轮廓线的单元数据边的集合,并且所有的封闭轮廓线是共面的。
步骤5:根据轮廓线向量集合Vector中每一组封闭轮廓线生成一个独立的拓扑面,并判断此拓扑面为洞还是表面,对所有的非洞表面执行布尔求和运算,对洞执行布尔求差运算,生成三维模型。
本步骤是为了根据轮廓线的点的数据信息通过三维建模平台生成和有限元模型包含相同的三维几何信息的三维模型。
有限元模型三维建模可视化原理:将单元数据面中的点转换成三维建模拓扑结构形式的顶点。通过该单元数据面的拓扑顶点并且结合顶点的存储顺序生成该单元数据面的所有拓扑边,使用连接函数连接所有的拓扑边并使用生成面的方法使拓扑边形成三维建模中的拓扑面。然后将形成的拓扑面进行布尔运算,最终获得和有限元模型三维空间几何形状一致的拓扑结构体,该拓扑结构体在三维建模环境中可以贴纹理和材质,并可以进行三维模型所具有的一般操作和运算。
该步骤主要由以下七个步骤组成:
步骤①:从所有共面封闭轮廓线向量集合中取一个共面封闭轮廓线向量集合。
步骤②:从该共面封闭轮廓线向量集合中取一条轮廓线向量。
步骤③:根据该轮廓线向量中所有点的坐标信息生成三维建模平台的拓扑边,并以此拓扑边生成三维建模平台中的拓扑面。
步骤④:判断当前共面封闭轮廓线向量集合中的所有轮廓线向量是否遍历完毕:如果是,进入步骤⑤;否则,返回步骤②。
步骤⑤:将生成的所有三维建模平台中的拓扑面进行位置关系(例如使用OpenCascade)判断,并从外到内进行布尔运算(位置关系判断和布尔运算使用三维建模平台的API,例如OpenCascade的BRepAlgoAPI运算库),生成有限元模型外表面在该拓扑面上的外形结构。
步骤⑥:判断所有共面封闭轮廓线向量集合是否遍历完毕:如果是,进入步骤⑦;否则,返回步骤①。
步骤⑦:将生成所有拓扑面上的外型结构进行融合(例如OpenCascade的BRepAlgoAPI_Fuse操作),得到与有限元三维几何信息相同的三维模型,结束。
应用实例
将本发明应用在结构分析中,结构分析常见于军事试验、自然灾害模拟等仿真中,本发明以结构分析为应用背景,选取LS-DYNA为有限元分析平台、选取OpenCascade为三维建模平台,通过应用本发明提出的基于有限元分析后处理结果的三维可视化方法实现了有限元模型在三维平台上模型重构、快速渲染等功能。
LS-DYNA是可进行结构分析(可进行线性分析、非线性分析和高度非线性分析)、流体动力学分析、电磁场分析、声场分析、压电分析以及多物理场的耦合分析仿真应用程序。
OpenCascade是一种提供二维和三维几何体的生成、显示和分析功能的三维建模平台,是三维协同***的设计与实现图形开发包。常用于处理各种通用或专用的CAD***、仿真应用程序等中的二维(2D)或三维(3D)几何造型问题。
基于LS-DYNA软件进行结构分析,产生的数据文件包含226814个顶点和75239个基本单元。用vc.net 2005开发的文本文件处理模块进行对比分析得到75239个剥落的基本单元。将这些数据导入外表面搜索提取模块,在原451434个数据面中提取出145613个外表面。这些数据面含有四个顶点,形成了145613个数据单元。进行共面融合后得到5410个面单元,只占原来的单元数据面数量的1.2%。在OpenCascade只需重构出5410个拓扑外表面。在运算过程在p43.0机器上运行时间约为30秒。附图7为导弹穿墙有限元模型在OpenCascade环境中重构结果,附图8为一个建筑物的***毁伤的过程在经有限元软件分析后在OpenGL重构和渲染的结果。附图显示其模型的外形信息在有限元环境中和三维建模环境一致,这些实例表明该重构方法是可行和有效的。
Claims (7)
1.一种基于有限元分析后处理结果的快速三维可视化方法,其特征在于:
步骤1:生成网格单元体集合,分解网格单元体,剔除内部的公共数据面,生成外轮廓面集合;
步骤2:对步骤1中生成的外轮廓面集合进行共面分组,将所有位于同一个平面上的单元数据面归为一组,每组为一个共面的单元数据面集合CoMAP;
步骤3:将每一组共面的单元数据面集合中的所有单元数据面分解成为独立的单元数据边,剔除所有的内部公共边,得到共面轮廓线集合;
步骤4:将步骤3中的所有共面轮廓线集合进行轮廓线分组,将所有形成封闭廓线的边分为一组;
步骤5:根据轮廓线向量集合Vector中每一组封闭轮廓线生成一个独立的拓扑面,并判断此拓扑面为洞还是表面,对所有的非洞表面执行布尔求和运算,对洞执行布尔求差运算,生成三维模型。
2.根据权利要求1所述的基于有限元分析后处理结果的快速三维可视化方法,其特征在于:所述的步骤1主要由以下步骤实现:
步骤①:读入全部网格单元体集合中的网格单元数据;
步骤②:将每一个网格单元数据按照数据面顶点定义顺序划分成不同单元数据面Face;
步骤③:生成一个初始时为空的数据面集合FaceMAP,判断单元数据面Face是否存在数据面集合FaceMAP中:如果存在,则从FaceMAP删除此数据面;如果不存在,则在FaceMAP中添加此单元数据面;
步骤④:判断全部网格单元体集合中的网格单元数据是否遍历完毕:如果没有遍历完毕,则返回步骤①;否则,该阶段结束,数据面集合中存储了所有网格单元体的外表面的可见单元数据面,称之为外轮廓面集合。
3.根据权利要求1所述的基于有限元分析后处理结果的快速三维可视化方法,其特征在于:所述的步骤2主要由以下四个步骤组成:
步骤①:生成一个系数共面映射表ALLMAP,所述的ALLMAP为平面方程系数和单元数据面集合组成的映射表,其中的平面方程系数与单元数据面集合为一一对应的关系;
步骤②:从外轮廓面集合中任取一单元数据面,获取单元数据面的顶点数据,求解该单元数据面的平面方程,获取平面方程系数D;
步骤③:在系数共面映射表ALLMAP中查找,判断该平面方程系数是否在系数共面映射表ALLMAP中,如果是,获取此系数对应的单元数据面集合CoMAP,将当前单元数据面添加到对应的单元数据面集合CoMAP中;否则,生成与此系数对应的单元数据面集合CoMAP,将当前单元数据面添加到单元数据面集合CoMAP中,并将此系数和新生成的单元数据面集合CoMAP一起添加到ALLMAP中;
步骤④:判断轮廓面集合中的所有单元数据面是否遍历完毕:如果不是,返回步骤②;如果是,该阶段结束,系数共面映射表ALLMAP中的单元数据面集合CoMAP为共面的单元数据面集合。
4.根据权利要求1所述的基于有限元分析后处理结果的快速三维可视化方法,其特征在于:所述的步骤3主要由以下七个步骤组成:
步骤①:在系数共面映射表ALLMAP中任取一个共面的单元数据面集合CoMap;
步骤②:生成一个共面单元数据边集合EdgeMap,初始为空;
步骤③:从共面的单元数据面集合CoMap中任取一个单元数据面Face,依据数据面分解原理,将单元数据面分解成单元数据边Edge,将所有的单元数据面都分解成单元数据边;
步骤④:对于分解得到的每条单元数据边Edge取逆向边;判断EdgeMap中是否包含此单元数据边的逆向边:如果是,则说明含有重合的单元数据边,从EdgeMap中删除该单元数据边的逆向边;否则,在EdgeMap中***此单元数据边,最后形成的EdgeMap中的所有单元数据边组成共面轮廓线集合;
步骤⑤:判断CoMAP中的单元数据面集合中单元数据边是否遍历完毕,如果是,进入下一步,否则返回步骤④。
步骤⑥:获取CoMAP中的平面方程系数,该平面方程系数与EdgeMap组成共面轮廓线集合;
步骤⑦:判断ALLMAP中所有的共面的单元数据面集合CoMAP是否遍历完毕,如果是进入步骤4,否则返回步骤①。
5.根据权利要求1所述的基于有限元分析后处理结果的快速三维可视化方法,其特征在于:所述的步骤4主要由以下六个步骤组成:
步骤①:从全部共面轮廓线集合中取一个共面单元数据边集合EdgeMap;建立一个轮廓线向量Vector,初始为空;
步骤②:从EdgeMap中取出一个初始单元数据边,将初始单元数据边标记为当前单元数据边CurrentEdge,初始单元数据边的第一个端点标记为初始点StartPoint;
步骤③:以CurrentEdge的第二个端点为索引点在EdgeMap查找到第一端点与之相同的单元数据边;
步骤④:判断该单元数据边的第二端点是否与初始点StartPoint相同:若相同,说明组成为一条闭合的轮廓线,进入步骤⑤,若不相同,说明没有闭合,将该条单元数据边标记CurrentEdge,并将原CurrentEdge顺序***到Vector且从EdgeMap删除,返回步骤③;
步骤⑤:判断当前EdgeMap是否为空:如果是,进入步骤⑥;否则,返回步骤②;
步骤⑥:判断所有EdgeMap是否遍历完毕:如果是,进入步骤5;否则,返回步骤①。
6.根据权利要求1所述的基于有限元分析后处理结果的快速三维可视化方法,其特征在于:所述的步骤5主要由以下七个步骤组成:
步骤①:从所有共面封闭轮廓线集合取一个共面封闭轮廓线向量集合;
步骤②:从该共面封闭轮廓线向量集合中取一条轮廓线向量Vector;
步骤③:根据该轮廓线向量中所有点的坐标信息生成三维建模平台的拓扑边,并以此拓扑边生成三维建模平台中的拓扑面;
步骤④:判断当前共面封闭轮廓线向量集合中的所有轮廓线向量Vector是否遍历完毕:如果是,进入步骤⑤;否则,返回步骤②;
步骤⑤:将生成的所有三维建模平台中的拓扑面进行位置关系判断,并从外到内进行布尔运算生成有限元模型外表面在该平面上的外形结构;
步骤⑥:判断所有共面封闭轮廓线向量集合是否遍历完毕:如果是,进入步骤⑦;否则,返回步骤①;
步骤⑦:将生成所有平面上的外型结构进行融合,得到与有限元三维几何信息相同的三维模型,结束。
7.根据权利要求1所述的基于有限元分析后处理结果的快速三维可视化方法,其特征在于:所述的单元数据面对应于三维网格数据中基本网格单元的某一几何面的数据面;所述的单元数据边对应于单元数据面上的某一几何边,是一条矢量边,存储边的端点信息和先后顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010287712 CN101982837A (zh) | 2010-09-19 | 2010-09-19 | 一种基于有限元分析后处理结果的快速三维可视化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010287712 CN101982837A (zh) | 2010-09-19 | 2010-09-19 | 一种基于有限元分析后处理结果的快速三维可视化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101982837A true CN101982837A (zh) | 2011-03-02 |
Family
ID=43619734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010287712 Pending CN101982837A (zh) | 2010-09-19 | 2010-09-19 | 一种基于有限元分析后处理结果的快速三维可视化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101982837A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102393970A (zh) * | 2011-12-13 | 2012-03-28 | 北京航空航天大学 | 一种物体三维建模与渲染***及三维模型生成、渲染方法 |
CN102722621A (zh) * | 2011-11-16 | 2012-10-10 | 中国电子科技集团公司第三十八研究所 | 一种有限元法计算结果的可视化处理方法 |
CN105261061A (zh) * | 2015-09-07 | 2016-01-20 | 深圳市易尚展示股份有限公司 | 一种识别冗余数据的方法及装置 |
CN105279320A (zh) * | 2015-10-09 | 2016-01-27 | 江苏大学 | 一种生成fdtd网格的方法 |
CN107945278A (zh) * | 2017-12-14 | 2018-04-20 | 桂林电子科技大学 | 一种生物体结构的三维重构与有限元分析方法 |
CN110046390A (zh) * | 2019-03-15 | 2019-07-23 | 北京万相融通科技股份有限公司 | 一种判定三维模型中结构件之间连接状态的方法 |
CN110097640A (zh) * | 2019-04-10 | 2019-08-06 | 东南大学 | 一种基于OpenGL的三维有限元模型云图显示方法 |
CN112581625A (zh) * | 2020-12-28 | 2021-03-30 | 中国科学院电工研究所 | 一种重叠网格边界嵌入的方法 |
CN114155329A (zh) * | 2021-11-11 | 2022-03-08 | 埃洛克航空科技(北京)有限公司 | 三维模型多格网的平面融合方法、***及电子设备 |
CN116740317A (zh) * | 2023-08-14 | 2023-09-12 | 济南邦德激光股份有限公司 | 一种用于激光数控的三维仿真可视化展示方法及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030117397A1 (en) * | 2001-12-21 | 2003-06-26 | Hubrecht Alain Yves Nestor | Systems and methods for generating virtual reality (VR) file(s) for complex virtual environments |
CN1713184A (zh) * | 2005-07-21 | 2005-12-28 | 上海交通大学 | 计算机执行确定特大型工程地震安全性预测的方法 |
CN101216863A (zh) * | 2008-01-16 | 2008-07-09 | 中山大学 | 一种处理服装热舒适度的三维可视化方法 |
CN101216846A (zh) * | 2008-01-04 | 2008-07-09 | 清华大学 | 一种仿真数据的可视化与协同共享方法 |
CN101329700A (zh) * | 2008-05-22 | 2008-12-24 | 北京航空航天大学 | 一种用于模拟流体流动的方法 |
-
2010
- 2010-09-19 CN CN 201010287712 patent/CN101982837A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030117397A1 (en) * | 2001-12-21 | 2003-06-26 | Hubrecht Alain Yves Nestor | Systems and methods for generating virtual reality (VR) file(s) for complex virtual environments |
CN1713184A (zh) * | 2005-07-21 | 2005-12-28 | 上海交通大学 | 计算机执行确定特大型工程地震安全性预测的方法 |
CN101216846A (zh) * | 2008-01-04 | 2008-07-09 | 清华大学 | 一种仿真数据的可视化与协同共享方法 |
CN101216863A (zh) * | 2008-01-16 | 2008-07-09 | 中山大学 | 一种处理服装热舒适度的三维可视化方法 |
CN101329700A (zh) * | 2008-05-22 | 2008-12-24 | 北京航空航天大学 | 一种用于模拟流体流动的方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722621A (zh) * | 2011-11-16 | 2012-10-10 | 中国电子科技集团公司第三十八研究所 | 一种有限元法计算结果的可视化处理方法 |
CN102393970A (zh) * | 2011-12-13 | 2012-03-28 | 北京航空航天大学 | 一种物体三维建模与渲染***及三维模型生成、渲染方法 |
CN105261061B (zh) * | 2015-09-07 | 2018-10-26 | 深圳市易尚展示股份有限公司 | 一种识别冗余数据的方法及装置 |
CN105261061A (zh) * | 2015-09-07 | 2016-01-20 | 深圳市易尚展示股份有限公司 | 一种识别冗余数据的方法及装置 |
CN105279320A (zh) * | 2015-10-09 | 2016-01-27 | 江苏大学 | 一种生成fdtd网格的方法 |
CN105279320B (zh) * | 2015-10-09 | 2018-05-22 | 江苏大学 | 一种生成fdtd网格的方法 |
CN107945278A (zh) * | 2017-12-14 | 2018-04-20 | 桂林电子科技大学 | 一种生物体结构的三维重构与有限元分析方法 |
CN110046390A (zh) * | 2019-03-15 | 2019-07-23 | 北京万相融通科技股份有限公司 | 一种判定三维模型中结构件之间连接状态的方法 |
CN110097640A (zh) * | 2019-04-10 | 2019-08-06 | 东南大学 | 一种基于OpenGL的三维有限元模型云图显示方法 |
CN110097640B (zh) * | 2019-04-10 | 2023-08-11 | 东南大学 | 一种基于OpenGL的三维有限元模型云图显示方法 |
CN112581625A (zh) * | 2020-12-28 | 2021-03-30 | 中国科学院电工研究所 | 一种重叠网格边界嵌入的方法 |
CN112581625B (zh) * | 2020-12-28 | 2023-11-10 | 中国科学院电工研究所 | 一种重叠网格边界嵌入的方法 |
CN114155329A (zh) * | 2021-11-11 | 2022-03-08 | 埃洛克航空科技(北京)有限公司 | 三维模型多格网的平面融合方法、***及电子设备 |
CN116740317A (zh) * | 2023-08-14 | 2023-09-12 | 济南邦德激光股份有限公司 | 一种用于激光数控的三维仿真可视化展示方法及设备 |
CN116740317B (zh) * | 2023-08-14 | 2023-11-03 | 济南邦德激光股份有限公司 | 一种用于激光数控的三维仿真可视化展示方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101982837A (zh) | 一种基于有限元分析后处理结果的快速三维可视化方法 | |
JP4999522B2 (ja) | 解析メッシュ生成装置 | |
Jing | Block system construction for three-dimensional discrete element models of fractured rocks | |
JP4381743B2 (ja) | 境界表現データからボリュームデータを生成する方法及びそのプログラム | |
CN102609992A (zh) | 基于三角网格变形体的自碰撞检测方法 | |
Fadel et al. | Packing optimization of free-form objects in engineering design | |
CN104809760A (zh) | 基于深度优先策略的地理空间三维外轮廓自动构建方法 | |
Greß et al. | Object-space interference detection on programmable graphics hardware | |
CN105279788B (zh) | 一种生成物体空间扫掠体的方法 | |
Velasco et al. | Cell Octrees: A New Data Structure for Volume Modeling and Visualization. | |
Franceschin et al. | GPU-based rendering of arbitrarily complex cutting surfaces for black oil reservoir models | |
Figueiredo et al. | A survey on collision detection techniques for virtual environments | |
Danovaro et al. | Multiresolution tetrahedral meshes: an analysis and a comparison | |
Weiss et al. | Bisection-based triangulations of nested hypercubic meshes | |
Taubin | Constructing hamiltonian triangle strips on quadrilateral meshes | |
Aldrich et al. | Collision-Driven Volumetric Deformation on the GPU. | |
de Oliveira et al. | A systematic review of algorithms with linear-time behaviour to generate Delaunay and Voronoi tessellations | |
Franklin | Mass properties of the union of millions of identical cubes | |
Hu et al. | 3D Model Dynamic Perforation Simulation Based on Game Engine | |
Li | n D polyhedral scene reconstruction from single 2D line drawing by local propagation | |
De Floriani et al. | TOPMESH-A Tool for Extracting Topological Information from Non-manifold Objects | |
Menon et al. | Implicit surfaces for geometric modeling and computer graphics | |
Heinonen | Simplification of 3D Computer-aided Design Models to Improve Rendering Performance | |
Favre et al. | Ray tracing with a space‐filling finite element mesh | |
Li et al. | Efficient occlusion culling with occupancy proportion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110302 |