一种基于stl模型的切片分层方法

xiaoxiao2020-10-23  18

一种基于stl模型的切片分层方法
【技术领域】
[0001]本发明属于计算机应用技术领域,具体地说,涉及一种3D打印技术中,基于STL模型的切片分层方法。
【背景技术】
[0002]目前,3D打印领域最常用的打印数据,是通过STL (Stereo Litbography)模型来获取的。
[0003]具体的,是将一个切片平面与整个STL模型由下至上的相交计算一遍,因而判断某个三角形面片与切片平面是否相交,需要遍历整个三角形面片集合,计算出交线之后还要进行交线的有序性排列;但,这种算法中,共边的三角形面片会进行两次计算,得到的其实是同一个目标点,计算冗余大。虽然在有些算法中,会对整个模型进行拓扑排序,进而简化获取交线之后的排序操作,但是,对整个模型进行拓扑排序,本身的计算量就很大,导致了目前对STL模型进行分层的速度偏慢。

【发明内容】

[0004]本发明提供了一种基于STL模型的切片分层方法,通过对STL文件的三角形面片进行分组排序,对三角形面片进行分组矩阵和活性三角形面片表的建立,在较小的范围内,建立局部的三角形面片邻接拓扑信息,能够获得较高的切片效率,解决现有技术中分层速度慢的技术问题。
[0005]为解决上述技术问题,本发明采用以下技术方案予以实现:
提出一种基于STL模型的切片分层方法,包括:确定切片分层数目;确定STL模型的每个三角形面片所在的层数;针对每层切片建立分组矩阵,并生成活性三角形面片表;所述分组矩阵中包含切片方向与切片平面相交的三角形面片集合;所述活性三角片表中存储所述分组矩阵中所有三角形面片的索引号;基于活性三角形面片表,确定每层中各三角形面片的邻接关系;对每层切片求交后,结合所述邻接关系生成每层切片对应的轮廓环,以得到完整截面轮廓。
[0006]进一步的,所述确定切片分层数目,具体为:确定分层厚度;根据所述STL模型的高度和所述分层厚度,确定切片分层数目。
[0007]进一步的,所述确定分层厚度,具体为:计算所述STL模型中,每个三角形面片的最小纵向高度和最大纵向高度;根据最大纵向高度与最小纵向高度的差值,计算每个三角形面片的纵向高度;选取最小纵向非零高度作为分层厚度。
[0008]进一步的,所述确定STL模型的每个三角形面片所在的层数,具体为:若三角形面片的最小纵向高度小于第i层切面的高度,而其最大纵向高度大于所述第i层切面的高度,则所述三角形面片处于第i层;其中,所述i为从I开始、小于等于分层数目的整数。
[0009]进一步的,所述确定各三角形面片的邻接关系,具体为:基于一个三角形面片,确定与其相邻的三个三角形面片。
[0010]进一步的额,所述生成切面轮廓环,具体为:从第j层切片的活性三角形面片表中的第一个三角形面片开始,计算所述第一个三角形面片与所述第j层切片的交点;根据三角形面片的邻接关系,找到与所述第一个三角形面片的邻接三角形面片,并求出其与所述第j层切片的交点;根据三角形面片的邻接关系,找到与所述邻接三角形面片的邻接三角形面片,并求出其与所述第j层切片的交点;根据三角形面片的邻接关系,直至找到活性三角形面片表中最后一个三角形面片,求出其与所述第j层切面的交点,得到所述切面轮廓环;其中,所述j为从I开始、小于等于分层数目的整数。
[0011]进一步的,在生成切片轮廓环之后,所述方法还包括:去除冗余数据点;保存轮廓环数据;其中所述冗余数据点包括重合点和共线点。
[0012]与现有技术相比,本发明的优点和积极效果是:本发明提出的基于STL的切片分层方法中,首先计算STL模型中所有的三角形面片的纵向高度,手动设定分层厚度,或者选取最小纵向非零高度作为切片分层厚度,根据分层厚度能够确定分层数目,针对每个分层建立分组矩阵,并生成存储分组矩阵中所有三角形面片的索引号的活性三角形面片表;分组矩阵中,包含切片方向与切片平面相交的三角形面片的集合;该分组矩阵的建立,降低了对STL模型所有三角形面片位置排序的运算量,而活性三角形面片表的建立,保证了在切片处理过程中,只有活性三角形面片表中的三角形面片参与和切片平面的求交计算,减少了进行三角形面片与切片平面位置关系判断的次数;根据邻接关系,寻找活性三角形面片表中每个三角形面片的邻接三角形面片,能够缩小搜索比较范围,有效减少建立拓扑关系的工作量,因此,对于每个与切片平面相交的三角形面片,只需计算一个边的交点,基于邻接关系,与三角形面片邻接的三角形面片可以继承其一个交点,即两个相邻三角形面片的共边与切片平面的交点只需计算一次,能显著减少计算量;在切片过程中可直接获得有向封闭的轮廓环,避免了交线段连接关系的搜索判断;基于上述改善,本发明提出的方法基于减少的计算量和判断次数,有效提高了分层速度,解决了现有技术中分层速度慢的技术问题。
[0013]结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。
【附图说明】
[0014]图1为本发明实施例提出的基于STL模型的切片分层方法流程图;
图2为本发明实施例中三角形面片与切片平面的位置关系图;
图3为本发明实施例中提出的活性三角形面片表的建立示意图。
【具体实施方式】
[0015]本发明的设计思路在于,对STL模型整体分组排序,借助活性三角形面片表和邻接关系,在较小的三角形面片范围内建立拓扑关系,在此基础试上再进行切片平面与三角形面片的相交计算,能够减少切面平面与三角形面片的位置判断次数,然后对交线进行排序,获得有序的轮廓环,以便于打印,能够显著提升分层速度。
[0016]下面结合附图对本发明的【具体实施方式】作进一步详细地说明。
[0017]如图1所示,为本发明实施例提出的基于STL模型的切片分层方法流程图,包括如下步骤:
步骤Sll:确定切片分层数目。
[0018]确定切片分层数目是根据分层厚度决定的,确定分层厚度后,根据STL模型的高度和分层的厚度,例如将STL模型的高度与分层厚度相除,可以确定切片的分层数目;而确定分层厚度的依据是:首先计算STL模型中,每个三角形面片的最小纵向高度和最大纵向高度,然后根据最大纵向高度与最小纵向高度的差值得到每个三角形面片的纵向高度,选取所有纵向高度中最小纵向非零高度值作为分层厚度,也即能够保证即使是具有最小纵向高度的三角形面片,也能够与切片平面相切;或者,根据实际情况手动设定分层厚度也可。
[0019]步骤S12:确定STL模型的每个三角形面片所在的层数。
[0020]该步骤的目的在于建立分组矩阵,使得每个分组矩阵中包含与一个切片平面相交的所有三角形面片,因此,在此之前,需要确定每一个三角形面片所处的层数。
[0021]假设STL模型的纵向坐标,也即通常所指的Z轴坐标的最小值为零,若不为零,可以通过坐标平移变换成为零,然后根据每个三角形面片的最小纵向高度Zmin来确定其最先出现在哪一层。
[0022]令Zi (i=l,2,...,η)表示第i层切片平面的纵向高度,则与第i层切片平面相切的三角形面片满足以下关系:z1-l ( Zmin〈Zi且Zmax彡Zi,如图2中的三角形面片a所示,也即,若三角形面片的最小纵向高度小于第i层切面的高度,而其最大纵向高度大于第i层切面的高度,则该三角形面片处于第i层,这其中,i为从I开始、小于等于分层数目η的整数。
[0023]一些特殊情况的处理如下:当存在满足Z1-1 ( Zmin<Zmax<Zi或Zi_l〈Zmin=Zmax<Zi的三角形面片时,如图2所示的三角形面片b,其本身不与切片平面相交,若将其丢弃,会导致模型上微小特征丢失,这也是步骤Sll中选取所有纵向高度中最小纵向高度值作为分层厚度的原因,需要保证分层厚度小于、至少等于最小纵向高度,以实现保留模型上的微小特征。对于Z1-1=Zmin=Zmax或者Zi= Zm in=Zmax的三角形面片,则根据正确描述STL模型的三角形面片所具备的性质及交线计算时的处理方法,可将其丢弃。
[0024]当模型中所有的三角形面片的层数确定后,即可以建立分组矩阵了。
[0025]步骤S13:针对每层切片建立分组矩阵,并生成活性三角形面片表。
[0026]由上可知,分组矩阵中包含切片方向与切片平面相交的三角形面片集合;其分组依据就是根据STL模型中每个三角形面片的最小纵向高度与最大纵向高度建立,当每个三角形面片所处的层数确定后,处于同一层的三角形面片即组成了一个分组矩阵。
[0027]如图3所示,可以使用一个二维的数组来存放与一个切片平面相交的所有三角形面片的索引号,例如Ti=(til,ti2, ti3, ti4.........),其中,i为切片平面的层数,从I至
n,每个t对应一个索引号,也即针对每一个分组矩阵建立一个活性三角形面片表,活性三角形面片表中存储对应分组矩阵中所有三角形面片的索引号;该索引号对应STL模型文件中读取三角形面片数据时的三角形面片的索引号。实际使用中,可以设置一个动态的二维数组,在由下至上切的过程中,每打印一层时,动态更新二维数组的数值。
[0028]步骤S14:基于活性三角形面片表,确定每层中各三角形面片的邻接关系。
[0029]这里的三角形面片的邻接关系,是指与一个三角形面片与与其相邻的三个三角形面片之间的位置关系。
[0030]每个分组矩阵中的所有三角形面片,每个三角形面片都具备三个与其相邻的三个三角形面片,这三个相邻的三角形面片中,可能会存在与该三角形面片处于同一个分组矩阵的三角形面片。
[0031]步骤S15:对每层切片求交后,结合邻接关系生成每层切片对应的轮廓环,以得到完整截面轮廓。
[0032]具体的,从第j层切片平面开始,j为从I开始、直至切片分层η的整数,执行切片求交算法。
[0033]在求交过程中,首先计算活性三角形面片中第I个与该切片平面相交的三角形面片的交点坐标,其在活性三角形面片表中对应tjl,然后根据其邻接关系找到与其相邻的三个三角形面片,这三个三角形面片中,与切片平面相交的三角形面片可能是一个,也可能是两个,在固定顺时针或者逆时针方向搜索时,与切片平面相交的相邻三角形面片为一个或者没有,例如为tj2,求出其与切片平面的交点,
然后继续根据三角形面片的邻接关系,找到与该邻接的三角形面片邻接的三角形面片,例如可能是tj3,并求出其与切片平面的交点;如此根据三角形面片的邻接关系,继续找邻接的三角形面片求交点,直至找到活性三角形面片表中最后一个三角形面片,求出其与切片平面的交点,由此得到一个有向的封闭切面轮廓环。
[0034]这种根据三角形面片的邻接关系建立的拓扑关系,能够在较小的三角形面片范围内建立拓扑关系,大量减少切片平面与三角形面片的位置判断次数,从而提升分层速度,提高工作效率。
[0035]与一层切片平面相交的三角形面片中,可能形成不止一个轮廓环,因此,需要在计算出一个轮廓环之后,对比活性三角形面片表,找出没有计算出轮廓环的三角形面片的索引号,重复上述过程计算轮廓环,直至一个切面的所有轮廓环计算完毕,最终得到一层完整的截面轮廓。
[0036]从第一层开始,直至第η层,重复上述过程,得到η层轮廓环,最终得到STL模型的完整轮廓。
[0037]在生成切片轮廓环之后,还需要去除诸如重合点和共线点的冗余数据点,然后将处理之后的轮廓环数据保存,以供打印使用。
[0038]上述本发明实施例提出的基于STL模型的切片分层方法,通过分层建立分组矩阵,并对每个分组矩阵建立活性三角形面片表,根据活性三角形面片表中的三角形面片的邻接关系,建立小范围三角形面片的拓扑关系,缩小搜索比较范围,以此来减少切片平面与三角形面片的位置判断次数,明显的提升了分层的速度。对于每个与切片平面相交的三角形面片,只需计算一个交点,邻接的三角形面片继承邻接面片的一个交点,也即共边的三角形面片与切片平面只计算一个交点,减少了计算量,有效提高使用STL模型打印的效率。
[0039]应该指出的是,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
【主权项】
1.一种基于STL模型的切片分层方法,其特征在于,包括: 确定切片分层数目; 确定STL模型的每个三角形面片所在的层数; 针对每层切片建立分组矩阵,并生成活性三角形面片表;所述分组矩阵中包含切片方向与切片平面相交的三角形面片集合;所述活性三角片表中存储所述分组矩阵中所有三角形面片的索引号; 基于活性三角形面片表,确定每层中各三角形面片的邻接关系; 对每层切片求交后,结合所述邻接关系生成每层切片对应的轮廓环,以得到完整截面轮廓。2.根据权利要求1所述的基于STL模型的切片分层方法,其特征在于,所述确定切片分层数目,具体为: 确定分层厚度; 根据所述STL模型的高度和所述分层厚度,确定切片分层数目。3.根据权利要求2所述的基于STL模型的切片分层方法,其特征在于,所述确定分层厚度,具体为: 计算所述STL模型中,每个三角形面片的最小纵向高度和最大纵向高度; 根据最大纵向高度与最小纵向高度的差值,计算每个三角形面片的纵向高度; 选取最小非零纵向高度作为分层厚度。4.根据权利要求3所述的基于STL模型的切片分层方法,其特征在于,所述确定STL模型的每个三角形面片所在的层数,具体为: 若三角形面片的最小纵向高度小于第i层切面的高度,而其最大纵向高度大于所述第i层切面的高度,则所述三角形面片处于第i层; 其中,所述i为从I开始、小于等于分层数目的整数。5.根据权利要求1所述的基于STL模型的切片分层方法,其特征在于,所述确定各三角形面片的邻接关系,具体为: 基于一个三角形面片,确定与其相邻的三个三角形面片。6.根据权利要求5所述的基于STL模型的切片分层方法,其特征在于,所述生成切面轮廓环,具体为: 从第j层切片的活性三角形面片表中的第一个三角形面片开始,计算所述第一个三角形面片与所述第j层切片的交点; 根据三角形面片的邻接关系,找到与所述第一个三角形面片的邻接三角形面片,并求出其与所述第j层切片的交点; 根据三角形面片的邻接关系,找到与所述邻接三角形面片的邻接三角形面片,并求出其与所述第j层切片的交点; 根据三角形面片的邻接关系,直至找到活性三角形面片表中最后一个三角形面片,求出其与所述第j层切面的交点,得到所述切面轮廓环;其中,所述j为从I开始、小于等于分层数目的整数。7.根据权利要求1所述的基于STL的切片分层方法,其特征在于,在生成切片轮廓环之后,所述方法还包括:去除冗余数据点;保存轮廓环数据;其中所述冗余数据点包括重合点和共线点。
【专利摘要】本发明提供了一种基于STL模型的切片分层方法,解决现有技术中分层速度慢的技术问题。方法包括确定切片分层数目;确定STL模型的每个三角形面片所在的层数;针对每层切片建立分组矩阵,并生成活性三角形面片表;分组矩阵中包含切片方向与切片平面相交的三角形面片集合;活性三角片表中存储分组矩阵中所有三角形面片的索引号;基于活性三角形面片表,确定每层中各三角形面片的邻接关系;对每层切片求交后,结合邻接关系生成每层切片对应的轮廓环,以得到完整截面轮廓。通过分层建立分组矩阵,并建立分组矩阵的活性三角形面片表,基于邻接关系,在较小的三角形面片范围内建立拓扑关系,减少位置判断次数和计算量,有效提升了分层效率。
【IPC分类】G06F17/50
【公开号】CN104899359
【申请号】CN201510244348
【发明人】王红, 刘启, 张莉
【申请人】青岛尤尼科技有限公司
【公开日】2015年9月9日
【申请日】2015年5月14日

最新回复(0)