CN107633555B - 基于空间扫描的曲面集相互切割方法及*** - Google Patents
基于空间扫描的曲面集相互切割方法及*** Download PDFInfo
- Publication number
- CN107633555B CN107633555B CN201710835245.XA CN201710835245A CN107633555B CN 107633555 B CN107633555 B CN 107633555B CN 201710835245 A CN201710835245 A CN 201710835245A CN 107633555 B CN107633555 B CN 107633555B
- Authority
- CN
- China
- Prior art keywords
- triangle
- vertex
- scanning
- curved surface
- result
- 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.)
- Expired - Fee Related
Links
Landscapes
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于空间扫描的曲面集相互切割实现方法及***,该方法及***提供给用户一种高效处理大量曲面相互切割的技术,能够在单次的扫描过程中完成三角形相交检测、内存调度、重新三角化、结果曲面片产生等多个环节,它可以克服两两切割计算中的多曲面共点、共线、共面及自相交等不一致问题;通过流式加载、维护与扫描平面相交的三角形、尽早产出存储完成的曲面片并释放其占用的内存等多种方法来降低计算所涉及的数据量,降低计算规模;切割过程中每一步的计算不再依赖前一步所有数据处理完毕,每步能够并行完成,特别适合高性能计算环境。
Description
技术领域
本发明涉及三维曲面切割技术,具体地说,是一种基于空间扫描的曲面集相互切割实现方法及***。
背景技术
随着测绘技术和三维建模技术的发展,人们逐渐有条件建构各类复杂而精细的三维地物模型。这些三维地物模型的构建往往涉及大量三维曲面相互间做切割,进而剔除多余部分、捏合不同表面为一个整体。一般完成三维曲面相互切割的思路是:每个曲面构建单独的索引,然后两两一对进行相交计算,计算过程中通过索引加速三角形碰撞检测,从某个检测出的相交位置追踪交线来完成切割计算。但是上述方法也存在以下几方面的问题:
(1)两两一对进行切割计算,在多个曲面通过且相交于空间同一点的情况下容易产生不一致性;
(2)如果某个三角面片与多个曲面相交,那么这个三角面片通过多轮两两切割会发生多次重新三角化,且三角化过程受切割次序影响,可能产生非全局最优解;
(3)只对来自不同曲面的三角形面片进行相交判断,难以发现同一个曲面中存在的自相交现象;
(4)N个三维曲面需要进行N*(N-1)/2次两两切割计算,计算规模可能变得非常庞大;
(5)结果面片的产生需要在两两相交过程的最后完成,此时才能保证所有相交的三角形都已处理完毕,当单个曲面的数据量很大时,会消耗大量内存;
(6)虽然大量曲面间的两两切割计算可以作为基本的运算单元支持并行化计算,但曲面数据结构需要支持并行操作,当同一曲面在并行切割处理时需要协调切割过程中的一致性关系,但是每个并行单元都是对应完整的切割过程,一致性维护相当困难。
发明内容
本发明要解决的技术问题在于,针对上述(1)至(6)的技术缺陷,提供了一种基于空间扫描的曲面集相互切割实现方法及***,尤其是一种适用于大量散乱放置的三维曲面相互切割实现方法及***。
根据本发明的其中一方面,本发明为解决其技术问题,提供了一种基于空间扫描的曲面集相互切割方法,包含如下步骤:
对参与切割的曲面集按顺序动态加载内存;
建立二维动态空间索引来维护当前与扫描平面相交的三角形信息;
建立优先级队列管理曲面边界中的沿扫描前进方向的上V型顶点;
处理因扫描上V型顶点而引发的空间索引结构的更新与调整;
处理因扫描三角形的中间顶点而引发的空间索引结构的更新与调整;
处理因扫描三角形的结束顶点而引发的空间索引结构的更新与调整;
处理扫描完成三角形的重新三角化;
处理结果曲面片的产生、生长、分支、合并与结束;
其中,所谓上V型顶点是指曲面的边界上满足下述条件的边界顶点:边界顶点的两个邻接顶点的空间排序都大于该边界顶点的空间排序,并且连接边界顶点的任意一个三角形中的任意一个点的空间排序都比该边界顶点的空间排序大;所述空间排序通过优先级队列中的顺序体现,优先级队列中的顺序是按照扫描前进方向所在维度至其它任意维度的顺序进行设计的,且为针对点的空间坐标字典序排序。
在本发明的曲面集相互切割方法中,对曲面集按顺序动态加载内存通过以下方式进行:
对参与计算的曲面分别计算在各个维度上占据的空间,并按照延展最大的维度进行排序,只有当空间扫描平面与某个曲面开始相交时才调度该曲面到内存,上述排序顺序正好是扫描空间平面与各曲面的相交顺序,因此可以在在扫描过程中按照所述排序顺次加载各曲面。
在本发明的曲面集相互切割方法中,用于维护当前与扫描平面相交的三角形信息的二维动态空间索引结构为R树空间索引、R+树空间索引、R*树空间索引及四叉树空间索引中任意一种。
在本发明的曲面集相互切割方法中,在二维动态空间索引中维护的三角形信息包括:该三角形的来源曲面、未与扫描平面相交的边对应的邻接三角形、同在空间索引中的邻接三角形、已完全通过扫描平面的边对应的邻接三角形集合、三角形内已检测出的交线集合。
在本发明的曲面集相互切割方法中,只有当扫描平面首次与曲面相接触时,计算该曲面边界中的沿扫描前进方向的上V型顶点。
在本发明的曲面集相互切割方法中,处理因扫描上V型顶点而引发的空间索引结构的更新与调整,具体包括:
根据该上V型顶点关联的曲面及拓扑情况,获得包含该上V型顶点的所有三角形,对每个三角形设置来源曲面,第一类邻接三角形设置为未与扫描平面相交的边相对的三角形,第二类邻接三角形设置为同在空间索引中并与该三角形共享边界的三角形,第三类邻接三角形设置为与已完全通过扫描平面的边相对的三角形,三角形内已检测出的交线集合设置为每个三角形与空间索引中的三角形计算交线所得结果;
三角形计算交线过程中通过空间索引本身过滤无关三角形;
三角形计算交线过程具体包括:通过把三角形转化为参数方程,分析同时满足两个三角形参数方程的解及其边界获得相交于1点、相交于1条线段、相交于一个三角形面片、相交于一个四边形面片、相交于一个五边形面片、相交于一个六边形面片……的情况;
多个曲面重叠的公共曲面片单独作为一个结果曲面片;
上述交线的计算同时也会更新已在空间索引结构中的三角形信息,只要这些三角形与新的待加入三角形相交。
在本发明的曲面集相互切割方法中,处理因扫描某个三角形的中间顶点而引发的空间索引结构的更新与调整,可以细化为:
包含所述某个三角形的中间顶点的未处理三角形与上V型顶点的处理方法进行处理相同,加入这些未处理三角形到空间索引结构中;
三角形信息更新过程中的三角形间邻接关系的构建还需要考虑包含该顶点的已处理三角形:更新以所述某个三角形的中间顶点作为端点的已经完成扫描的边所在的三角形信息,把与其邻接的三角形加入已完成扫描边对应邻接三角形集合中。
在本发明的曲面集相互切割方法中,所述处理因扫描某个三角形的结束顶点而引发的空间索引结构的更新与调整,可以细化为:
把完成扫描的三角形移除出空间索引结构;
与这些移除的三角形相邻接且在空间索引中的三角形更新其已完成扫描边对应的邻接三角形信息;
在本发明的曲面集相互切割方法中,处理扫描完成三角形的重新三角化通过以下方式进行:
该三角形信息中记载的交线、以及三角形边界作为约束进行约束三角化;
对上述完成扫描的原三角形,如果其某个邻接三角形仍然在空间索引中,则三角化构建出的新三角形更新到这些邻接三角形已完成扫描边对应邻接三角形集合中。
在本发明的曲面集相互切割方法中,处理结果曲面片的产生、生长、分支、合并与结束,可以细化为:
结果曲面片产生:如果新产生的三角形没有和已完成扫描的三角形及重三角化后的三角形有拓扑邻接,那么标志着一个新的曲面片的产生;
结果曲面片生长:对上述完成扫描的原三角形,如果其邻接三角形也已完成扫描,那么从与该邻接三角形公共顶点开始,所有相连且已完成扫描的顶点加入结果曲面片的顶点集合,所有由上述顶点构成的三角形加入结果曲面片三角形集合;
结果曲面片分支:如果结果曲面片在生长边界断开为沿扫描平面的多个不连通部分,则需要处理分支,把分化出的多个不连通部分通过链表串联在一起;每个不连通部分可以称为一个生长点;
结果曲面片合并:每个正在生长中的结果曲面片独自维护其顶点集合和三角形集合,如遇到因某个三角形扫描完成而使两个或三个结果曲面片形成连通的一个整体,则需要合并两个或三个结果曲面片的顶点集合和三角形集合,更新三角形集合中的顶点索引;
结果曲面片结束:如果某个完成扫描的三角形其邻接三角形也都完成扫描,且其没有其它分化的生长点,则该结果面片结束处理,产生一个完整的结果曲面片,也是算法最终的产出;为提高内存利用率,新产生出的结果曲面片可以直接保存到外存或数据库中,同时释放该曲面片占据的内存。
根据本发明的另一方面,本发明为解决其技术问题,还提供了一种基于空间扫描的曲面集相互切割***,包含:
内存动态加载单元,用于对参与切割的曲面集按顺序动态加载内存;
空间索引建立单元,用于建立二维动态空间索引来维护当前与扫描平面相交的三角形信息;
优先级队列建立单元,用于建立优先级队列管理曲面边界中的沿扫描前进方向的上V型顶点;
上V型顶点处理单元,用于处理因扫描上V型顶点而引发的空间索引结构的更新与调整;
中间顶点处理单元,用于处理因扫描三角形的中间顶点而引发的空间索引结构的更新与调整;
结束顶点处理单元,用于处理因扫描三角形的结束顶点而引发的空间索引结构的更新与调整;
重新三角化处理单元,用于处理扫描完成三角形的重新三角化;
曲面片处理单元,用于处理结果曲面片的产生、生长、分支、合并与结束;
其中,所谓上V型顶点是指曲面的边界上满足下述条件的边界顶点:边界顶点的两个邻接顶点的空间排序都大于该边界顶点的空间排序,并且连接边界顶点的任意一个三角形中的任意一个点的空间排序都比该边界顶点的空间排序大;所述空间排序通过优先级队列中的顺序体现,优先级队列中的顺序是按照扫描前进方向所在维度至其它任意维度的顺序进行设计的,且为针对点的空间坐标字典序排序。
实施本发明的基于空间扫描的曲面集相互切割实现方法及***,具有以下有益效果:本发明提供给用户一种高效处理大量曲面相互切割的技术,能够在单次的扫描过程中完成三角形相交检测、内存调度、重新三角化、结果曲面片产生等多个环节,它可以克服两两切割计算中的多曲面共点、共线、共面及自相交等不一致问题;通过流式加载、维护与扫描平面相交的三角形、尽早产出存储完成的曲面片并释放其占用的内存(边扫描边存储边释放)等多种方法来降低计算所涉及的数据量,降低计算规模;切割过程中每一步的计算不再依赖前一步所有数据处理完毕,每步能够并行完成,特别适合高性能计算环境。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1本发明的基于空间扫描方法的曲面集相互切割***的原理框图;
图2是本发明中曲面的示意图;
图3是本发明的基于空间扫描方法的曲面集流相互切割方法的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
如图1所示,本发明的基于空间扫描方法的曲面集相互切割***包括曲面加载器101、上V型顶点优先级队列102、空间索引103、曲面片生长链表104和结果产生器105,其中:
曲面加载器101,用于接收来自其它曲面建模模块或者读取外存储器中已经存在的曲面数据集合,假设已y轴方向为空间扫描方向,也是空间排序时的主序,x轴为空间排序时的第1副序,z轴为空间排序时的第2副序。空间排序对空间点按照主序-第1副序-第2副序进行线性排序,主序维度的坐标不同则按主序排序,只有主序坐标完全一样时才按第1副序排序;如果第1副序上的坐标也相同,则按第2副序排序;如果第2副序也相同那么是相同的坐标点。
为在空间排序中避免浮点数的相等判断,需要规定数据处理精度ε,也就是空间扫描时的最小步长,空间按照该扫描步长划分成小立方体组成的立体格网,落到同一个小立方体中的三维点认为具有相同的坐标值,垂直于主序的格网面中的所有小立方体中的三维点具有相同的主序坐标。
上述曲面加载器101对加载的曲面数据集中每个曲面顶点集中按空间排序的极小点进行空间排序,得到曲面调度顺序表L;如果输入是曲面建模模块的结果数据,或者不支持从外存储器随机读取曲面,则曲面数据集本身缓存到外存储器中;曲面加载器101按照各个曲面与空间扫描平面的相交顺序进行调度,该顺序与曲面调度顺序表L中的曲面顺序一致,因此通过判断曲面调度顺序表L中首位曲面与扫描平面的位置关系即可确定是否需要加载下一个曲面。
曲面加载器101需要对每个刚加载的曲面计算边界,并输出其中的上V型顶点列表,主要曲面的边界包括内边界和外边界。设函数Ord(V)获得顶点V的空间排序,则上V型顶点满足:
Ord(V)<Ord(Vprev)且Ord(V)<Ord(Vnext)且Ord(V)<Ord(Pany)
Vprev为V在曲面边界上的前一点,Vnext为后一点,曲面边界上连续且排序数相同的顶点应该合并为1个;Pany为以V为顶点的三角形中任意一点。
关于上V顶点的含义,请参考图2,图中曲面由三角形组成,任意两个相邻三角形有一条公共边;任意一个顶点属于1到多个三角形。上V型顶点如图中的最左边的顶点6所示,当扫描面S扫描到该顶点6的位置,该顶点关联的所有三角形都在S的右方,其它顶点没有这个性质,具有这样性质的边界顶点即为上V顶点。
上V型顶点优先级队列102,用于接收曲面加载器101输出的上V型顶点,这些上V型顶点仍然按照曲面加载器101中定义的空间排序顺序进行从小到大排序,队列头是空间排序最小的上V型顶点,队列尾是空间排序最大的上V型顶点,可以选用标准的优先级队列并重新定义排序函数;上V型顶点优先级队列102中元素顺序反映了空间扫描的顺序,扫描过程加载的新曲面中的上V型顶点会动态添加到该队列中的合适位置。
空间索引103,用于接收上V型顶点优先级队列102的队头元素(上V型顶点)所关联的三角形,并维护和辅助查找与当前扫描平面相交的所有三角形。空间索引103中每个索引条目包括:三角形来源曲面M、三角形在扫描平面投影的最小外包矩形R、与三角形中未到达扫描平面的边邻接的三角形JComing、与扫描平面相交的边邻接的三角形JOne和JTwo、与已通过扫描平面的边邻接的三角形集合JPass、三角形内已检测出的交线集合SInter。
本具体实施方案中在网格索引的基础上实现空间索引103,其网格大小采用平均三角形方向包围盒最长边的2倍;每个网格维护一个与该网格相交的三角形列表,同一个索引条目信息在跨越的多个网格中共享。
交线集合Sinter的构建分为两个部分:一部分是该三角形加入空间索引103时,通过查询与其相交的其它三角形并计算交线获得;另一部分是后续的三角形加入空间索引103时,因与该三角形相交而更新进来的交线。前一部分的获得的交线也会更新到各相交三角形的交线集合Sinter中。
曲面片生长链表104,其每个节点代表一个曲面片生长点,用于接收空间索引103中刚完成扫描的三角形,并通过该三角形的JPass集合完成与该链表相关元素的链接,表现为新构造出的曲面片的生长;通过该三角形中JOne和JTwo信息可以追溯到与其另外两个边邻接的三角形,并更新其JPass以及JOne和JTwo其中之一;如果上述邻接三角形也完成了扫描可以合并到一起再添加到曲面片生长链表104中。
如果新添加到曲面片生长链表104中的三角形的JOne和JTwo所关联的三角形如果仍在空间索引103中,那么曲面片生长链表104要增加两个节点,其中一个替换JPass节点,分别描述两个边所对应的生长点,表现为链表104的分支;如果JOne和JTwo不关联任何三角形,那么需要从链表104中摘除原来描述JPass的节点,表现为链表合并;如果某个曲面片生长链表104节点为空,代表该曲面片处理结束,通过最后一个删除的节点追溯其所有组成三角形,作为曲面片生长链表104的输出。
结果产生器105,接收曲面片生长链表104输出的三角形集合,形成适合存储的(顶点集,三角形集)数据组织模型,其中三角形集中的每个三角形通过其顶点在顶点集中的索引号描述;结果产生器105还负责回调产出函数,做进一步的处理或数据保存。
本发明的基于空间扫描的曲面集相互切割实现***中的各个组成部件前后串联在一起,前一个部件的输出是后一个部件的输入,且每个部件可以在接收新的输入的同时产生输出,而无需等到所有的数据输入完毕,因此每个部件可以并行工作。
如图3所示,本发明的基于空间扫描方法的曲面集流相互切割方法包括以下步骤:
步骤201:计算各曲面顶点集中空间排序极小点;该步骤由曲面加载器101完成。
步骤202:对上一步极小点集合进行空间排序;该步骤由曲面加载器101完成。
步骤203:扫描平面前移,移动到曲面调度顺序表L首元素和上V型顶点优先级队列102队头元素中的空间排序较小点确定的平面;该步骤由主控程序完成。
步骤204:判断扫描平面是否扫过曲面调度顺序表L首元素;
步骤205:加载L首元素对应的曲面,计算其所有的上V型顶点,***到优先级队列102中;该步骤由曲面加载器101完成。
步骤206:判断优先级队列102队头元素是否是上V型顶点;
步骤207:处理优先级队列102队头元素对应的上V型顶点,把包含该顶点的所有三角形加入到空间索引103中;该步骤由主控函数完成。
步骤208:判断优先级队列102队头元素是否同时也是某些三角形的中间顶点;
步骤209:处理以优先级队列102队头元素对应顶点为中间顶点的三角形,刚完成扫描的一边建立共享该边三角形间的邻接拓扑关系;
步骤210:判断优先级队列102队头元素是否同时也是某些三角形的结束顶点;如果否,那么一定还有未处理完的三角形,必然要继续扫描;
步骤211:处理以优先级队列102队头元素对应顶点为结束顶点的三角形,刚完成扫描的两条边建立共享该边三角形间的邻接拓扑关系;
步骤212:对完全通过扫描平面的三角形重新三角化,此时该三角形中已包含与该三角形相交的其它三角形之间的交线;这些交线及原来的边作为约束进行约束三角化;
步骤213:维护重新三角化之后的三角形间的拓扑邻接关系,这些关系的建立在扫描方向上表现为面片的产生(扫描反方向没有关联三角形的顶点)、生长(全围绕的顶点)、分支(扫描方向有破缺的顶点)、合并(扫描反方向有破缺的顶点)、结束(扫描方向没有关联三角形的顶点);该步骤由曲面片生长链表104完成。
步骤214:处理所有新加入到空间索引101中的三角形与其它已经在101中的三角形间的相交关系;新产生的三角形包括上V型顶点引入的部分、中间顶点和结束顶点通过拓扑关系引入的部分;该步骤由主控函数利用空间索引103完成。
步骤215:产生结果曲面,曲面片生长链表104中完全闭合的曲面片转为为完整的曲面表示形式;该步骤由结果产生器105完成。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (5)
1.一种基于空间扫描的曲面集相互切割方法,其特征在于,包含如下步骤:
对参与切割的曲面集按顺序动态加载内存;
建立二维动态空间索引来维护当前与扫描平面相交的三角形信息;
建立优先级队列管理曲面边界中的沿扫描前进方向的上V型顶点;
处理因扫描上V型顶点而引发的空间索引结构的更新与调整;
处理因扫描三角形的中间顶点而引发的空间索引结构的更新与调整;
处理因扫描三角形的结束顶点而引发的空间索引结构的更新与调整;
处理扫描完成三角形的重新三角化;
处理结果曲面片的产生、生长、分支、合并与结束;
其中,所谓上V型顶点是指曲面的边界上满足下述条件的边界顶点:边界顶点的两个邻接顶点的空间排序都大于该边界顶点的空间排序,并且连接边界顶点的任意一个三角形中的任意一个点的空间排序都比该边界顶点的空间排序大;所述空间排序通过优先级队列中的顺序体现,优先级队列中的顺序是按照扫描前进方向所在维度至其它任意维度的顺序进行设计的,且为针对点的空间坐标字典序排序;
在二维动态空间索引中维护的三角形信息包括:该三角形的来源曲面、未与扫描平面相交的边对应的邻接三角形、同在空间索引中的邻接三角形、已完全通过扫描平面的边对应的邻接三角形集合、三角形内已检测出的交线集合;
处理因扫描上V型顶点而引发的空间索引结构的更新与调整,具体包括:
根据该上V型顶点关联的曲面及拓扑情况,获得包含该上V型顶点的所有三角形,对每个三角形设置来源曲面,第一类邻接三角形设置为未与扫描平面相交的边相对的三角形,第二类邻接三角形设置为同在空间索引中并与三角形共享边界的三角形,第三类邻接三角形设置为与已完全通过扫描平面的边相对的三角形,三角形内已检测出的交线集合设置为每个三角形与空间索引中的三角形计算交线所得结果;
三角形计算交线过程中通过空间索引本身过滤无关三角形;
三角形计算交线过程具体包括:通过把三角形转化为参数方程,分析同时满足两个三角形参数方程的解及其边界获得相交于1点、相交于1条线段、相交于一个三角形面片、相交于一个四边形面片、相交于一个五边形面片、相交于一个六边形面片的情况;
多个曲面重叠的公共曲面片单独作为一个结果曲面片;
上述交线的计算同时也会更新已在空间索引结构中的三角形信息,只要这些三角形与新的待加入三角形相交;
处理因扫描某个三角形的中间顶点而引发的空间索引结构的更新与调整,具体包括:
包含所述某个三角形的中间顶点的未处理三角形与上V型顶点的处理方法进行处理相同,加入这些未处理三角形到空间索引结构中;
三角形信息更新过程中的三角形间邻接关系的构建还需要考虑包含顶点的已处理三角形:更新以所述某个三角形的中间顶点作为端点的已经完成扫描的边所在的三角形信息,把与其邻接的三角形加入已完成扫描边对应邻接三角形集合中;
处理因扫描某个三角形的结束顶点而引发的空间索引结构的更新与调整,具体包括:
把完成扫描的三角形移除出空间索引结构;
与这些移除的三角形相邻接且在空间索引中的三角形更新其已完成扫描边对应的邻接三角形信息;
处理结果曲面片的产生、生长、分支、合并与结束,具体包括:
结果曲面片产生:如果新产生的三角形没有和已完成扫描的三角形及重三角化后的三角形有拓扑邻接,那么标志着一个新的曲面片的产生;
结果曲面片生长:对上述完成扫描的原三角形,如果其邻接三角形也已完成扫描,那么从与该邻接三角形公共顶点开始,所有相连且已完成扫描的顶点加入结果曲面片的顶点集合,所有由上述顶点构成的三角形加入结果曲面片三角形集合;
结果曲面片分支:如果结果曲面片在生长边界断开为沿扫描平面的多个不连通部分,则需要处理分支,把分化出的多个不连通部分通过链表串联在一起;每个不连通部分可以称为一个生长点;
结果曲面片合并:每个正在生长中的结果曲面片独自维护其顶点集合和三角形集合,如遇到因某个三角形扫描完成而使两个或三个结果曲面片形成连通的一个整体,则需要合并两个或三个结果曲面片的顶点集合和三角形集合,更新三角形集合中的顶点索引;
结果曲面片结束:如果某个完成扫描的三角形其邻接三角形也都完成扫描,且其没有其它分化的生长点,则结果面片结束处理,产生一个完整的结果曲面片,新产生出的结果曲面片可以直接保存到外存或数据库中,同时释放该结果曲面片占据的内存。
2.根据权利要求1所述的曲面集相互切割方法,其特征在于,对曲面集按顺序动态加载内存通过以下方式进行:
对参与计算的曲面分别计算在各个维度上占据的空间,并按照延展最大的维度进行排序,只有当空间扫描平面与某个曲面开始相交时才调度该曲面到内存,且在扫描过程中按照所述排序顺次加载各曲面。
3.根据权利要求1所述的曲面集相互切割方法,其特征在于,用于维护当前与扫描平面相交的三角形信息的二维动态空间索引结构为R树空间索引、R+树空间索引、R*树空间索引及四叉树空间索引中任意一种。
4.根据权利要求1所述的曲面集相互切割方法,其特征在于,所述处理扫描完成三角形的重新三角化通过以下方式进行:
该三角形信息中记载的交线、以及三角形边界作为约束进行约束三角化;
对上述完成扫描的原三角形,如果其某个邻接三角形仍然在空间索引中,则三角化构建出的新三角形更新到这些邻接三角形已完成扫描边对应邻接三角形集合中。
5.一种基于空间扫描的曲面集相互切割***,其特征在于,包含:
内存动态加载单元,用于对参与切割的曲面集按顺序动态加载内存;
空间索引建立单元,用于建立二维动态空间索引来维护当前与扫描平面相交的三角形信息;
优先级队列建立单元,用于建立优先级队列管理曲面边界中的沿扫描前进方向的上V型顶点;
上V型顶点处理单元,用于处理因扫描上V型顶点而引发的空间索引结构的更新与调整;
中间顶点处理单元,用于处理因扫描三角形的中间顶点而引发的空间索引结构的更新与调整;
结束顶点处理单元,用于处理因扫描三角形的结束顶点而引发的空间索引结构的更新与调整;
重新三角化处理单元,用于处理扫描完成三角形的重新三角化;
曲面片处理单元,用于处理结果曲面片的产生、生长、分支、合并与结束;
其中,所谓上V型顶点是指曲面的边界上满足下述条件的边界顶点:边界顶点的两个邻接顶点的空间排序都大于该边界顶点的空间排序,并且连接边界顶点的任意一个三角形中的任意一个点的空间排序都比该边界顶点的空间排序大;所述空间排序通过优先级队列中的顺序体现,优先级队列中的顺序是按照扫描前进方向所在维度至其它任意维度的顺序进行设计的,且为针对点的空间坐标字典序排序;
在二维动态空间索引中维护的三角形信息包括:该三角形的来源曲面、未与扫描平面相交的边对应的邻接三角形、同在空间索引中的邻接三角形、已完全通过扫描平面的边对应的邻接三角形集合、三角形内已检测出的交线集合;
处理因扫描上V型顶点而引发的空间索引结构的更新与调整,具体包括:
根据该上V型顶点关联的曲面及拓扑情况,获得包含该上V型顶点的所有三角形,对每个三角形设置来源曲面,第一类邻接三角形设置为未与扫描平面相交的边相对的三角形,第二类邻接三角形设置为同在空间索引中并与三角形共享边界的三角形,第三类邻接三角形设置为与已完全通过扫描平面的边相对的三角形,三角形内已检测出的交线集合设置为每个三角形与空间索引中的三角形计算交线所得结果;
三角形计算交线过程中通过空间索引本身过滤无关三角形;
三角形计算交线过程具体包括:通过把三角形转化为参数方程,分析同时满足两个三角形参数方程的解及其边界获得相交于1点、相交于1条线段、相交于一个三角形面片、相交于一个四边形面片、相交于一个五边形面片、相交于一个六边形面片的情况;
多个曲面重叠的公共曲面片单独作为一个结果曲面片;
上述交线的计算同时也会更新已在空间索引结构中的三角形信息,只要这些三角形与新的待加入三角形相交;
处理因扫描某个三角形的中间顶点而引发的空间索引结构的更新与调整,具体包括:
包含所述某个三角形的中间顶点的未处理三角形与上V型顶点的处理方法进行处理相同,加入这些未处理三角形到空间索引结构中;
三角形信息更新过程中的三角形间邻接关系的构建还需要考虑包含顶点的已处理三角形:更新以所述某个三角形的中间顶点作为端点的已经完成扫描的边所在的三角形信息,把与其邻接的三角形加入已完成扫描边对应邻接三角形集合中;
处理因扫描某个三角形的结束顶点而引发的空间索引结构的更新与调整,具体包括:
把完成扫描的三角形移除出空间索引结构;
与这些移除的三角形相邻接且在空间索引中的三角形更新其已完成扫描边对应的邻接三角形信息;
处理结果曲面片的产生、生长、分支、合并与结束,具体包括:
结果曲面片产生:如果新产生的三角形没有和已完成扫描的三角形及重三角化后的三角形有拓扑邻接,那么标志着一个新的曲面片的产生;
结果曲面片生长:对上述完成扫描的原三角形,如果其邻接三角形也已完成扫描,那么从与该邻接三角形公共顶点开始,所有相连且已完成扫描的顶点加入结果曲面片的顶点集合,所有由上述顶点构成的三角形加入结果曲面片三角形集合;
结果曲面片分支:如果结果曲面片在生长边界断开为沿扫描平面的多个不连通部分,则需要处理分支,把分化出的多个不连通部分通过链表串联在一起;每个不连通部分可以称为一个生长点;
结果曲面片合并:每个正在生长中的结果曲面片独自维护其顶点集合和三角形集合,如遇到因某个三角形扫描完成而使两个或三个结果曲面片形成连通的一个整体,则需要合并两个或三个结果曲面片的顶点集合和三角形集合,更新三角形集合中的顶点索引;
结果曲面片结束:如果某个完成扫描的三角形其邻接三角形也都完成扫描,且其没有其它分化的生长点,则结果面片结束处理,产生一个完整的结果曲面片,新产生出的结果曲面片可以直接保存到外存或数据库中,同时释放该结果曲面片占据的内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710835245.XA CN107633555B (zh) | 2017-09-15 | 2017-09-15 | 基于空间扫描的曲面集相互切割方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710835245.XA CN107633555B (zh) | 2017-09-15 | 2017-09-15 | 基于空间扫描的曲面集相互切割方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107633555A CN107633555A (zh) | 2018-01-26 |
CN107633555B true CN107633555B (zh) | 2019-12-17 |
Family
ID=61102403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710835245.XA Expired - Fee Related CN107633555B (zh) | 2017-09-15 | 2017-09-15 | 基于空间扫描的曲面集相互切割方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107633555B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113642062B (zh) * | 2021-10-18 | 2022-03-15 | 广州中望龙腾软件股份有限公司 | 三维模型的拓扑几何数据表示方法、终端、存储介质 |
CN114589824B (zh) * | 2021-11-01 | 2024-02-02 | 青岛高测科技股份有限公司 | 硅棒切割***的切割装置及硅棒切割*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1967596A (zh) * | 2006-08-14 | 2007-05-23 | 东南大学 | 三维扫描***中三维散乱点集的三角剖分构造方法 |
CN101807308A (zh) * | 2009-02-12 | 2010-08-18 | 富士通株式会社 | 三维模型分割装置和方法 |
CN102930597A (zh) * | 2012-09-28 | 2013-02-13 | 中国科学院自动化研究所 | 一种外存三维模型的处理方法 |
-
2017
- 2017-09-15 CN CN201710835245.XA patent/CN107633555B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1967596A (zh) * | 2006-08-14 | 2007-05-23 | 东南大学 | 三维扫描***中三维散乱点集的三角剖分构造方法 |
CN101807308A (zh) * | 2009-02-12 | 2010-08-18 | 富士通株式会社 | 三维模型分割装置和方法 |
CN102930597A (zh) * | 2012-09-28 | 2013-02-13 | 中国科学院自动化研究所 | 一种外存三维模型的处理方法 |
Non-Patent Citations (2)
Title |
---|
快速成型中粗糙STL模型细分算法;张争艳等;《机械工程学报》;20160405;第52卷(第7期);第178页至186页 * |
顾及几何特征的规则激光点云分割方法;方军等;《测绘通报》;20160825;第47页至52页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107633555A (zh) | 2018-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113178014B (zh) | 场景模型渲染方法、装置、电子设备和存储介质 | |
CN103761397B (zh) | 用于面曝光增材成型的3d模型切片及投影面生成方法 | |
CN102298795B (zh) | 一种快速成型工艺中零件的stl三角网格模型的三维分段方法 | |
CN110033519B (zh) | 基于隐式函数的三维建模方法、装置、***及存储介质 | |
CN106373184B (zh) | 一种三维打印模型摆放所需支撑量快速估算方法 | |
CN112633657B (zh) | 一种施工质量管理方法、装置、设备及存储介质 | |
CN105205866A (zh) | 基于密集点云的城市三维模型快速构建方法 | |
CN1967596A (zh) | 三维扫描***中三维散乱点集的三角剖分构造方法 | |
CN107622530B (zh) | 一种高效鲁棒的三角网切割方法 | |
CN105844691A (zh) | 无序点云三维重建方法 | |
CN105844067A (zh) | 一种船体曲板焊接变坡口自动加工数据的获取方法 | |
CN102629391A (zh) | 基于数字图形介质的三维空间结构图形切割及切片方法 | |
CN110211234B (zh) | 一种网格模型缝合***和方法 | |
CN107633555B (zh) | 基于空间扫描的曲面集相互切割方法及*** | |
CN109636889B (zh) | 一种基于动态缝合带的大规模三维地形模型渲染方法 | |
CN108986218A (zh) | 一种基于pmvs的建筑物密集点云快速重建方法 | |
CN109551768A (zh) | 一种基于stl的3d打印文件的数据处理方法 | |
CN103679814A (zh) | 一种三角形网格模型的处理方法及装置 | |
CN112462689B (zh) | 生成工艺品数字模型随型雕刻四轴三联动刀具路径的方法 | |
CN105869210A (zh) | 三维地质表面模型中的插值数据处理方法 | |
CN105931297A (zh) | 三维地质表面模型中的数据处理方法 | |
CN112819108B (zh) | 一种多源异构模型的切片融合方法、***及存储介质 | |
CN103077554B (zh) | 基于节单位的作物交互式设计方法和*** | |
CN111179420B (zh) | 一种三维城市模型优化方法及*** | |
CN113888701A (zh) | 将曲面3D模型转化为Obj格式的网格3D模型的方法及*** |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191217 Termination date: 20200915 |