一种基于T样条曲面的三维打印切片方法技术领域
本发明属于三维打印计算机辅助制造(Computer aided manufacturing,CAM)技
术领域,尤其涉及一种基于T样条曲面的三维打印切片方法。
背景技术
三维打印是一种起源于20世纪80年代的增材制造技术。尽管目前发展形成了数十
种针对不同材料的打印工艺,但打印的基本原理都是一层一层堆积材料最终制造成型所需
零件。基于这样的原理,三维打印可以轻松解决复杂形状的制造难题,为传统减材制造不便
加工的零件提供新的加工解决方案。三维打印主要包含三个基本环节:用户首先需要在CAD
软件中设计好零件形状;然后将三维模型导入三维打印CAM软件系统,将模型分层切片,并
在切片轮廓内填充扫描路径,生成加工代码;最终利用加工代码在相关打印设备上完成零
件实体制造。这三个环节对最终的打印产品质量都有重要的影响。
大多数情况下,用户在CAD软件中设计好三维模型后,都会把三维模型转换为STL
数据格式。STL是当前三维打印领域应用最多的数据文件,它采用离散多面体建模原理,用
大量的三角面片逼近设计模型外表面形状。这样的设计方法数据量非常庞大,特别是一些
拥有复杂曲面特征或内部孔洞结构的模型,极大的数据量给后续的算法处理带来了麻烦。
但即便是巨大的数据量也无法精确地表达设计模型,只能尽量去逼近设计模型。而且STL模
型经常出现一些面片裂缝、重叠或不完整的错误,设计人员需要花费大量的时间去修复。
STL的这两个缺陷给三维打印的工业化应用带来了困难,相关学者仍在研究更好的解决方
案。
T样条是2003年提出的最新建模技术,在继承了传统建模优点的同时解决了困扰
CAD领域二十余年的曲面拼接难题。相关学者甚至预测,T样条将会取代当前的非均匀有理B
样条(NURBS)成为下一个工业CAD标准。但作为一种建模工具,只有将T样条曲面成功制造出
来才能真正实现T样条的优势。当前国内外文献中,只有浙江大学机械学院傅建中课题组开
展了T样条相关制造技术的研究,他们利用一种改进的空间填充曲线规划加工路径,实现了
T样条曲面的五轴数控加工。此外,未找到任何关于T样条曲面三维打印的研究文献。
三维打印切片算法是三维打印CAM处理技术的核心环节,对打印质量以及打印效
率有着直接的影响。从切片对象出发,现有的切片技术主要分为两类:一类是基于STL模型
的切片;另一类是对CAD原始模型的直接切片。当前在各类三维打印CAM软件中最常见的就
是第一类针对STL模型的切片,算法处理速度快,逻辑简洁,但由于STL的固有缺陷,切片结
果精度不高。为了尽可能保留CAD模型的原始信息,研究人员开发了多种针对CAD模型的直
接切片算法。
Chen等提出了一种基于PowerSHAPE模型的直接分层方法(参见Chen X,Wang C,Ye
X,et al.Direct slicing from PowerSHAPE models for rapid prototyping[J].The
International Journal of Advanced Manufacturing Technology,2001,17(7):543-
547.)。Jamieson等用C语言在Unigraphics的实体造型内核上开发了CAD模型的直接分层软
件(参见Jamieson R,Hacker H.Direct slicing of CAD models for rapid prototyping
[J].Rapid Prototyping Journal,1995,1(2):4-12.)。Zhao Z等基于AutoCAD软件开发了
CAD模型的直接切片技术,最终输出三维打印可识别的轮廓数据(参见Zhao Z,Luc
Z.Adaptive direct slicing of the solid model for rapid prototyping[J]
.International Journal of Production Research,2000,38(1):69-83.)。
根据文献分析可知,STL模型切片算法因STL固有缺陷而不够理想。现有的CAD模型
直接切片方法大多是针对特有CAD系统的,普适性不强,无法成为统一标准。此外,未发现任
何关于T样条曲面三维打印切片方法的文献。
发明内容
为了解决现有CAD直接切片技术推广性差以及STL固有缺陷导致的切片困难问题,
本发明提供了一种基于T样条曲面的三维打印切片方法。该方法稳定可靠,精确度高,特别
适用于拥有复杂自由曲面外形或内部孔洞模型的三维打印切片处理。
一种基于T样条曲面的三维打印切片方法,包括如下步骤:
(1)输入待处理的T样条曲面模型文件、切片层厚d以及切片数据允许误差e;
(2)沿T样条曲面参数域s、t两方向各生成一组均匀的等s、等t参数线,得到一张均
匀分布的参数网格覆盖整张T样条曲面,计算出参数域网格映射到欧式空间网格的每个点
的三维坐标;
(3)根据模型文件、模型分层厚度计算出分层数目,每层选择一个z坐标最接近当
前层高度的网格点作为切片初始点;
(4)根据切片数据允许误差e,判断每层切片初始点是否小于设定的切片数据允许
误差e,对于超出切片数据允许误差e的切片初始点,沿最速变化方向迭代计算出误差小于
切片数据允许误差e的切片初始点坐标;
(5)以每层的切片初始点作为起点,沿曲面z坐标不变方向开始追踪,追踪得到的
切片点如果误差大于允许误差,利用最速变化方向进行坐标迭代,最终得到所有误差小于
切片数据允许误差e的切片点;
(6)连接每层追踪得到的切片点,输出切片轮廓。
在步骤(1)中,输入的T样条曲面表示形式为S(s,t),其中s、t为两个参数,且s,t∈
[0,1]。
在步骤(2)中,根据T样条计算公式将参数坐标向欧式坐标映射,T样条计算公式
为:
![]()
其中,i表示为第i个控制顶点,n为控制域内控制顶点的总个数,Pi为T样条曲面的
控制顶点,wi是控制顶点对应的权因子,Bi(s,t)为控制顶点对应的混合函数,其计算公式
为:
Bi(s,t)=Ni0(s)Ni0(t)
其中,Ni0(s)和Ni0(t)是B样条基函数,每个参数域网格点利用其参数坐标和网格
点矢量即可对应计算出欧式空间对应的三维坐标。
步骤(3)中,切片初始点的精度与步骤(2)中设定的网格密度有直接关系,网格加
密则初始点精度提高,但计算量会成倍增加,步骤(4)会对切片初始点进行再处理,步骤(3)
得到的切片初始点的误差控制在模型分层厚度的50%以内,选出最接近的切片初始点后,
其他的网格点根据其z坐标值分层存储,用于后续处理。
在步骤(4)中,切片数据允许误差e根据实际应用自行设定大小。
步骤(4)中,对超出切片数据允许误差e的切片初始点沿最速变化方向进行迭代计
算的具体方法为:
(4-1)对于当前初始点p0(s0,t0),根据微分几何性质计算s和t两个方向的切向量,
公式如下:
![]()
![]()
得到当前切片初始点在欧式空间的两个切向量:
ss=(xs,ys,zs),st=(xt,yt,zt)
(4-2)根据步骤(4-1)中得到的两个切向量计算得到一个欧式空间z坐标为0的向
量z0,计算公式为:
z0=-ztss+zsst=(-ztxs+zsxt,-ztys+zsyt,0)
(4-3)由当前初始点向切片平面生成一个差向量Δz,其大小等于当前初始点z坐
标与理论切片平面高度的差值,方向为最速变化方向,利用s方向和t方向的切向量ss、st可
将差向量表示为:
Δz=Δsss+Δtst
其中,Δs为参数域坐标在s方向的变化量,Δt为参数域坐标在t方向的变化量,且
Δs和Δt满足以下关系:
![]()
其中,zs为s方向切向量ss的z坐标,zt为t方向切向量st的z坐标;
(4-4)通过步骤(4-3)中的两个公式,求出Δs和Δt,则新的初始点表示为:
p′0(s0+Δs,t0+Δt)
(4-5)判断新的初始点p′0的误差是否小于设定的允许误差e,如否,将初始点p′0作
为步骤(4-1)中的当前初始点,执行步骤(4-1)~步骤(4-5),若是,结束循环。
在步骤(4-2)中,向量z0代表z坐标保持不变的方向,与该方向垂直的方向即为z坐
标变化最快的最速变化方向。
步骤5中,以每层得到的切片初始点作为追踪起点,以由切向量ss和st合成且z坐标
为0的向量z0作为追踪方向,进行切片点追踪,具体方法为:
(5-1)将欧式空间向量z0转换成参数域向量z′0:
![]()
(5-2)由切片初始点追踪得到的新切片点表示为:
![]()
其中,k表示追踪步长因子,用于控制单次追踪步长;
(5-3)判断追踪得到的切片点误差是否小于设定的允许误差e,若是,执行步骤(5-
4),若否,对追踪得到的切片点进行优化,优化步骤为:
(5-3-1)对于追踪得到的切片点p(s,t),根据微分几何性质计算s和t两个方向的
切向量,公式如下:
![]()
![]()
得到追踪得到的切片点在欧式空间的两个切向量:
ss=(xs,ys,zs),st=(xt,yt,zt)
(5-3-2)根据步骤(5-3-1)中得到的两个切向量计算得到一个欧式空间z坐标为0
的向量z0,计算公式为:
z0=-ztss+zsst=(-ztxs+zsxt,-ztys+zsyt,0)
(5-3-3)由当前追踪得到的切片点向切片平面生成一个差向量Δz,其大小等于当
前追踪得到的切片点z坐标与理论切片平面高度的差值,方向为最速变化方向,利用s和t方
向的切向量ss、st可将差向量表示为:
Δz=Δsss+Δtst
其中,Δs为参数域坐标在s方向的变化量,Δt为参数域坐标在t方向的变化量,且
Δs和Δt满足以下关系:
![]()
其中,zs为s方向切向量ss的z坐标,zt为t方向切向量st的z坐标;
(5-3-4)通过步骤(5-3-3)中的两个公式,求出Δs和Δt,则新的切片点可表示为:
p′(s+Δs,t+Δt)
(5-3-5)判断新的切片点p′的误差是否小于设定的允许误差e,如否,将初始点p′
作为步骤(5-3-1)中的当前追踪得到的切片点,执行步骤(5-3-1)~步骤(5-3-5),若是,结
束循环;
(5-4)计算切片初始点和第一个追踪得到切片点的距离,保存为r;
(5-5)计算后续每个追踪得到的切片点与切片初始点的距离d,并判断该距离d是
否大于r,如是,则继续追踪,如否,则停止追踪,得到所有误差小于切片数据允许误差e的切
片点。
在步骤(5-1)中,由于切片点追踪是在参数域进行的,因此需要将将欧式空间向量
z0转换成参数域向量z′0。
在步骤(5-3)中,采用步骤(4)中的方法对追踪得到的切片点进行优化是为了保证
每个追踪切片点都满足精度要求。
此外,步骤(5)中同一个切片平面内可能存在多个切片轮廓,进行多区域追踪的具
体方法是:
(5-1′)由每层的切片初始点追踪得到一个封闭的二维环;
(5-2′)利用每层非切片初始点的网格点进行判断,计算同一层网格点与已追踪到
的每个切片点的距离;
(5-3′)判断这些距离的最小值是否大于预设值,若是,执行步骤(5-4′),若否,结
束追踪;
(5-4′)将距离最小值大于预设值的网格点作为初始切片点,进行追踪其他轮廓
环。
在步骤(5-3′)中,这些距离的最小值小于或等于预设值,说明当前层只有一个轮
廓环,并结束追踪。
本发明基于T样条曲面的三维打印切片方法,具有的有益效果为:
(1)对T样条曲面的直接切片,避免了原始CAD模型向STL模型转化过程带来的精度
损失以及庞大的数据量。
(2)根据T样条曲面微分几何性质进行相关迭代、追踪的算法设计,处理速度快,计
算结果精确可靠。
(3)能够有效实现复杂曲面模型的切片处理,进而实现模型的精确打印制造。
附图说明
图1为本发明基于T样条曲面的三维打印切片方法流程图;
图2网格示意图:(a)为参数域网格示意图,(b)为与参数域网格对应的欧式空间网
格示意图;
图3为切片初始点获取方法示意图;
图4为切片点迭代原理示意图;
图5为切片点追踪原理示意图;
图6为实施例1的T样条曲面模型;
图7为实施例1对T样条曲面实际切片结果;
图8为实施例2的T样条曲面模型;
图9为实施例2对T样条曲面多区域切片的结果;
图10为实施例2切片结果的左视图;
图11为实施例2切片结果的俯视图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案
进行详细说明。
本发明一种基于T样条曲面的三维打印切片方法的流程图如图1所示,具体实施步
骤如下:
步骤101:输入待处理的T样条曲面模型文件、切片层厚d以及切片数据允许误差e。
T样条曲面文件应包含曲面参数空间网格点信息以及欧式空间控制顶点信息。目
前应用最多的是
公司开发的T-spline Mesh File(TSM)文件,包含详细的T样条
曲面相关数据。T样条曲面可以在FUSION360TM软件中进行设计建模并保存为TSM文件。切片
层厚需要根据打印设备确定,数据允许误差设置为0.001mm。
步骤102:在T样条曲面参数域生成一张均匀分布的参数网格,计算出其对应的欧
式空间网格。
对于每个参数域网格点(s,t),根据Sederberg提出的射线法找到当前网格点的控
制域及网格点矢量,参见(Sederberg T W,Zheng J,Bakenov A,et al.T-splines and T-NURCCs
[C]//ACM transactions on graphics(TOG).ACM,2003,22(3):477-484.)。如图2所示,利
用网格点矢量计算出每个控制顶点对应的混合函数,代入公式
即
可计算出参数域网格对应的欧式空间网格。
步骤103:根据模型数据文件大小和模型分层厚度确定每个层片的高度值。
如图3所示,在T样条曲面301上,根据欧式空间网格和切片平面302,选择切平面z
方向最近的点303作为切片初始点。
步骤104:判断每层对应的切片初始点误差是否小于设定的数据允许误差e,对不
满足精度要求的切片初始点利用最速变化方向进行迭代:
如图4所示,步骤104-1:T样条曲面401上的一个切片初始点404,表示为p0(s0,t0),
与切片平面402的z方向距离超出允许误差。根据计算公式:
![]()
![]()
得到切片初始点404在欧式空间的两个切向量:
ss=(xs,ys,zs),st=(xt,yt,zt)
步骤104-2:根据这两个切向量计算得到一个欧式空间z坐标为0的向量z0,计算公
式为:
z0=-ztss+zsst=(-ztxs+zsxt,-ztys+zsyt,0)
与z0方向垂直的方向为z坐标变化最快的最速变化方向;
步骤104-3:由当前初始点向切片平面生成一个差向量Δz,其大小等于点z坐标与
理论切片平面高度的差值,方向为最速变化方向,利用s方向和t方向的切向量ss、st可将差
向量表示为:
Δz=Δsss+Δtst
其中,Δs为参数域坐标在s方向的变化量,Δt为参数域坐标在t方向的变化量,且
Δs和Δt满足以下关系:
![]()
其中,zs为s方向切向量ss的z坐标,zt为t方向切向量st的z坐标;
步骤104-4:通过步骤104-3中的两个公式,求出Δs和Δt,则新的初始点405表示
为:
p′0(s0+Δs,t0+Δt)
步骤104-5:判断新的初始点p′0的误差是否小于设定的允许误差e,如否,将初始
点p′0作为步骤104-1中的当前初始点,执行步骤104-1~步骤步骤104-5,若是,结束循环。
步骤105:如图5所示的T样条曲面501和切片平面502,以切片初始点503为追踪起
点,追踪方向为其切向量ss和st合成的z坐标为0的向量z0=(-ztxs+zsxt,-ztys+zsyt,0),进行
切片点追踪,具体方法为:
步骤105-1:将欧式空间向量z0转换成参数域向量z′0:
![]()
由于切片点追踪是在参数域进行的,因此需要将将欧式空间向量z0转换成参数域
向量z′0;
步骤105-2:由切片初始点追踪得到的新切片点可表示为:
![]()
其中,k表示追踪步长因子,用于控制单次追踪步长;
步骤105-3:判断追踪得到的切片点误差是否小于设定的允许误差e,若否,按照步
骤104中的方法对追踪得到的切片点进行优化,直到其误差小于设定的允许误差e为止;
如图5所示的切片点504,误差大于设定允许值,利用最速变化方向迭代修正后再
继续追踪,保证每个追踪切片点都满足精度要求。
步骤105-4:计算切片初始点和第一个追踪得到切片点的距离,保存为r;
步骤105-5:计算后续每个追踪得到的切片点与切片初始点的距离d,并判断该距
离d是否大于r,如是,则继续追踪,如否,则停止追踪,得到所有误差小于切片数据允许误差
e的切片点。
此外,步骤105中同一个切片平面内可能存在多个切片轮廓,进行多区域追踪的具
体方法是:
步骤105-1′:由每层的切片初始点追踪得到一个封闭的二维环;
步骤105-2′:利用每层非切片初始点的网格点进行判断,计算同一层网格点与已
追踪到的每个切片点的距离;
步骤105-3′:判断这些距离的最小值是否大于预设值,若是,执行步骤(d),若否,
说明当前层只有一个轮廓环,并结束追踪;
步骤105-4′:将距离最小值大于预设值的网格点作为初始切片点,进行追踪其他
轮廓环。
步骤106:连接每层得到的切片点,输出切片轮廓。
本发明的两个典型实施实例如下:
实施例1
选取一个拥有自由曲面的T样条模型,如图6所示。该曲面的特殊之处在于拥有复
杂的自由曲面外表,但由于T样条建模理论的优势,仅用较少的控制顶点就表达出了复杂的
模型表面。利用TSM文件表达该T样条模型,文件大小29KB;利用STL文件表达该模型,文件大
小5072KB。设定切片层厚0.1mm,数据允许误差0.001mm。
图7显示了实施例1的T样条曲面的切片结果及局部放大效果,可以清晰地看出T样
条曲面按照设定的分层厚度实现了分层切片,说明了本发明方法的有效性与准确性。
实施例2
选取的待切片T样条曲面如图8所示。该曲面的特殊之处在于在同一高度拥有多个
切片轮廓环,需要利用步骤105的多区域轮廓切片方法实现切片。利用TSM文件表达该T样条
模型,文件大小3KB;利用STL表达该模型,文件大小2816KB。为清晰显示切片效果,本实例选
用1.0mm切片层厚,数据允许误差0.001mm。
图9显示了多区域T样条曲面切片的效果,图10为切片轮廓的左视图,图11为切片
轮廓的俯视图。可以清晰地看出,利用本发明提出的T样条曲面多区域切片方法,可以有效
地实现同一高度T样条曲面多轮廓的识别和切片功能,说明了本发明方法在处理多区域切
片方面的有效性。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的一般技术人
员来说,本发明还可以有各种更改和变化。在不脱离本发明原理的前提下,所作的任何修
改、等同替换、改进等,均应包含在本发明的保护范围之内。