成 建 群
(蘇州健雄職業(yè)技術(shù)學(xué)院中德工程學(xué)院 江蘇 太倉 215411)
銑削仿真就是利用計算機模擬銑刀沿著銑削軌跡與被加工工件(毛坯)之間的相對運動,實現(xiàn)對加工中銑刀移動、銑削等過程的監(jiān)控和驗證[1]。當(dāng)前銑削仿真中幾何模型主要有線框模型、圖像空間模型、實體模型和離散矢量模型[2]。實體模型方法用數(shù)學(xué)模型描述幾何體,保留了全部的數(shù)據(jù),計算結(jié)果精確可控,可以進行旋轉(zhuǎn)、縮放等幾何變換和數(shù)據(jù)分析測量。但是實體模型在銑削仿真中求交計算量大,仿真速度慢。留量幾何模型基于實體模型方法,以網(wǎng)格來模擬工件表面,通過網(wǎng)格Z方向(或矢量方向)的值來表示工件上留存的材料。仿真時,通過修改網(wǎng)格節(jié)點的Z值來模擬工件表面的變化,簡稱為Z-Map方法。該方法在車削[3]、磨削[4]和銑削[5-6]等仿真中得到了廣泛的應(yīng)用。
在留量幾何模型中網(wǎng)絡(luò)數(shù)量的多少直接關(guān)系到計算量的大小,占用內(nèi)存的多少,響應(yīng)速度的快慢。而實時仿真要求計算速度快、響應(yīng)及時,同時占有內(nèi)存空間小。在銑削仿真時,傳統(tǒng)研究中絕大多數(shù)首先對工件整體進行網(wǎng)格劃分,然后進行仿真計算。本文提出一種二叉樹的網(wǎng)格表示方法,僅僅對需要銑削仿真的區(qū)域進行網(wǎng)格細(xì)分,快速響應(yīng)仿真過程。
三角形網(wǎng)格具有模型簡單、仿真精度可控、實時性好、視角連續(xù)可變等優(yōu)點,在加工仿真、虛擬加工領(lǐng)域應(yīng)用廣泛[7-9]。這里討論的網(wǎng)格均是三角形網(wǎng)格。為了節(jié)省內(nèi)存空間,3D模型用頂點和三角形表示(n個頂點,m個三角形),即:
(1)
三角形的頂點順序表示三角面的朝外法向。三角形中僅保存頂點的序號,第k+1個三角形頂點為Triangles[3k]、Triangles[3k+1]、Triangles[3k+2]。三角形的邊按頂點順序分別標(biāo)記為0、1、2。同時邊分為父邊(P)、左邊(L)、右邊(R),與頂點順序一致,如圖1所示。每一個三角形有且僅有一個父邊、左邊、右邊。
圖1 頂點與邊關(guān)系
三角形作為二叉樹的節(jié)點,左邊與二叉樹左節(jié)點的父邊共邊,右邊與二叉樹右節(jié)點的父邊共邊。如圖2所示,三角形1左節(jié)點為三角形2,右節(jié)點為三角形3。進一步可以看出,三角形1的頂點序號為Triangles[0]、Triangles[1]、Triangles[2],三角形2的頂點序號為Triangles[3]、Triangles[4]、Triangles[5],三角形3的頂點序號為Triangles[6]、Triangles[7]、Triangles[8]。
圖2 二叉樹構(gòu)成
經(jīng)以上分析,m個三角形構(gòu)成的3D模型可以表示為一個由m個節(jié)點構(gòu)成的二叉樹,每個節(jié)點代表一個三角形,二叉樹的節(jié)點關(guān)系表示了三角形的共邊關(guān)系,即:
(2)
創(chuàng)建二叉樹網(wǎng)格時,原來所有的三角形構(gòu)成了一個三角形庫(Triangles)。在三角形庫中任選擇一個三角形作為起始三角形,以該三角形任一條邊為父邊,并確定左邊和右邊,得到樹節(jié)點庫(TreeNodes)的第一個樹節(jié)點。尋找與左邊、右邊共邊的另外三角形,該共邊為父邊。再從以此為父邊的新三角形繼續(xù)遍歷查找,直到所有的三角形均查找完成,最終可得到完整的樹節(jié)點庫,即完成二叉樹網(wǎng)格的創(chuàng)建。處理流程如圖3所示。立方體三角形網(wǎng)格按流程圖可以得到如圖4所示結(jié)果,左側(cè)為立方體的網(wǎng)格及三角形標(biāo)識,右側(cè)為該立方體網(wǎng)格的二叉樹。
圖3 二叉樹創(chuàng)建流程
圖4 立方體網(wǎng)格的二叉樹
在銑削仿真中網(wǎng)格隨銑削區(qū)域進行細(xì)分,首先就是要對網(wǎng)格單元劃分。相鄰的網(wǎng)格單元劃分,取公共邊中點,原來的兩個三角形劃分為四個三角形,產(chǎn)生一個新的頂點。在網(wǎng)格二叉樹中,相鄰網(wǎng)格有兩種關(guān)系:父子共邊網(wǎng)格和無父子共邊網(wǎng)格。
(1) 父子共邊網(wǎng)格。如圖4所示,網(wǎng)格三角形1和2相鄰,用虛線劃分,生成網(wǎng)格三角形1、2、3、4。網(wǎng)格三角形1的左邊或右邊與網(wǎng)格三角形2的父邊一致。因共邊的端點次序可能不一致,構(gòu)成四種情況??梢砸勒請D5中結(jié)構(gòu)關(guān)系,修改網(wǎng)格二叉樹數(shù)據(jù)。處理流程如圖6所示。
圖5 父子共邊網(wǎng)格劃分
圖6 父子共邊網(wǎng)格處理流程
(2) 無父子共邊網(wǎng)格。無父子共邊網(wǎng)格處理流程與父子共邊網(wǎng)格處理流程一致,但無父子關(guān)系共邊的三角形因兩個三角形共左邊與共右邊、頂點次序相同與相反共有八種情況(如圖7所示)。劃分網(wǎng)格后,三角形劃分后的二叉樹的結(jié)構(gòu)僅僅與公共邊為左邊還是右邊有關(guān),不妨稱為左連接、右連接。三角形1劃分后變?yōu)?、3,三角形2劃分后變?yōu)?、4,并且1、3為父子關(guān)系,2、4為父子關(guān)系,可以得到如表1所示的關(guān)系。
圖7 無父子共邊網(wǎng)格劃分
表1 無父子共邊網(wǎng)格劃分
如圖8所示,網(wǎng)格中n1、n2的公共邊劃分后產(chǎn)生n1、n2、n3、n4,為了表述方便,不妨記原n1為N1。二叉樹節(jié)點N1進行劃分生成n3,n1與n2共邊,n3與n4共邊,從圖8不難看出對于左連接(僅僅需要考慮n1、n3的關(guān)系),左邊為公共邊,n3的父節(jié)點為n1,n3的左節(jié)點為n4,n3的右節(jié)點為原n1的右節(jié)點。即得到以下關(guān)系:
(3)
(a) 左連接 (b) 右連接圖8 左右連接關(guān)系
原n1(N1)的右節(jié)點與N1的關(guān)系需要修改為與n3的關(guān)系。若原n1的右節(jié)點的父節(jié)點為原n1,則原n1的右節(jié)點的父節(jié)點為n3。否則,若原n1的右節(jié)點的左節(jié)點為原n1,則原n1的右節(jié)點的左節(jié)點為n3。否則,若原n1的右節(jié)點的右節(jié)點為原n1,則原n1的右節(jié)點的右節(jié)點為n3。即得到以下關(guān)系:
(4)
另外,n1的父節(jié)點保持不變,n1的右節(jié)點為n3,n1的左節(jié)點為n2。即得到以下關(guān)系:
(5)
從圖8不難看出,對于右連接(僅僅需要考慮n1、n3的關(guān)系),右邊為公共邊,n3的父節(jié)點為n1,n1右節(jié)點為n4,n3的左節(jié)點為原n1的左節(jié)點。即得到以下關(guān)系:
(6)
原n1(N1)的左節(jié)點與N1的關(guān)系需要修改為與n3的關(guān)系。若原n1(N1)的左節(jié)點的父節(jié)點為n1,則原n1的左節(jié)點的父節(jié)點為n3。否則,若原n1的左節(jié)點的左節(jié)點為原n1,則原n1的左節(jié)點的左節(jié)點為n3。否則,若原n1的左節(jié)點的右節(jié)點為原n1,則原n1的左節(jié)點的右節(jié)點為n3。即得到以下關(guān)系:
(7)
另外,n1的父節(jié)點保持不變,n1的左節(jié)點為n3,n1的右節(jié)點為n2。即得到以下關(guān)系:
(8)
根據(jù)以上分析,可以完成左右連接的處理函數(shù),分別記為:
左右連接形式參數(shù)序列均為n1、n2、n3、n4,表示兩個相鄰節(jié)點劃分后產(chǎn)生四個節(jié)點,并且節(jié)點n1劃分后產(chǎn)生n3,且n1與n2相鄰,n3與n4相鄰。
在應(yīng)用表1關(guān)系時,以表1序號3為例,節(jié)點n1、n2進行劃分產(chǎn)生n3、n4,n1的左邊與n2的右邊共邊,頂點次序相同。構(gòu)造二叉樹關(guān)系時,n1、n3關(guān)系為左連接,參數(shù)為n1、n4、n3、n2,即相當(dāng)于n1劃分后產(chǎn)生n3,且n1與n4相鄰,n3與n2相鄰。調(diào)用過程如下:
LeftLink(n1,n4,n3,n2)
n2、n4關(guān)系為右連接,參數(shù)為n2、n3、n4、n1,即相當(dāng)于n2劃分后產(chǎn)生n4,且n2與n3相鄰,n4與n1相鄰。調(diào)用過程如下:
RightLink(n2,n3,n4,n1)
這樣處理大大簡化了程序判斷,提高了處理效率,節(jié)省了響應(yīng)時間。
在銑削仿真時,工件表面需要變化的網(wǎng)格區(qū)域是刀具運動在網(wǎng)格表面的投影區(qū)域。為了分析方便,不妨設(shè)投影區(qū)域為二維點t1、t2圍成的矩形區(qū)域。當(dāng)網(wǎng)格與本區(qū)域相交或在本區(qū)域內(nèi)就需要進行細(xì)分,直到滿足細(xì)分最大面積的要求。
因切削區(qū)域是在工件表面的投影是連續(xù)的,所以從一個與切削區(qū)域相交或在切削區(qū)域內(nèi)的三角形出發(fā),通過事先構(gòu)造的二叉樹,就可以找到所有的相關(guān)三角形,并進行細(xì)分。為了不使細(xì)長三角形影響仿真效果,在切削區(qū)域內(nèi)劃分的兩個三角形的共邊必須為三角形的最長邊。在切削區(qū)域邊界處,若三角形在切削區(qū)域外或者三角形在切削區(qū)域上的投影面積為0,則該三角形的劃分情況不影響切削仿真,沒有細(xì)長三角形的要求,可以在非最長邊上進行劃分。區(qū)域網(wǎng)格劃分流程如圖9所示。
圖9 區(qū)域網(wǎng)格劃分流程
設(shè)銑削刀具半徑為r,刀具中心由p1沿X軸或Y軸移動到p2(與Z軸運動無關(guān)),則銑削細(xì)分網(wǎng)格區(qū)域t1、t2滿足以下關(guān)系:
(9)
但是,考慮到切削區(qū)域邊緣網(wǎng)格精度必須要將細(xì)分網(wǎng)格區(qū)域擴展一個細(xì)分網(wǎng)格單元。一般情況下,細(xì)分網(wǎng)格單元邊長l與最大細(xì)分網(wǎng)格最大面積S滿足式(10)。l過大造成細(xì)分網(wǎng)格浪費,過小會導(dǎo)致切削區(qū)域邊緣網(wǎng)格拉扯明顯,仿真效果差。
(10)
銑削細(xì)分網(wǎng)格區(qū)域頂點t1、t2修正如下:
(11)
本文在Windows 10環(huán)境下,利用Unity3D實現(xiàn)了3D模型基于二叉樹的網(wǎng)格表示方法。圖10是對單位正方體上t1(0,0)、t2(0.2,0.5)矩形區(qū)域內(nèi)網(wǎng)格進行劃分的效果。可以看出,矩形區(qū)域內(nèi)網(wǎng)格劃分均勻,區(qū)域外網(wǎng)格數(shù)量少,達到了預(yù)期的效果。
圖10 區(qū)域網(wǎng)格的劃分
進一步,基于Z-Map方法仿真和本文的網(wǎng)格表示方法可以仿真球頭刀切削立方體毛坯,驗證本文方法的性能。不妨假設(shè)工件為邊長100的立方體,頂點坐標(biāo)為(0,0,0)、(0,100,0)、(100,0,0)、(100,100,0)、(0,0,100)、(0,100,100)、(100,0,100)、(100,100,100),刀具垂直于工件表面(xoy平面)銑削工件,刀具球頭半徑為2,刀具球心由點(10,3,95)切削到點(10,40,90)。利用本文方法進行區(qū)域網(wǎng)格劃分和全域網(wǎng)格劃分,測試數(shù)據(jù)如表2所示。圖11是單元網(wǎng)格最大面積是1時的區(qū)域網(wǎng)格與全部網(wǎng)格的仿真對比圖。
表2 區(qū)域網(wǎng)格仿真性能比較數(shù)據(jù)
(a) (b)圖11 區(qū)域網(wǎng)格與全域網(wǎng)格仿真
頂點數(shù)量和三角形數(shù)量直接與占用內(nèi)存成正比,頂點數(shù)量和三角形數(shù)量越大占用內(nèi)存越多。用Z-Map方法銑削仿真時,模型上每一個頂點均需要進行判斷或調(diào)整Z值,所以頂點數(shù)量直接關(guān)系到系統(tǒng)響應(yīng)時間。單元網(wǎng)格最大面積越小,仿真精度越高,顯示越精細(xì)。從表2的數(shù)據(jù)可以看出,全域網(wǎng)格仿真響應(yīng)時間對單元網(wǎng)格面積大小非常敏感,采用區(qū)域網(wǎng)格仿真有明顯優(yōu)勢。圖12-圖14為模具仿真加工實例。
圖14 圓底槽仿真加工
本文提出一種3D模型的網(wǎng)格表示方法,用二叉樹結(jié)構(gòu)表示三角形網(wǎng)格邊的組成關(guān)系,快速實現(xiàn)銑削區(qū)域網(wǎng)格劃分,并基于Unity3D平臺實現(xiàn)了Z-Map方法銑削仿真。結(jié)果表明,用二叉樹結(jié)構(gòu)表示區(qū)域網(wǎng)格劃分相較于全域網(wǎng)格能夠節(jié)省內(nèi)存資源,加快仿真響應(yīng),提高仿真精度,能夠應(yīng)用于銑削加工仿真過程,滿足實時性要求,有較高的應(yīng)用價值。