一种针对带有边界的非封闭stl模型的切片处理方法

文档序号:6632725阅读:257来源:国知局
一种针对带有边界的非封闭stl模型的切片处理方法
【专利摘要】本发明公开了一种面向3D打印的针对带有边界的非封闭STL模型的切片处理方法。该方法包括以下步骤:提取STL模型中三角形的点、边和面信息并建立其间的拓扑关系;根据边界边判断规则提取所有边界边;对非封闭网格进行分层切片处理,获得非封闭的二维多边形;对多边形偏置处理后的可打印的内外轮廓线进行路径优化,以减少空行程;由切片文件输出通用的Gcode文件,供3D打印机读取并打印。本发明首次从边界提取的角度提出了针对输入为非封闭STL模型的切片方法,打破了传统3D打印中只能对封闭STL模型进行切片处理的桎梏,实现了对带有边界的非封闭STL模型切片处理,使得非封闭STL模型可以直接打印成型。
【专利说明】-种针对带有边界的非封闭STL模型的切片处理方法

【技术领域】
[0001] 本发明涉及计算机集成制造领域,具体涉及一种针对带有边界的非封闭S化模型 的切片处理方法。

【背景技术】
[0002] 3D打印技术是一项具有前沿性、先导性的新兴技术,特别适用于小批量、个性化、 结构复杂,原材料昂贵的生产制造。随着3D打印技术的发展,传统的生产方式和生产工艺 将发生深刻的变革,设计、建筑、航天、医学、教育等行业也将受到深远的影响。《经济学人》 杂志2012年将3D打印技术称为"第H次工业革命的重要标志",认为其是推动新一轮工业 革命的重要契机,已经引起全世界的广泛关注。
[0003] 烙融沉积型(pused D巧osition Modeling) H维打印技术是3D打印技术的一种, 采用离散/堆积原理,在计算机的控制下把H维模型直接制造成H维实体。基本原理是加 热喷头在计算机的控制下,将热塑性聚合物材料加热烙化,使其在烙融状态下从喷嘴挤 出,靠高温挤出丝材的自粘结性逐层堆积成形。其中,计算机处理的任务是:切片处理与指 令传送。切片处理是将S化网格模型分层求交,W得到可W打印的二维轮廓,然后合理的规 划打印路径。指令传送是把该系列动作传送到硬件,并提供控制其他功能的控制界面。主 流的商业化3D打印客户端软件,如Slic3r、Makeware等都集成了该两大功能模块,其中最 核也的是切片处理模块(切片引擎),针对S化模型的切片算法则是切片处理的关键。
[0004] 现有的切片处理算法要求输入的模型必须是封闭的H角网格,无法直接对非封 闭的H角网格进行切片处理。然而在实际应用中,某些通过扫描、建模、W及编辑和修改 后的模型,如布料、叶片、分割后的局部模型等都是一类带有边界的非封闭STUSTereo Lithogra地y)模型针对输入为非封闭的S化模型,对其直接进行切片处理,生成的切片文 件可实际打印,该对于推动H维打印的普及应用有重要意义。


【发明内容】

[0005] 为了解决现有的切片处理算法限制输入的模型必须是封闭的H角网格的问题,本 发明提供一种针对带有边界的非封闭S化模型的切片处理方法,通过边界提取使得切片处 理可W生成非封闭的二维多边形,并根据非封闭S化模型的成型特点对二维多边形偏置处 理后的内外轮廓线作了路径优化,W提高成型效率。
[0006] 本发明采取的技术方案如下:
[0007] -种针对带有边界的非封闭S化模型的切片处理方法,包括W下步骤:
[000引步骤1、提取STL模型中立角形面片的点、边和面信息,并建立点、边和面信息间的 拓扑关系;
[0009] 拓扑关系的点、边和面的数据结构组成分别为:
[0010] 点数据结构包括点坐标和与点邻接的面的索引值;
[0011] 面数据结构包括邻接点的索引值和邻接面的索引值;
[0012] 边数据结构包括边的索引值、边的邻接面索引值和两个邻接点的索引值。
[0013] 步骤2、利用拓扑关系,依据边界边判断规则提取出S化模型的所有边界边;
[0014] ①遍历所有的H角形面片的各条边,根据边界边的判断规则,若一条边其邻接H 角面片的个数为1,即为边界边;
[0015] ②将所有提取的边界边按边界边的数据结构形式重新存储起来,W便于查找和访 问。
[0016] 边界提取规则为:
[0017] 设H角网格曲面为M = (V。Vj, "'v。),M中的任意顶点为Vi = (X。y。Zi),如果H 角网格曲面M中的某两个顶点所连接的边edge(Vi,Vj.)为某个H角面片AviVj.Vk的边,则称 边edge (V。Vj)为A VfVjVk的邻接边。WL (V。Vj)表示所有包含边edge (V。Vj)的H角面片 的集合。对于边edge(v。Vj.),其邻接H角面片的个数用|L(v。Vj.) I表示。如果一条边所关 联的邻接H角形的数目为1,则该边为边界边。若一条边所关联的邻接H角形的数目为2, 则称之为内边。同时,边界边的2个顶点为边界点,拥有1个或两个边界点的H角形称之为 边界H角形。
[001引边界提取规则的表达式为:
[0019] BoundaryEdge : (edge (V。Vj) | if: | L (V。Vj) | = 1},
[0020] 其中X。y。Zi为顶点Vi的坐标;V。Vj,…V。表示空间中H角网格模型上的点;
[0021] 边edge (V。Vj)为A VfVjVk的邻接边,L (V。Vj)表示所有包含边edge (V。Vj)的; 角面片的集合,|L(v。Vj.) I表示其邻接H角面片的个数,若一条边其邻接H角面片的个数 为1,即为边界边。
[0022] 步骤3、对非封闭网格进行分层切片处理,获得非封闭的二维多边形,具体包括W 下步骤:
[0023] ①根据切片精度得到模型的切片总层数n和所有的切片平面ZiQ = 1,2…n);
[0024] ②读取S化模型的一个H角形面片,根据该H角形各点Z坐标的最大值Zm"、最小 值Zmh W及切片精度,反求与H角形相交的K个切片平面Zj., 1《j《n ;
[0025] ③获取切片平面与H角形面片相交的切片片段,为切片片段添加用于指示切片片 段顶点是否在边界边上的指示信息:读取一个相交切片平面Zj.并计算交点,得到一个属于 该H角形的切片片段(切片平面与H角形面片相交的线段,需要建立片段数据结构),为该 切片片段添加指示信息BorderFlagD根据该H角形的面片索引,查找边界边集合中是否 存在边界边属于该H角面片。若存在,则计算是否有片段顶点在边界边上,在边界边上则 BorderFlag置为True,不在则置为hlse。若不存在,则BorderFlag直接置为!^ilse ;
[0026] 其中,获取切片片段包括W下步骤:
[0027] (a)切片片段的方向D由分层方向Z和H角形的法矢N的矢量积确定:
[0028] D = ZXN
[0029] 其中,Z为分层方向,N为H角形面片的法矢;
[0030] 切片片段顶点依次顺序连接形成二维多边形,二维多边形(二维多边形轮廓线) 即为切片平面与H角网格模型在空间中相交后形成的一条多边形轮廓。
[0031] 化)分层平面(切片平面)和H角形面片交点的计算:
[0032] P(t) = p+t(q-p), t G [0, 1] h-z
[0033] t =-
[0034] 其中,Z = h为分层平面高度,P = (Xp, y。,Zp), q = (X。,y。,z。)为;角形一条边的 两个顶点,z。表示笛卡尔空间坐标系下点P= (Xp,yp,Zp)的Z坐标;Zp表示笛卡尔空间坐标 系下点q = (X。,y。,Z。)的Z坐标。
[0035] 分层平面与H角形面片的交点为切片平面与每个H角面片的相交的点。
[0036] (C) H角形求交后所得切片片段的数据结构为:
[0037] 切片片段的数据结构包括片段起始点、面索引、片段是否已加入多边形和边界片 段标示。
[0038] ④记录步骤③切片片段所属的H角形面片索引信息,遍历获取K个切片平面与H 角形面片的所有切片片段;如果K个切片平面与该H角面片的求交都计算完毕,则执行下 一步;否则转②,读取下一个与该H角形相交的平面;
[0039] ⑥按层存储切片平面与H角形面片的所有相交的切片片段;按层存储该H角形面 片的所有相交切片片段,并转①;如果所有H角形面片都求交处理完毕,则转下一步;
[0040] ⑧遍历所有切片片段的指示信息,获取二维多边形的起始连接点;读取第i = i + 1 层的所有切片片段(从i = 0开始),判断该层中是否有BorderFlag为True的片段。若存 在,则取出轮廓线方向第一个BorderFlag为True的片段,并将该片段所属H角面片置为当 前面片;若没有,表示该层是封闭的,取出轮廓线方向上任意一个切片片段,并将该片段所 属H角面片置为当前面片;
[0041] ⑦判断邻接面是否存在切片片段;读取当前面片的一个邻接面,判断该邻接面是 否存在第i层的片段。若不存在,直接转⑨;若存在,则判断该片段是否已经加入到多边形 中。若已经加入到多边形中,则转⑨;若没有加入到多边形中,则该片段加入至多边形中,并 把该面片置为当前面片,转⑨;
[0042] ⑨遍历所有邻接面是否存在切片片段;判断邻接面是否遍历完毕,若没有遍历完 毕,则转⑦;若遍历完毕,则转下一步;
[0043] ⑨某一层切片片段的顶点多个成对出现的在边界边上时,W指示信息为真的切 片片段所在的H角形面片为起始面片连接二维多边形:判断该邻接面中片段指示信息 BorderFlag是否为True。若不为True,则执行下一步;若为True,贝Ij判断轮廓线方向是否 存在下一个BorderFlag = True的片段。若存在则将该片段置为当前面片,并转⑦;若不存 在,则执行下一步;
[0044] ⑩遍历所有切片层,每层形成一个二维多边形:判断是否遍历完该层所有片段。若 没有遍历完毕,则转⑦;若遍历完毕,则存储该层所有的非封闭多边形或者封闭多边形。判 断是否i《n,若是则转⑧,否则算法结束。
[0045] 步骤4、对多边形偏置处理后的可打印内外轮廓线进行路径优化,W减少空行程, 方法包括W下步骤:
[0046] ①利用多边形偏置处理库对生成的二维的多边形进行多边形偏置处理(Offset), 生成可打印的内轮廓和外轮廓;
[0047] ②对生成的可打印的内轮廓和外轮廓进行路径优划,其中路径优化的策略为:
[004引 A.同一层内相邻轮廓线扫描方向相反;
[0049] B.相邻层轮廓线扫描的次序相反;
[0050] C.相邻层同一轮廓扫描方向相反。
[0051] 步骤5、由切片文件输出通用的Gcode文件,供3D打印机读取并打印。
[0052] 较优地,步骤2、边界边的数据结构组成为;边界边的数据结构包括;边界边一端 顶点的索引值、边界边另一端顶点的索引值、所属面片索引。
[0053] 较优地,步骤3的第⑥步的按层存储的相交切片片段的数据结构包括每层的片段 集合和片段与对应的面索引。
[0054] 本发明采用了基于拓扑信息的切片方法,从边界信息提取的角度解决了一种带边 界的非封闭STL模型的切片处理问题,打破了现有的切片处理算法只能针对封闭STL模型 切片处理的局限。本发明还从提高了成型效率的角度,采用不同于封闭S化模型的轮廓扫 描策略,针对带边界的非封闭S化模型的成型特点作了轮廓线扫描的路径优化。本发明既 解决了非封闭S化模型的切片处理问题,又从实际应用角度提高了成型效率,该对于推动 H维打印的普及应用有重要价值。
[0055] 本发明根据S化模型的边界边的信息,结合基于拓扑关系信息的切片方法对非封 闭网格进行分层切片处理,获得非封闭的二维多边形;通过对S化模型分层切片,遍历迭代 获取所有层的切片片段,并按轮廓线方向连接每层的切片片段

【专利附图】

【附图说明】
[0056] 图1是本发明一种针对带有边界的非封闭S化模型的切片处理方法流程示意图;
[0057] 图2(a)拓扑关系的点数据结构示意图;
[0058] 图2(b)拓扑关系的面数据结构示意图;
[0059] 图2(c)拓扑关系的边数据结构示意图;
[0060] 图3是描述边界边的数据结构图示;
[0061] 图4为边界点和边界边的示意图;
[0062] 图5是分层切片算法的流程图;
[0063] 图6是分层切片中二维多边形生成过程的演示图;
[0064] 图7(a)切片平面与H角形面片相交的轮廓线的演示图;
[0065] 图7(b)切片平面与H角形面片相交的轮廓线方向的示意图;
[006引图8(a)是路径优化策略同一层内顺序逆序交替结合的演示图;
[0067] 图8化)是路径优化策略相邻层的扫描结果的演示图;
[0068] 图9是切片处理后实际的打印测试结果展示图;(a)为基于封闭模型打印的正面 展示图,化)为基于封闭模型打印的反面展示图,(C)为本发明针对带有边界的非封闭STL 模型的切片处理的正面展示图;(d)为本发明带有边界的非封闭S化模型的切片处理的反 面展示图。

【具体实施方式】
[0069] 下面结合附图和具体实施例对本发明作进一步详细描述。
[0070] 下面结合附图对本发明做进一步说明。
[0071] 如图1所示,一种针对带有边界的非封闭S化模型的切片处理方法,包括W下步 骤:
[0072] 步骤1,输入S化模型,提取S化模型中H角形的点、边和面信息并建立其间 的拓扑关系,描述拓扑信息的数据结构如图2(a)、2化)、2(c)示;述拓扑关系的点、边和 面的数据结构组成分别为:点数据结构包括点坐标vedice和与点邻接的面的索引值 faceIndexList ;面数据结构包括邻接点的索引值index[0]、index[l]、indexK]、和邻 接面的索引值touching[0]、touching[l]、touching^];边数据结构包括边的索引值 Edgeindex、边的邻接面索引值Ad^^acenthceliO]、AdjacentFace[l]和两个邻接点的索引 值 AdjacentVertice[0]、AdjacentVertice[1]。
[0073] 拓扑关系的点、边和面的数据结构为
[0074]

【权利要求】
1. 一种针对带有边界的非封闭STL模型的切片处理方法,其特征在于,包括以下步骤, 步骤A1,提取STL模型中三角形面片的点、边和面信息,并建立所述点、边和面信息间 的拓扑关系; 步骤A2,利用所述拓扑关系,依据边界边判断规则提取出STL模型的所有边界边; 步骤A3,根据STL模型的边界边的信息,结合基于拓扑关系信息的切片方法对非封闭 网格进行分层切片处理,获得非封闭的二维多边形; 步骤A4,对所述非封闭的二维多边形作多边形偏置处理,得到内轮廓线和外轮廓线,对 内轮廓线和外轮廓线进行路径优化,以减少空行程; 步骤A5、由切片文件输出通用的打印文件,供3D打印机读取并打印。
2. 根据权利要求1所述的一种针对带有边界的非封闭STL模型的切片处理方法,其特 征在于,步骤Al所述拓扑关系的点、边和面的数据结构组成分别为: 点数据结构包括点坐标和与所述点邻接的面的索引值; 面数据结构包括邻接点的索引值和邻接面的索引值; 边数据结构包括边的索引值、边的邻接面索引值和两个邻接点的索引值。
3. 根据权利要求1所述的一种针对带有边界的非封闭STL模型的切片处理方法,其特 征在于,步骤A2所述的边界提取规则为: 设三角网格曲面为M= (Vi, Vj,…vn), M中的任意顶点为Vi= (Xi, Yi, Zi),如果三角网格 曲面M中的某两个顶点所连接的边edge (Vi, Vj)为三角面片A ViVjVk的边,贝U边edge (Vi, Vj) 为A ViVjVk的邻接边;以Uvi, Vj)表示所有包含边edge (Vi, Vj)的三角面片的集合;边 edge (Vi, Vj)的邻接三角面片的个数用I Uvi, Vj) I表示;如果一条边所关联的邻接三角形的 数目为1,所示边为边界边;若一条边所关联的邻接三角形的数目为2,则为内边,且边界边 的两个顶点为边界点,拥有一个或两个边界点的三角形面片为边界三角形; 所述边界判断规则的表达式为: BoundaryEdge : {edge (Vi, Vj) |if: (L(VijVj) | = 1}; 其中Xi, yi,Zi为顶点Vi的坐标;Vi,',…v n表示空间中三角网格模型上的点。
4. 根据权利要求1所述的一种针对带有边界的非封闭STL模型的切片处理方法,其特 征在于,步骤A2具体包括以下步骤: 步骤A21、遍历所有的三角形面片的各条边,根据边界边的判断规则,若一条边的邻接 三角面片的个数为1,所述边为边界边; 步骤A22、将所有提取的边界边按边界边的数据结构形式重新存储起来,以便于查找和 访问。
5. 根据权利4所述的一种针对带有边界的非封闭STL模型的切片处理方法,其特征在 于,步骤A22所述的边界边的数据结构组成为: 边界边的数据结构包括:边界边一端顶点的索引值、边界边另一端顶点的索引值、所属 三角形面片索引。
6. 根据权利4所述的一种针对带有边界的非封闭STL模型的切片处理方法,其特征在 于,步骤A3具体包括以下步骤: 步骤A31、根据切片精度得到STL模型的切片总层数n和所有的切片平面Zi(i = 1,2- n); 步骤A32、读取STL模型的一个三角形面片,根据所述三角形面片各点z坐标的最大值 Zmax、最小值Zmin和切片精度,反求与三角形相交的K个切片平面I < j < n ; 步骤A33、获取切片平面与三角形面片相交的切片片段,为切片片段添加用于指示切 片片段顶点是否在边界边上的指示信息:读取一个切片平面\并计算切片平面与三角 形面片的交点,得到一个属于所述三角形面片的切片片段,为所述切片片段添加指示信 息BorderFlag;根据所述三角形面片的面片索引,查找边界边集合中是否存在边界边属 于三角形面片;若存在,则计算是否有切片片段顶点在边界边上,在边界边上则指示信息 BorderFlag置为True,如果没有切片片段顶点在边界边上,则置为False ;若边界边集合中 不存在边界边属于三角形面片,则BorderFlag直接置为False ; 步骤A34、记录步骤A33所述切片片段所属的三角形面片索引信息,遍历获取K个切片 平面与所述三角形面片的所有切片片段:如果K个切片平面与所述三角形面片的求交都计 算完毕,则执行步骤A35 ;否则转步骤A32,依次读取下一个与所述三角形面片相交的平面; 步骤A35、按层存储切片平面与三角形面片的所有相交的切片片段; 步骤A36、遍历所有切片片段的指示信息,获取二维多边形的起始连接点: 每一切片层的所有切片片段,判断每层层中是否有BorderFlag为True的切片片段;若 存在,则取出轮廓线方向第一个BorderFlag为True的切片片段,并将所述切片片段所属三 角形面片置为当前面片;若没有,表示该层是封闭的,取出轮廓线方向上任意一个片段,并 将该片段所属三角面片置为当前面片,用于处理封闭的曲面图形; 步骤A37、判断邻接面是否存在切片片段; 步骤A38、遍历所有邻接面是否存在切片片段; 步骤A39、某一层切片片段的顶点多个成对出现的在边界边上时,以指示信息为真的切 片片段所在的三角形面片为起始面片连接成二维多边形; 步骤A310、遍历所有切片层,每层形成一个二维多边形。
7. 根据权利6所述的一种针对带有边界的非封闭STL模型的切片处理方法,步骤A33 所述获取切片片段包括以下内容: ① 所述切片片段的方向D由分层方向Z和三角形的法矢N的矢量积确定: D = ZXN 其中,Z为分层方向,N为三角形面片的法矢; ② 切片平面和三角形面片交点的计算: P (t) = p+t (q-p) , t G [0, 1]
其中,Z = h为分层平面高度,p= (xp,yp,zp),q= (Xt^ytpZq)为三角形一条边的两个 顶点;Zq表示笛卡尔空间坐标系下点P= (Xp,yp,zp)的Z坐标;Zp表示笛卡尔空间坐标系下 点 q = (xq,yq,zq)的 Z 坐标; ③ 三角形求交后所得片段的数据结构: 所述片段的数据结构包括片段起始点、面索引、片段是否已加入多边形和边界片段标 /Jn 〇
8. 根据权利6所述的一种针对带有边界的非封闭STL模型的切片处理方法,步骤A35 所述的切片平面与三角形面片相交的切片片段的数据结构包括每层的片段集合和片段与 对应的面索引。
9.根据权利1所述的一种针对带有边界的非封闭STL模型的切片处理方法,所述步骤 A4所述路径优化的策略包括: 同一层内相邻轮廓线扫描方向相反; 相邻层轮廓线扫描的次序相反; 相邻层同一轮廓扫描方向相反。
【文档编号】G06F17/50GK104331555SQ201410605438
【公开日】2015年2月4日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】童晶, 巢海远, 张霞, 翟宇轩, 张伟林 申请人:河海大学常州校区
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1