陳鴻壽
(福州外語外貿(mào)學院藝術(shù)與設(shè)計學院,福建 福州 350202)
3D打印由于其自身特性,能更好滿足不斷提升的機電產(chǎn)品生產(chǎn)標準[1]。但這種方法生產(chǎn)的產(chǎn)品質(zhì)量由于STL模型分層效果不佳原因,依然會受到顯著影響。為解決這個問題,技術(shù)專家們開展過大量研究。田仁強學者團隊提出了一種應用于增材制造中STL模型三角面片法向量的自動分層算法,測試實驗結(jié)果顯示,經(jīng)過該算法處理后,STL模型中輪廓變化明顯的區(qū)域分層更為精細[2]。韓興國等人提出一種針對具有復雜曲面的零件的截面輪廓生成算法,仿真測試結(jié)果表明,按照該算法處理后的模型生產(chǎn)的金屬葉片精度更高[3]。可見,為解決這類問題開展過大量研究,但分析STL文件標準下的模型網(wǎng)格面片信息間聯(lián)系并以此為基礎(chǔ)改進分層方法的研究還很少見,而這種改進思路也可能使得3D打印的產(chǎn)品質(zhì)量得到大幅提升。
當前傳統(tǒng)的分層算法在處理復雜結(jié)構(gòu)的3D大于模型上處理效率較為低下,因此現(xiàn)在提出基于網(wǎng)格面片環(huán)結(jié)構(gòu)的改進STL模型分層算法[4-5]。下面先設(shè)計改進算法中的網(wǎng)格面片分塊方法。以長方體為例,構(gòu)建出STL模型適用分層坐標系,見圖1。
圖1 STL模型分層坐標系示意圖
圖1中Ω代表分層平面,Pi(xi,yi,zi)(i∈[1,8])代表待分層的長方體的各頂點。根據(jù)該坐標系可求得包圍盒在z向坐標軸的高度z。而且根據(jù)精度要求,還能確定模型的分層厚度di=zstroke/n、分層層數(shù)n=ceil(zstroke/di),其中ceil()為下取整函數(shù),以及第i層的切片平面高度zi,(i=1,2,…,n)。根據(jù)上述方法,同樣可以求出包圍盒在x,y方向的長度xstroke,ystroke,至此分層的行程規(guī)劃完成。凸包圍盒的底面被作為初始的切片平面Ω1,且其中含有P2,P4,P6三個頂點,因此Ω1可用式(1)方程描述。
(1)
使用以上方法,可以創(chuàng)建出STL模型的全部切片平面,從而獲得切片平面集Ω。STL模型的三角網(wǎng)格面片是沿著分層方向排列的,經(jīng)過同步分塊處理的STL模型網(wǎng)格面片見圖2。
圖2 同步分塊處理后的網(wǎng)格面片示意圖
圖2中Di(i=1,2,…,n-1)意為被切片平面分割出的各區(qū)域,切片平面Ωi的高度值為zi。同步分快處理后的STL模型三角網(wǎng)格面片主要由兩部分組成。第一步部分用于判斷每個三角面片的所屬區(qū)域,第二部分則用于處理三角面片與多個區(qū)塊切片平面相交的情況。遍歷完所有三角面片后,即可確定每一切片平面的相交網(wǎng)絡(luò)面片集。
傳統(tǒng)的STL模型不能很好地表達相鄰三角面片的鄰接關(guān)系,所以有必要重構(gòu)三角面片之間的鄰接拓撲關(guān)系[6]。假設(shè)模型中存在頂點v,其鄰接頂點被稱為該頂點的環(huán)鄰域點,它的n環(huán)鄰域點可表示為rg(v,n),全部的環(huán)鄰域頂點為Nn(v)或{rg(v,i)}0≤i≤n環(huán)繞面片頂點v的面片表示為rg(f,n)。三角網(wǎng)格化后的STL模型中,每條邊至多可屬于兩個面,且任意相鄰鄰接面最多可以有一條公共邊[7]。將平面多邊形環(huán)頂點依次連接,見構(gòu)成一種特別的拓撲結(jié)構(gòu),其中首尾頂點重合如圖3所示。
建立網(wǎng)格面片環(huán)過程中,首先需要建立STL模型中三角網(wǎng)格面片集之間的拓撲關(guān)系,將某面片作為初始面片,查找它的1環(huán)領(lǐng)域鄰接面片,并從中選出一個面片作為構(gòu)建面片環(huán)的遞歸鄰接面片,再選出后者的另外一個鄰接面片作為后續(xù)的下一個構(gòu)建面片并重復以上操作,直到構(gòu)建出完整的面片環(huán)。完成面片環(huán)構(gòu)建后,下一步是確定面片的所屬區(qū)域,從而獲得它們的相交面片集Mi(i=1,2,…,n)。但由于某些面片在分層方向存在zj,h=zj,max-zj,min≥2di關(guān)系,它們會與多個切片平面相交,導致相鄰切片平面被存儲與相同面片的情況出現(xiàn)。對于一個所有切片平面存儲完成的面片集Mi,構(gòu)建出面片環(huán)后,需要計算出它的對應哈希鏈表,哈希表的散列算法見公式(2)。
(2)
式(2)中z1,zn,zj分別代表最小層、最高層、第j層的切片平面的高度值。構(gòu)建網(wǎng)絡(luò)面片環(huán)哈希鏈表且獲取相鄰三角面片公共鄰接邊的步驟如下。首先獲取Qi的Mi并按面片排序?qū)ζ渚幪枴TO(shè)定初始面片并記錄到哈希鏈表Mi,1中,通過解碼獲得反向半邊的編碼,并求出它的raj(Mi,1,1)。從raj(Mi,1,1)中選出一鄰接面片賦值給Loopi,1,并記錄到哈希鏈表中,符號為Mi,2。同時還需記錄半邊與反向半邊的公共鄰接邊li,1,1。下一步是遞歸查詢當前面片,然后將其放置于Loopi,1中,并以Mi,j(j=1,2,...,n)標記,直到網(wǎng)格面片環(huán)構(gòu)建完畢。
圖3 三角網(wǎng)格化的STL模型面片環(huán)拓撲結(jié)構(gòu)
切片平面與三角面片的交點同時也是切片平面與STL模型的交點,且相交邊均不低于兩個[8]。在求這些交點時,只需要求解一次各切片平面相交中鄰接邊與切片平面交點。從而提高求解效率。切片平面Qi與和切片平面相交的鄰接邊li,j,k的交點坐標可按公式(3)求得。
(3)
式(3)中(x1,y1,z1)、(x2,y2,z2)分別為面片的兩頂點v1,v2在空間直角坐標系中坐標值。觀察式(2)可知,由于Qi的z軸數(shù)值zi與交點vp的z軸數(shù)值zp相等,就能計算出交點vp在x,y軸上的數(shù)值,具體的計算方法見式(4)。
(4)
至此基于網(wǎng)格面片環(huán)的STL模型改進分層切片算法構(gòu)建完成,其運算步驟見圖4。
圖4 STL模型改進分層切片算法流程圖
如圖4所示,優(yōu)化后的機械零件STL模型輸入算法后,需要首先確定算法的運行參數(shù),即分層厚度或分層層數(shù),然后將三角面片分塊化,獲得切片平面的相交三角形網(wǎng)格面片集,并基于當前切片平面的相交面片集鄰接拓撲關(guān)系,構(gòu)建出網(wǎng)格面片環(huán),并將其存儲到哈希鏈表中。所有切面均完成以上操作后,再構(gòu)建出相鄰面片的公共鄰接邊,然后按照計算出的公共鄰接邊與切片平面交點,獲得所有切片平面的截面輪廓交點集合,最后連接各切片平面的截面輪廓點,即可得到分層處理后的由多個切片平面組成的平面界面輪廓多邊形環(huán)。
此次研究中選用關(guān)節(jié)內(nèi)球作為3D打印的對象。文獻[9],文獻[10],文獻[11]設(shè)計的機械零件STL模型分層算法具有較大的實用價值,將其作為對比研究設(shè)計方法性能的對比算法。測試中選用經(jīng)過各分層算法處理后的模型打印實體的輪廓算數(shù)平均偏差和輪廓最大高度,以及分層切片的耗時作為評價指標。實驗結(jié)束后,使用表面粗糙度測量儀測量3D打印的機械零件表面粗糙度數(shù)值。完成實驗后,分析各算法的輪廓算術(shù)平均偏差數(shù)值,見圖5。
圖5 3D打印機械零件的輪廓算術(shù)平均偏差對比
圖5中“改進分層算法”指研究設(shè)計出的分層算法。虛線用于代表不同算法所有測點輪廓算術(shù)平均偏差值的均值,觀察圖5可知,改進分層算法輪廓算術(shù)平均偏差整體最小,其數(shù)值的均值為0.77,而文獻[9],文獻[10],文獻[11]設(shè)計算法的該指標分別為1.01,1.07,1.32。再分析各算法的輪廓最大高度數(shù)值,見圖6.
圖6 3D打印機械零件的輪廓最大高度對比
觀察圖6可知,從輪廓最大高度指標的角度來看,改進分層算法處理后的打印模型表面粗糙度依然是所有對比方法中最低的,其15號測點的輪廓最大高度值最小,為1.12.文獻[10]中的分層算法處理后的打印模型輪廓最大高度值整體最高,最大值在它的9號測點取得,為1.97。最后分析各分層算法對關(guān)節(jié)內(nèi)球STL模型進行分層切片處理的耗時數(shù)據(jù),見表1。
表1 3D打印機械零件的STL模型分層切片耗時對比
觀察表1可知,當分層厚度分別為0.10mm,0.20mm,0.30mm,0.40mm時,改進分層算法分層平均耗時與最大耗時為,6.02s,3.17s,2.45s,1.98s與8.51s,3.83s,2.99s,2.67s,比耗時表現(xiàn)次之的文獻[10]方法減少了0.52s,0.25s,0.28s,0.42s與1.34s,0.18s,0.57s,0.07s。
針對傳統(tǒng)生產(chǎn)復雜機械零件過程中材料加工精度不足、加工成本高的問題。研究對3D打印方法中的STL模型分層切片算法進行優(yōu)化設(shè)計。實驗數(shù)據(jù)顯示,研究設(shè)計出的分層算法輪廓算術(shù)平均偏差整體最小,其數(shù)值的均值為0.77,而文獻[9],文獻[10],文獻[11]設(shè)計算法的該指標分別為1.01,1.07,1.32。整體上研究設(shè)計的改進分層算法處理后的打印模型表明粗糙度依然是所有對比方法中最低的。而且當分層厚度分別為0.10mm,0.20mm,0.30mm,0.40mm時,改進分層算法分層平均耗時分別為,6.02s,3.17s,2.45s,1.98s,低于對比算法。實驗結(jié)果顯示該研究提出的改進分層切片算法切片效率更高,打印出的零件表面偏差更小,更為光滑,在生產(chǎn)高精度機械零件中具有一定的應用價值。但由于研究條件所限,研究未能選用更多復雜機械零件開展實驗,這也是后續(xù)實驗所需注意的。