技术领域
本发明涉及3D打印技术领域,尤其涉及一种基于相交边映射的STL模型3D打印切片方法。
背景技术
STL模型是一种用大量无序的三角面片来模拟复杂物体表面的三维几何模型,三角面片的数量由模型的复杂性和逼近误差决定。由于STL文件格式简单,数据处理方便,如今已经成为3D打印系统的标准接口文件。
在利用3D打印工艺对STL模型进行制造时,首先需要获取模型的2D切片轮廓。目前已有的STL模型切片方法中,应用最广泛的有两种类型:(1)基于冗余交点信息的方法。该类方法首先计算切平面与所有相交三角面片的交线段,由于相邻三角面片之间存在公共边,因此计算得到的交线段端点存在冗余数据,利用这些冗余交点信息进行首尾连接即可得到有序封闭轮廓。这种类型的算法无需构建复杂的网格拓扑关系,但在计算切平面和三角面片公共边的交点时需要重复计算两次。(2)基于网格拓扑信息的方法该类方法需要首先建立STL模型三角面片之间的邻接拓扑关系,然后在求得切平面与第一个相交三角片后,根据拓扑关系找到与之相邻的下一个三角片,依次求交后即可得到首尾相连的有向封闭轮廓。这种算法能够避免重复计算冗余交点,而且无需对交点进行重新排序;但这种基于网格拓扑关系的分层算法处理拓扑信息耗时较长、内存占用量较大,尤其是在处理数据量较大的STL文件时,将会十分费时且对计算机的计算能力要求更高。
STL模型表面的三角片是散乱分布的,获取这种模型切片轮廓的关键在于如何将切平面与这些散乱的三角片形成的交线段有序地组织起来。另外,由于切片处理要计算每层切平面与三角面片的交线,大量三角面片会影响每层切片创建轮廓的时间,因此切片算法的有效性直接影响到最终模型制作的效率和质量。
发明内容
针对现有技术存在的不足,本发明的目的在于提供一种基于相交边映射的STL模型3D打印切片方法,快速建立正确的有序切片轮廓。
为实现上述目的,本发明提供了如下技术方案:
一种基于相交边映射的STL模型3D打印切片方法,其包括以下步骤:
步骤一、根据STL模型的三角片的顶点坐标对三角片数据进行排序优化,然后由下而上逐层筛选出与各层切平面相交的三角片集合;
步骤二、从筛选出来的相交的三角片集合中,根据三角片顶点与切平面的相对位置提取出每个三角片与切平面相交的两条边,构建相交边对索引矩阵;
步骤三、建立映射函数,将相交边对索引矩阵转换成一个映射表,并利用该映射表对所有相交边进行有序排列;
步骤四、计算每个相交边与切平面的交点,并根据相交边排序结果,依次连接各个交点构建有序切片轮廓路径。
步骤一中,包括以下步骤:
1)读取STL模型,并根据成型精度和模型表面形态特征,确定各层切平面的位置h
2)获取STL模型上每个三角片的三个顶点v
3)查找排序后的三角片序列中最后一个满足z
步骤二中,包括以下步骤:
1)在相交三角片集合M
2)将所有三角片的相交边对组成集合:
V
3)根据V
其中,矩阵中的每一行代表一个相交边对索引。
步骤1)中,相交边对的具体创建规则如下:
Case1:当z
①当h
相交边对:[<v
②当h
相交边对:[<v
③当h
相交边对:[<v
Case 2:当z
相交边对:[<v
Case 3:当z
相交边对:[<v
Case 4:其他
无相交边。
步骤三中,包括以下步骤:
1)建立映射函数H(x),依次遍历相交边对索引矩阵E中的每一行索引,创建边对映射,形成相交边映射表H;
2)从相交边映射表H中选择一个键作为起始节点,检索其映射值作为邻接节点,递归遍历当前节点的映射值,直到与起始节点相同构成首尾封闭排序列表,循环执行递归遍历策略,直至所有边都排序完毕。
步骤1)中,具体步骤如下:
Step1:从相交边对索引矩阵E中的取出一行索引:E
Step2:判断相交边映射表H中是否存在键a,若相交边映射表H中不存在键a,则创建映射H(a)=b,若相交边映射表H中已存在映射H(a)=c,则修改映射H(a)=[c,b];
Step3:判断相交边映射表H中是否存在键b,若相交边映射表H中不存在键b,则创建映射H(b)=a,若H中已存在映射H(b)=d,则修改映射H(b)=[d,a];
Step4:比较i和s的关系,若i<s,则令i=i+1后,转Step1,否则,完成相交边映射表H的创建。
步骤2)中,具体步骤如下:
Step1:从相交边数据表H中取出一个键a作为排序列表List中的起始节点,即List(1)=a;
Step2:在相交边映射表H中检索键a的映射值H(a)=[b,c],选择[b,c]中的一个值b作为排序列表List中的下一个节点,即令i=2,使List(i)=b,然后将键a从相交边数据表H中删除;
Step3:以u=List(i)作为递归邻接节点,检索u的映射值H(u)=[v,w],判断v是否等于排序列表List中的上一个节点List(i-1):若v≠List(i-1),则将v作为排序列表List中的下一个节点,即List(i+1)=v,否则,将w作为排序列表List中的下一个节点,即List(i+1)=w,并将键u从相交边映射表H中删除;
Step4:判断List(i+1)是否等于起始节点a,若List(i+1)≠a,令i=i+1,执行步骤Step3;若List(i+1)=a,则构建完成一条首尾封闭的排序列表;
Step5:判断相交边映射表H是否为空,若为空,则结束;否则,该层切片存在多个条轮廓,转步骤Step1,继续创建下一条新的排序列表。
步骤四中,对于排序后的每个相交边排序列表List,1)当List中某一相交边索引所对应的边为<v
2)当List中某一相交边索引所对应的边为<v
求出当前切平面h
本发明的有益效果:通过分析三角片与切平面的相交关系,将相交边信息映射为数据表,利用映射数据表的快速查询功能进行相交边的有序排列,不仅可以避免公共边交点的重复计算,也无需耗时而复杂的网格拓扑关系重建,能够有效提高切片分层处理效率。
附图说明
图1为本发明的技术流程示意图。
图2a、b、c为本发明的切平面与三角片相交判别分类示意图。
图3a、b、c为本发明的相交边对映射表创建流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明公开了一种基于相交边映射的STL模型3D打印切片方法,其包括以下步骤:
步骤一、根据STL模型的三角片顶点坐标对三角片数据进行排序优化,然后由下而上逐层筛选出与各层切平面相交的三角片集合,具体步骤为:
1)读取STL模型,并根据成型精度和模型表面形态特征,确定各层切平面的位置h
2)获取STL模型上每个三角片的三个顶点v
3)对于第i层切平面h
步骤二、从筛选出来的相交的三角片集合中,根据三角片顶点与切平面的相对位置提取出每个三角片与切平面相交的两条边,构建相交边对索引矩阵,具体步骤为:
1)在相交三角片集合M
Case1:当z
①当h
相交边对:[<v
②当h
相交边对:[<v
③当h
相交边对:[<v
Case 2:当z
相交边对:[<v
Case 3:当z
相交边对:[<v
Case 4:其他
无相交边。
2)将所有三角片的相交边对组成集合:
V
3)根据V
其中,矩阵中的每一行代表一个相交边对索引。
步骤三、建立映射函数,将相交边对索引矩阵转换成一个映射表,并利用该映射表对所有相交边进行有序排列,具体步骤为:
1)建立映射函数H(x),依次遍历相交边对索引矩阵E中的每一行索引,创建边对映射,形成相交边映射表H。具体步骤如下:
Step1:从相交边对索引矩阵E中的取出一行索引:E
Step2:判断相交边映射表H中是否存在键a,若相交边映射表H中不存在键a,则创建映射H(a)=b,若相交边映射表H中已存在映射H(a)=c,则修改映射H(a)=[c,b];
Step3:判断相交边映射表H中是否存在键b,若相交边映射表H中不存在键b,则创建映射H(b)=a,若H中已存在映射H(b)=d,则修改映射H(b)=[d,a]。
Step4:比较i和s的关系,若i<s,则令i=i+1后,转Step1,否则,完成相交边映射表H的创建。
2)从相交边映射表H中选择一个键作为排序列表的起始节点,检索其映射值作为邻接节点,递归遍历当前节点的映射值,直到与起始节点相同构成首尾封闭的排序列表,循环执行递归遍历策略,直至相交边映射表H的所有边都排序完毕。具体步骤为:
Step1:从相交边映射表H中取出一个键a作为排序列表List的起始节点,即List(1)=a;
Step2:在相交边映射数据表H中检索键a的映射值H(a)=[b,c],选择[b,c]中的一个值b作为排序列表List中的下一个节点,即令i=2,使List(i)=b,然后将键a从相交边映射表H中删除;
Step3:以u=List(i)作为递归邻接节点,检索u的映射值H(u)=[v,w],判断v是否等于排序列表List中的上一个节点List(i-1):若v≠List(i-1),则将v作为排序列表List中的下一个节点,即List(i+1)=v,否则,将w作为排序链表List中的下一个节点,即List(i+1)=w,并将键u从相交边映射表H中删除;
Step4:判断List(i+1)是否等于起始节点a,若List(i+1)≠a,令i=i+1,执行步骤Step3;若List(i+1)=a,则构建完成一条首尾封闭的排序列表;
Step5:判断相交边映射表H是否为空,若为空,则结束;否则,该层切片存在多个条轮廓,转步骤Step1,继续创建下一条新的排序列表。
步骤四、计算每个相交边与切平面的交点,并根据相交边排序结果,依次连接各个交点构建有序切片轮廓路径。
对于排序后的每个相交边排序列表List,1)当List中某一相交边索引所对应的边为<v
2)当List中某一相交边索引所对应的边为<v
求出当前切平面h
以图3(a)所示的三角片与切平面相交情况为例,按照所述方法,产生的相交边集合V={e
在映射表H中,以e
最后,计算出各个相交边e
实施例不应视为对本发明的限制,但任何基于本发明的精神所作的改进,都应在本发明的保护范围之内。
机译: 切片制造设备,3D打印设备和方法,以及3D打印模型
机译: 切片制造装置,3D打印装置和方法以及3D打印模型
机译: 一种用于制造牙科模型的方法,其上沉积有陶瓷层的牙科模型,牙科模型,牙科模型以及使用3D打印机和套件的方法