CN110222447B - 一种基于八叉树的自适应网格划分方法及系统 - Google Patents
一种基于八叉树的自适应网格划分方法及系统 Download PDFInfo
- Publication number
- CN110222447B CN110222447B CN201910514427.6A CN201910514427A CN110222447B CN 110222447 B CN110222447 B CN 110222447B CN 201910514427 A CN201910514427 A CN 201910514427A CN 110222447 B CN110222447 B CN 110222447B
- Authority
- CN
- China
- Prior art keywords
- octree
- model
- grid
- file
- nodes
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Architecture (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开一种基于八叉树的自适应网格划分方法及系统,划分方法包括:获取待计算的文件模型;将所述待计算的文件模型采用多边形鲁棒修复法消除文件缺陷,得到全封闭的文件模型;将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型;对原始的八叉树网络模型进行平滑处理,得到均匀的八叉树网格模型;遍历均匀的八叉树网络模型中的叶子节点,得到最终的非均匀网格模型。本发明中的上述方法及系统降低网格划分方法的复杂度并提高划分精度。
Description
技术领域
本发明涉及网格划分领域,特别是涉及一种基于八叉树的自适应网格划分方法及系统。
背景技术
自上个世纪以来铸造数值模拟技术在理论和实际应用得到了长足的发展,现在已经发展成具有一定规范的一套理论,网格划分是铸造数值模拟前处理模块中最重要的组成部分,非均匀网格的生成以其能减少网格数量从而成为网格划分研究领域重要研究方向。传统的有限差分非均匀网格生成思想主要是分区域设定不同的网格步长,需要对每一个铸件进行几何分析,在实际的铸造模拟中不仅会使整个数值计算分析过程变得繁琐,过程漫长,并且由于不同的技术人员对于模型结构分析有不同的策略,这也导致了网格划分质量的不稳定。
八叉树模型是一种三维实体建模的方法,具有存储形式简单、易于计算的优点,在诸多领域得到了广泛的应用。但是现有的基于八叉树模型的网格划分算法主要存在着以下几大问题:(1)网格划分算法过于复杂,不仅难以理解,而且算法实现中函数调用多,函数间的嵌套调用非常繁复;(2)八叉树模型节点停止生长的边界条件不够准确实用;(3)算法的全面适用性不够好。
发明内容
本发明的目的是提供一种基于八叉树的自适应网格划分方法及系统,降低网格划分方法的复杂度并提高划分精度。
为实现上述目的,本发明提供了如下方案:
一种基于八叉树的自适应网格划分方法,所述划分方法包括:
获取待计算的文件模型;
将所述待计算的文件模型采用多边形鲁棒修复法消除文件缺陷,得到全封闭的文件模型;
将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型;
对原始的八叉树网络模型进行平滑处理,得到均匀的八叉树网格模型;
遍历均匀的八叉树网络模型中的叶子节点,得到最终的非均匀网格模型。
可选的,所述将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型具体包括:
将全封闭的文件模型抽象为根节点;
基于根节点向下分裂生成8个子节点;
判断分裂生长是否达到边界条件;
若未达到边界条件,则继续分裂直到达到边界条件;
若达到边界条件则停止分裂,将文件模型中的三角面片信息存储到对应的子节点中,得到原始的八叉树网络模型。
可选的,所述边界条件为所述三角面片的个数为10以及两矢量的夹角的余弦值为0.85~0.95。
可选的,所述将文件模型中的三角面片信息存储到对应的子节点中具体是采用投影相交判定法将三角面片信息存储到对应的子节点中。
可选的,所述对原始的八叉树网络模型进行平滑处理具体包括:
对所述原始的八叉树网络模型中的所有节点进行唯一标记;所述唯一标记表示子节点之间的拓扑关系;
将子节点映射为网格;
基于所述标记,判断两邻网格是否处于同一父网格;
若两相邻网格不处于同一父网格中,则进行上溯处理,直到满足相邻网格处于同一父网格中;
继续下溯处理,依次出栈所求的邻接网格编号;
若对应的网格编号的网格节点还未生成,此时节点需向下分裂生长,不断进行下溯出栈过程,直到栈空,得到均匀的八叉树网格模型。
本发明另外提供一种基于八叉树的自适应网格划分系统,所述划分系统包括:
获取模块,用于获取待计算的文件模型;
缺陷消除模块,用于将所述待计算的文件模型采用多边形鲁棒修复法消除文件缺陷,得到全封闭的文件模型;
建模模块,用于将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型;
平滑处理模块,用于对原始的八叉树网络模型进行平滑处理,得到均匀的八叉树网格模型;
非均匀网格确定模块,用于遍历均匀的八叉树网络模型中的叶子节点,得到最终的非均匀网格模型。
可选的,所述建模模块具体包括:
根节点确定单元,用于将全封闭的文件模型抽象为根节点;
分裂单元,用于基于根节点向下分裂生成8个子节点;
第一判断单元,用于判断分裂生长是否达到边界条件;
循环单元,用于当未达到边界条件,继续分裂直到达到边界条件;
原始的八叉树网络模型确定单元,用于当达到边界条件时停止分裂,将文件模型中的三角面片信息存储到对应的子节点中,得到原始的八叉树网络模型。
可选的,所述边界条件为所述三角面片的个数为10以及两矢量的夹角的余弦值为0.85~0.95。
可选的,所述将文件模型中的三角面片信息存储到对应的子节点中具体是采用投影相交判定法将三角面片信息存储到对应的子节点中。
可选的,所述平滑处理模块具体包括:
标记单元,用于对所述原始的八叉树网络模型中的所有节点进行唯一标记;所述唯一标记表示子节点之间的拓扑关系;
映射单元,用于将子节点映射为网格;
第二判断单元,基于所述标记,判断两邻网格是否处于同一父网格;
上溯单元,用于当两相邻网格不处于同一父网格中,则进行上溯处理,直到满足相邻网格处于同一父网格中;
下溯单元,用于继续下溯处理,依次出栈所求的邻接网格编号;
均匀的八叉树网格模型确定单元,用于当对应的网格编号的网格节点还未生成,此时节点需向下分裂生长,不断进行下溯出栈过程,直到栈空,得到均匀的八叉树网格模型。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明通过对文件的三角面片的分布特征进行计算分析,设定八叉树生长的边界条件,整个过程是一个自动计算的过程,无需像传统的非均匀网格生成方式一样手动设置划分区域;
本发明的上述方法计算是自适应的过程,能够针对铸件模型特征在该区域自动产生合适步长的网格,这保证了网格划分质量的稳定性;
本发明借助于八叉树进行实体建模,整个计算过程明白清晰,无需传统八叉树建模计算过程中繁复的函数调用,计算结果获取直接,精度较高,八叉树模型的叶子节点就是最终要求的非均匀网格模型。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例基于八叉树的自适应网格划分方法流程图;
图2为本发明实施例典型STL文件缺陷示意图;
图3本发明实施例投影相交法判断三角面片位于立方体之中时示意图;
图4本发明实施例投影相交法判断三角面片与立方体相交时示意图;
图5本发明实施例投影相交法判断三角面片位于立方体之外时示意图;
图6为本发明实施例八叉树生长的边界条件中三角面片共顶点的示意图;
图7为本发明实施例八叉树生长的边界条件中三角面片几乎共面情形的示意图;
图8为本发明实施例原始的非平滑的八叉树模型示意图;
图9为本发明实施例相邻网格进行标号的示意图;
图10为本发明实施例原始的八叉树网格经过网格平滑化处理的示意图;
图11为本发明实施例基于八叉树的自适应网格划分系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于八叉树的自适应网格划分方法及系统,降低网格划分方法的复杂度并提高划分精度。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明实施例基于八叉树的自适应网格划分方法流程图,如图1所示,所述方法包括:
步骤101:获取待计算的文件模型。
具体的,本发明中文件格式为STL文件。
步骤102:将所述待计算的文件模型采用居涛JuTao的多边形鲁棒修复法消除文件缺陷,得到全封闭的文件模型。
具体的,由于本发明中涉及到的方法需要对STL文件的三角面片的分布特征直接进行计算分析,因此需要对常见的STL文件的缺陷进行处理以得到全封闭的模型表面。常见的STL文件缺陷如图2所示,共有四种:其中,图2中的(a)部分为三角面片丢失造成局部的空洞(Hole);图2中的(b)部分为三角面片之间产生缝隙(Gap);图2中的(c)部分为存在非流形的边(Non-manifold edges);图2中的(d)部分为三角面片交叉(Self-intersections),对于上述缺陷的处理办法采用的是Ju Tao提出的针对STL文件错误的修复方法,更为重要的是,JuTao基于该方法开源了相应的计算程序及说明文档,在本发明开发的网格划分程序中需要先用该计算程序修复STL文件模型。
步骤103:将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型。
具体的,对于八叉树建模主要分为三部分:(1)根节点的建立;(2)节点的分裂生长;(3)节点停止生长的边界条件。
其中,根节点的建立主要包括:
在八叉树建模中将STL文件模型抽象为根节点,根节点在网格模型中对应着一个立方体包围盒,该包围盒能够完全容纳所要处理的铸件模型。在一次遍历读取文件时记录STL文件的三角面片(或模型实体)在x、y、z三个方向上的极值(x_min,x_max)、(y_min,y_max)和(z_min,z_max),根据极值即可确定包围盒的大小。本发明中生成的网格是立方体网格,原始的根节点的网格大小由max(x_max-x_min,y_max-y_min,z_max-z_min)确定。有一些三角面片恰好位于立方体包围盒某一面上,在后续判断三角面片的位置特征的时候会增加计算复杂度,因此根节点网格中心不变,立方体包围盒边长扩大为原来的1.2倍。
节点的分裂生长:
八叉树网格模型中每一个节点都对应着空间中的一个小立方体,该小立方体含有模型的一部分,根节点包含着全部的模型。每个节点向下分裂生长产生8个子节点,相对应地,该节点对应的立方体包围盒在空间中三个维度切分产生8个小立方体。该节点对应的立方体在空间中含有部分或全部的铸件模型,经过切分,模型部分将会分裂到8个小立方体中。然后八叉树继续向下生长,每个子节点继续分裂生长产生下一层的节点。不断递归计算下去,直至满足边界条件节点停止生长。
每次节点的分裂生长都对应着该节点对应的立方体分为8个小立方体,该立方体内包含的模型部分会切分落到到某个小立方体中,因此需要计算节点内的模型部分落到哪个小立方体中。STL模型部分是通过众多三角面片组成的,算法直接对STL文件的三角面片进行处理,因此该问题就转化为判断空间中三角面片与立方体的位置关系。该方法通过投影相交判定法来进行判定,即将三角面片和立方体分别向xy、yz、xz三个平面进行投影,三角面片在立方体中、与立方体相交、在立方体之外分别对应着图3、图4、图5中情形,这样就将一个空间位置关系变成了平面几何相交判定问题,易用平面几何知识判定。
判定位置关系后就可以将模型的三角面片信息存储到相应的小立方体中,继续后续的递归分裂计算。
节点停止生长的边界条件:
节点停止生长的边界条件分为三类:
1.边界条件之一:单元内三角面片个数
STL文件是用三角面片来近似逼近模型的几何形状,通过对大量的模型文件观察以及在对八叉树生长过程中的三角面片分布情况的追踪分析,可以知道三角面片数量在空间中并不是均匀分布的,在八叉树的生长过程中,节点单元内的三角面片数量较少时,可能对应着两种情况:一是该节点对应的区域是几何形状简单的区域,二是某些复杂区域的网格剖分已经达到了相当大的深度。这两情况都应停止计算。
2.边界条件之二:单元内三角面片共顶点
极限条件。在铸件模型的薄壁部位或者尖角处,三角面片共顶点,程序的计算不能将三角面片分散处理到不同的子节点中,因此在这种情形下应当停止递归计算,否则将会导致无穷递归。具体如图6所示。
3.边界条件之三:单元内三角面片法矢量夹角
在铸件的非尖锐部位,组成物体表面的三角面片由于曲率较小,微观上近似在同一个平面上。对于这些几乎处于同一平面上的三角面片来说,网格进一步划
分产生的许多小网格在排列分布上仍然表征的是原来的特征关系,网格的继续划分并没有起到细化铸件模型表面特征的作用,此时增加了网格数量但是并没有更精确的表示模型特征,在这里节点应当停止生长。具体如图7所示。
在算法的实现上,利用三角面片的面法矢来计算。若两三角面片处于同一平面,则面法矢互相平行,反之亦然。然而实际上相邻的三角面片都是平滑连接,严格满足处于同一平面的情况较为少见,平行条件过于苛刻。将严格共面的条件改为满足一定的夹角关系,这可以通过计算两矢量的夹角余弦值完成。
如前所述。经过对多个铸件模型的计算测试,算法参数需要设置的比较合理才能得到高质量的非均匀网格。边界条件中单元内三角面片的个数设置为10左右较为合适,边界条件中共平面的判定中两法矢量的夹角的余弦值设定为0.85~0.95较为合适。
节点的每次向下分裂生长都会导致节点内三角面片分裂到八个子节点内,也就是说节点数量会减小。当设置值大于10时,此时网格节点经过少数几次分裂就停止向下生长,产生的是大量粗大网格,网格模型会失去非均匀性;当设置值小于10时,此时网格节点向下分裂生长的次数过多,网格数量会急剧增加,达不到生成非均匀网格以较少网格数量的目的。边界条件中共平面的判定中两法矢量的夹角的余弦值设定为0.85~0.95较为合适,余弦值小于0.85会导致包含许多三角面片的节点停止计算,网格失去均匀性;余弦值大于0.95,边界条件过于严苛,网格数量会急剧增加。
步骤104:对原始的八叉树网络模型进行平滑处理,得到均匀的八叉树网格模型。
经过前述方法计算处理得到的八叉树是非均匀树,如图8所示,由图中的(a)部分可以看出,相邻网格的网格步长可能相差会比较大,这会产生两方面的问题:一是网格模型要能反映出铸件模型的几何特征,当相邻网格步长差距太大,模型各区域之间过渡不够平滑,而铸件模型在工艺设计时,在形状复杂程度不一的区域之间都力求过渡变化。因此,这种非均匀网格相当于在结构上产生了突变,是失真的;二是在利用得到的这种网格在后续的数值计算过程中,由于有限差分的计算过程是用差分代替微分,当相邻网格步长相差太大,差分计算的截断误差也会增大。
因此有必要对树的非均匀性进行一定的限制,如图8的(b)部分所示,此时的八叉树为非均匀的,本发明限制对于相邻网格,它们之间的深度差的绝对值不超过1,这样既能保证得到的是非均匀网格,又可以避免上述那种相邻网格步长差距过大的现象产生。
平滑化算法处理主要包含两部分:一是查找相邻网格,二是判断相邻网格是否满足树的非均匀性现在,若不满足网格需要分裂生长直到满足该条件。
对相邻网格的查找需要通过对网格节点进行编码记录来完成。用一个标号值mark对每一个节点进行唯一性标志(根节点标号mark设定为0,将是计算时重要的边界条件),并且mark值要表示出子节点之间的拓扑关系,同一个父网格中子网格的空间拓扑关系可由图9表示,记录在表1中。假设分裂的父节点的标号为mark,那么对于产生的8个子节点来说,它们的标号分别为8*mark+1、8*mark+2、8*mark+3、8*mark+4、8*mark+5、8*mark+6、8*mark+7、8*mark+8。假设对于某个叶子节点来说,其标号为mark,通过mark%8的取余运算得到该叶子节点的父节点网格相关的编号,在网格中也找到相应的父节点。相邻网格的查找是通过表1和表2共同来完成。
对于任一网格来说,与它邻接的有6个方向,其中有三个方向的网格是与它处于同一父网格中,即处于树中同一深度,不必进行进一步的平滑化处理,比如,节点mark值为9556,9556%8=4,网格4的x、y、z三个象限上的邻接网格为网格3、网格1、网格8,在x正方向、y负方向、z正方向上的邻接网格处于同一父网格中,无需进一步处理,另外三个方向上的邻接网格处于其它父网格中,处于树的另外分支,需要进行邻接网格的查找。两邻接网格若不是存在于同一父网格,那么邻接网格的父网格必定满足邻接关系,若父网格存在于同一祖父网格中,则可以停止上溯,因为由前所述,网格深度差的绝对值小于1就可以满足平滑化的要求了。否则,邻接关系的寻找需要继续上溯,邻接网格的判断和叶子节点一样继续使用表1进行判断,直到满足邻接网格位于同一父网格中(用表2判断),该计算过程本质上就是树算法中“寻找最近公共祖先节点”相关内容。找到满足邻接关系的祖先节点后,要下溯寻找所要查找叶子节点的邻接网格,这是通过栈这一数据结构来完成的。在上溯过程中,树的每一层计算过程中保存相应邻接网格的编号(1-8中某个值),由于栈中数据具有先进后出(First In,Last Out)的特点,在下溯过程中,依次出栈所求的邻接网格编号,若对应网格编号的网格节点还没有生成,此时节点需要向下分裂生长,不断进行下溯出栈过程,直到栈为空,此时满足所求叶子节点的邻接网格跟它的深度差不大于1。
具体的,如图10所示,具体的,如图10中的(a)部分所示,以标号为1的网格为例,在Y轴的负方向上的邻接网格处于同一父网格中,因此不需要进一步处理;在Y轴正方向上的网格不在同一父网格中,因此需要查表进行处理。查表2知道邻接网格不在父网格中,查表1知道邻接网格标号为2,将标号2入栈储存;由于没有满足处于同一父网格的条件,因此需要上溯处理。上溯的父网格查表2知道Y轴正方向的邻接网格不在同一父网格中,查表1知道邻接网格标号为2,将标号2入栈储存;继续上溯,查表2知道Y轴正方向的邻接网格不在同一父网格中,查表1知道邻接网格标号为2,将标号2入栈储存;继续上溯,发现父网格节点的mark值为0,表示此时已经到达根节点,根节点成为最近的公共祖先节点,停止上溯计算。
接下来需要下溯来判断邻接网格的生成。这需要借助于刚刚上溯储存各标号的栈,栈由于具有先进后出的特点,因此最先出栈的是最接近最近公共祖先节点的节点,它的标志为2,需要判断最近公共祖先的第2个子节点是否存在,不存在则需要分裂生成;继续出栈,以刚刚生成的第2个子节点判断相应的子节点是否存在,不存在则继续生成。以此类推,直到栈空,计算完成。图10是图8中网格平滑化的示意图,图10中的(b)部分中八叉树的虚线代表了节点下溯生长分裂的过程。
上溯计算时,当上溯的节点mark值为0时还不满足要求,说明此时所求的叶子节点处于网格模型的最外层边界处,在某方向上不存在邻接网格,因此计算应当停止。这是根节点mark值设置为0的原因。
表3是一些铸件模型在网格平滑化处理前后的网格数量对比,可以发现网格的整体质量经过平滑化处理后有了提升,但是网格数量并没有大幅度地增长。
表1
表2
表3
如图11所示,图11为本发明实施例基于八叉树的自适应网格划分系统结构示意图,所述划分系统包括:
获取模块201,用于获取待计算的文件模型;
缺陷消除模块202,用于将所述待计算的文件模型采用居涛Ju Tao的多边形鲁棒修复法消除文件缺陷,得到全封闭的文件模型;
建模模块203,用于将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型;
平滑处理模块204,用于对原始的八叉树网络模型进行平滑处理,得到均匀的八叉树网格模型;
非均匀网格确定模块205,用于遍历均匀的八叉树网络模型中的叶子节点,得到最终的非均匀网格模型。
其中,所述建模模块203具体包括:
根节点确定单元,用于将全封闭的文件模型抽象为根节点;
分裂单元,用于基于根节点向下分裂生成8个子节点;
第一判断单元,用于判断分裂生长是否达到边界条件;
循环单元,用于当未达到边界条件,继续分裂直到达到边界条件;
原始的八叉树网络模型确定单元,用于当达到边界条件时停止分裂,将文件模型中的三角面片信息存储到对应的子节点中,得到原始的八叉树网络模型。
所述平滑处理模块204具体包括:
标记单元,用于对所述原始的八叉树网络模型中的所有节点进行唯一标记;所述唯一标记表示子节点之间的拓扑关系;
映射单元,用于将子节点映射为网格;
第二判断单元,基于所述标记,判断两邻网格是否处于同一父网格;
上溯单元,用于当两相邻网格不处于同一父网格中,则进行上溯处理,直到满足相邻网格处于同一父网格中;
下溯单元,用于继续下溯处理,依次出栈所求的邻接网格编号;
均匀的八叉树网格模型确定单元,用于当对应的网格编号的网格节点还未生成,此时节点需向下分裂生长,不断进行下溯出栈过程,直到栈空,得到均匀的八叉树网格模型。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种基于八叉树的自适应网格划分方法,其特征在于,所述划分方法包括:
获取待计算的文件模型;
将所述待计算的文件模型采用多边形鲁棒修复法消除文件缺陷,得到全封闭的文件模型;
将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型;
对原始的八叉树网络模型进行平滑处理,得到均匀的八叉树网格模型;
遍历均匀的八叉树网络模型中的叶子节点,得到最终的非均匀网格模型;
所述将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型具体包括:
将全封闭的文件模型抽象为根节点;
基于根节点向下分裂生成8个子节点;
判断分裂生长是否达到边界条件;
若未达到边界条件,则继续分裂直到达到边界条件;
若达到边界条件则停止分裂,将文件模型中的三角面片信息存储到对应的子节点中,得到原始的八叉树网络模型;
其中,根节点的建立主要包括:
在八叉树建模中将待计算的文件模型抽象为根节点,根节点在网格模型中对应着一个立方体包围盒,该包围盒能够完全容纳所要处理的铸件模型。
2.根据权利要求1所述的基于八叉树的自适应网格划分方法,其特征在于,所述边界条件为所述三角面片的个数为10以及两矢量的夹角的余弦值为0.85~0.95。
3.根据权利要求1所述的基于八叉树的自适应网格划分方法,其特征在于,所述将文件模型中的三角面片信息存储到对应的子节点中具体是采用投影相交判定法将三角面片信息存储到对应的子节点中。
4.根据权利要求1所述的基于八叉树的自适应网格划分方法,其特征在于,所述对原始的八叉树网络模型进行平滑处理具体包括:
对所述原始的八叉树网络模型中的所有节点进行唯一标记;所述唯一标记表示子节点之间的拓扑关系;
将子节点映射为网格;
基于所述标记,判断两邻网格是否处于同一父网格;
若两相邻网格不处于同一父网格中,则进行上溯处理,直到满足相邻网格处于同一父网格中;
继续下溯处理,依次出栈所求的邻接网格编号;
若对应的网格编号的网格节点还未生成,此时节点需向下分裂生长,不断进行下溯出栈过程,直到栈空,得到均匀的八叉树网格模型。
5.一种基于八叉树的自适应网格划分系统,其特征在于,所述划分系统包括:
获取模块,用于获取待计算的文件模型;
缺陷消除模块,用于将所述待计算的文件模型采用多边形鲁棒修复法消除文件缺陷,得到全封闭的文件模型;
建模模块,用于将所述全封闭的文件模型进行八叉树建模,得到原始的八叉树网络模型;
平滑处理模块,用于对原始的八叉树网络模型进行平滑处理,得到均匀的八叉树网格模型;
非均匀网格确定模块,用于遍历均匀的八叉树网络模型中的叶子节点,得到最终的非均匀网格模型;
所述建模模块具体包括:
根节点确定单元,用于将全封闭的文件模型抽象为根节点;
分裂单元,用于基于根节点向下分裂生成8个子节点;
第一判断单元,用于判断分裂生长是否达到边界条件;
循环单元,用于当未达到边界条件,继续分裂直到达到边界条件;
原始的八叉树网络模型确定单元,用于当达到边界条件时停止分裂,将文件模型中的三角面片信息存储到对应的子节点中,得到原始的八叉树网络模型;
其中,根节点的建立主要包括:
在八叉树建模中将待计算的文件模型抽象为根节点,根节点在网格模型中对应着一个立方体包围盒,该包围盒能够完全容纳所要处理的铸件模型。
6.根据权利要求5所述的基于八叉树的自适应网格划分系统,其特征在于,所述边界条件为所述三角面片的个数为10以及两矢量的夹角的余弦值为0.85~0.95。
7.根据权利要求5所述的基于八叉树的自适应网格划分系统,其特征在于,所述将文件模型中的三角面片信息存储到对应的子节点中具体是采用投影相交判定法将三角面片信息存储到对应的子节点中。
8.根据权利要求5所述的基于八叉树的自适应网格划分系统,其特征在于,所述平滑处理模块具体包括:
标记单元,用于对所述原始的八叉树网络模型中的所有节点进行唯一标记;所述唯一标记表示子节点之间的拓扑关系;
映射单元,用于将子节点映射为网格;
第二判断单元,基于所述标记,判断两邻网格是否处于同一父网格;
上溯单元,用于当两相邻网格不处于同一父网格中,则进行上溯处理,直到满足相邻网格处于同一父网格中;
下溯单元,用于继续下溯处理,依次出栈所求的邻接网格编号;
均匀的八叉树网格模型确定单元,用于当对应的网格编号的网格节点还未生成,此时节点需向下分裂生长,不断进行下溯出栈过程,直到栈空,得到均匀的八叉树网格模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910514427.6A CN110222447B (zh) | 2019-06-14 | 2019-06-14 | 一种基于八叉树的自适应网格划分方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910514427.6A CN110222447B (zh) | 2019-06-14 | 2019-06-14 | 一种基于八叉树的自适应网格划分方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222447A CN110222447A (zh) | 2019-09-10 |
CN110222447B true CN110222447B (zh) | 2023-04-07 |
Family
ID=67817004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910514427.6A Active CN110222447B (zh) | 2019-06-14 | 2019-06-14 | 一种基于八叉树的自适应网格划分方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110222447B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110796729B (zh) * | 2019-10-29 | 2023-11-14 | 苏州健雄职业技术学院 | 一种基于二叉树的网格划分方法 |
CN111026028B (zh) * | 2019-12-11 | 2022-12-06 | 上海维宏电子科技股份有限公司 | 针对加工工件实现二维平面化网格划分处理的方法 |
CN114219899B (zh) * | 2022-02-21 | 2022-05-10 | 墨研计算科学(南京)有限公司 | 一种基于改进叉树算法的网格生成方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022865A (zh) * | 2015-06-30 | 2015-11-04 | 西安交通大学 | 一种基于stl模型布尔运算的飞机油箱内表面模型提取方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7002571B2 (en) * | 2002-06-04 | 2006-02-21 | Intel Corporation | Grid-based loose octree for spatial partitioning |
-
2019
- 2019-06-14 CN CN201910514427.6A patent/CN110222447B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022865A (zh) * | 2015-06-30 | 2015-11-04 | 西安交通大学 | 一种基于stl模型布尔运算的飞机油箱内表面模型提取方法 |
Non-Patent Citations (1)
Title |
---|
虚拟现实场景中基于八叉树的网格简化方法;余文勇等;《计算机工程与应用》(第14期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110222447A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110222447B (zh) | 一种基于八叉树的自适应网格划分方法及系统 | |
CN113178014B (zh) | 场景模型渲染方法、装置、电子设备和存储介质 | |
CN107358636B (zh) | 一种基于纹理合成的疏松缺陷图像生成方法 | |
CN107680168B (zh) | 三维重建中基于平面拟合的网格简化方法 | |
Wang et al. | A new point cloud simplification method with feature and integrity preservation by partition strategy | |
CN111444573B (zh) | 船舶对称分段模型生成方法及装置、存储介质和终端 | |
CN113094463A (zh) | 一种非结构化点云存储方法、装置、设备及介质 | |
CN116539619B (zh) | 产品缺陷检测方法、系统、装置及存储介质 | |
CN110060342A (zh) | 一种三维曲面拟合方法 | |
CN117932974B (zh) | 一种水库水下数字高程模型的构建方法 | |
CN113888531A (zh) | 混凝土表面缺陷检测方法、装置、电子设备及存储介质 | |
CN115546440A (zh) | 一种曲面重建方法、装置、设备及存储介质 | |
CN114429535A (zh) | 一种三角网格曲面的光滑裁剪方法及装置 | |
CN115047825A (zh) | 一种数控加工铣削实时显示的方法 | |
CN114202642A (zh) | 三维三角网模型中超大空洞的填补方法及设备 | |
CN113792458A (zh) | 一种有限元三角形网格的优化方法及装置 | |
CN115330971B (zh) | 一种面向渲染性能优化的几何模型轻量化方法 | |
CN112967333B (zh) | 基于等级划分的复杂点云骨架提取方法及系统 | |
CN112487554B (zh) | 基于模型的端切定义新方法、系统及计算机设备 | |
CN113469907B (zh) | 一种基于叶片型面特征的数据简化方法及系统 | |
CN113223167B (zh) | 一种三维天气沙盘搭建方法及系统 | |
CN115239884A (zh) | 一种中组立三维模型的重构方法及装置 | |
CN112800829B (zh) | 一种基于三维测量的物体局部破损程度的识别方法 | |
CN111524236A (zh) | 一种基于平面分析的自适应三角网简化方法 | |
CN117708065B (zh) | 海量点云智能管理方法及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |