陳智淵
(青海師范大學(xué)民族師范學(xué)院,青海 海南藏族自治州 813000)
車削軸類零件的輪廓軌跡提取與真實感顯示
陳智淵
(青海師范大學(xué)民族師范學(xué)院,青海 海南藏族自治州 813000)
圖形數(shù)據(jù)信息的可視化一直是計算機圖形學(xué)與可視化領(lǐng)域研究的重點內(nèi)容,圖形數(shù)據(jù)的挖掘、提取與顯示都需要借助計算機圖形學(xué)的知識來完成;本研究重點探討了計算機圖形真實感處理技術(shù)在計算機輔助數(shù)控車削自動編程加工系統(tǒng)中的應(yīng)用,通過運用計算機圖形處理技術(shù)編程提取DXF軸類零件的輪廓軌跡曲線,采用曲面構(gòu)造算法作數(shù)據(jù)處理,生成零件真實感所需的三維數(shù)據(jù)模型,結(jié)合OpenGL內(nèi)容對三維數(shù)據(jù)模型進行實體渲染,交互實現(xiàn)了數(shù)據(jù)模型的光照、材質(zhì)、霧化等功能,通過旋轉(zhuǎn)、透視變換,零件設(shè)計者可真實地觀測到零件內(nèi)部結(jié)構(gòu),從整體上對所設(shè)計的零件結(jié)構(gòu)進行直觀的認識;實驗結(jié)果表明所開發(fā)的圖形真實感程序系統(tǒng)能夠高效的實現(xiàn)車削軸類件的渲染效果,具有較高的輪廓數(shù)據(jù)提取效率和真實感渲染能力。
可視化;軸類零件;數(shù)據(jù)處理;真實感;OpenGL
隨著交互式計算機圖形學(xué)的不斷發(fā)展,圖形圖像處理技術(shù)已廣泛應(yīng)用于計算機輔助設(shè)計、機械加工動畫和仿真、科學(xué)計算等諸多領(lǐng)域并發(fā)揮重要作用[1-3]。通常,計算機圖形圖像處理技術(shù)是基于CAD/CAM等軟件,通過運用計算機圖形學(xué)知識,在計算機上完成圖形圖像的設(shè)計、修改與數(shù)據(jù)存儲,并將數(shù)據(jù)信息轉(zhuǎn)化為圖形或圖像在屏幕上進行交互處理與顯示的一門綜合性技術(shù)[4]?,F(xiàn)在已經(jīng)開發(fā)了許多硬件設(shè)備和數(shù)據(jù)處理算法來改善生成圖形的效率、真實感和速度。當(dāng)前,計算機圖形學(xué)的趨勢是將更多的物理原理融合到三維圖形算法中,更好地模擬物體和真實環(huán)境之間的復(fù)雜交互[5-6]。
在機械零件的實際加工中,軸類零件一直是車削和鏜削常用的加工件,計算機輔助車削、鏜削加工系統(tǒng)的主要工作也都是圍繞軸類零件進行的。通常,文件圖形是依據(jù)自定義的專有格式完成數(shù)據(jù)存儲的,整個存儲過程并沒有一個通用的數(shù)據(jù)格式規(guī)范。各個軟件自定義數(shù)據(jù)結(jié)構(gòu)和文件的儲存格式,如UG的PRT格式、 CATIA的CGR、IGS和STP格式、Pro/E的PRT格式等。雖然這些文件之間可以通過IGS和STP格式進行數(shù)據(jù)的相互轉(zhuǎn)換,以方便數(shù)據(jù)讀取與圖形顯示,但總是在數(shù)據(jù)導(dǎo)出過程中出現(xiàn)數(shù)據(jù)量過載或者數(shù)據(jù)元素大量丟失等問題[7]。相比之下,正是由于DXF文件數(shù)據(jù)結(jié)構(gòu)更為規(guī)范,數(shù)據(jù)讀取更加容易。為此,選取DXF文件作為數(shù)據(jù)源,就可方便地對圖形進行多種真實感效果處理。而要實現(xiàn)軸類件的真實感顯示,就需要構(gòu)造軸類零件。通過分析軸類件的特點可知,軸類件通常為對稱模型,且三維零件模型可由1/2的二維輪廓曲線繞軸線旋轉(zhuǎn)獲得。這樣,構(gòu)造軸類零件的實質(zhì)就是獲得軸線和母線來構(gòu)造旋轉(zhuǎn)曲面的過程。本研究就是通過程序讀取車削軸類DXF格式文件獲得零件的母線(即輪廓曲線)和軸線數(shù)據(jù)信息,利用曲面構(gòu)造算法生成三維數(shù)據(jù)模型,并通過OpenGL圖形處理技術(shù)對車削軸類件進行真實感顯示的實際應(yīng)用。其中,母線是一條連續(xù)的曲線,通過AutoCAD提供的多義線(Polyline)描述,而軸線的識別則是通過設(shè)置線型實現(xiàn)的。
DXF文件包含5段內(nèi)容信息,分別為標題段、表段、塊段、實體段和結(jié)束段[8]。這5段內(nèi)容分別對應(yīng)存放標題變量、表信息、塊定義實體信息和實體段幾何及非幾何信息和結(jié)束標示。本質(zhì)上,DXF文件由眾多 “組碼”和“組值”構(gòu)成的“數(shù)據(jù)對”組成。這里的數(shù)據(jù)對就是通常所說的“組”。每組占兩行,組代碼在前,作為引行,表示數(shù)據(jù)類型的名稱;組值在后,作為實際內(nèi)容行,代表著具體的數(shù)據(jù)信息。兩者結(jié)合才能完整的表達一個數(shù)據(jù)的全部信息。在實際應(yīng)用中,由于DXF文件中的實體段包含零件圖形全部的幾何和插入塊信息,是數(shù)據(jù)的主要來源[9]。因此,對DXF圖形文件的處理與應(yīng)用研究,主要深入分析實體段的圖元數(shù)據(jù)信息即可。
實體段的一般格式如下:
0
SECTION
2
ENTITIES
.(單獨幾何實體信息)
0
ENDSEC
其中幾何實體主要包括:POINT、CIRCLE、ARC、TRACE、SOLID、VERTEX、SEQUEND、TEXT、SHAPE、INSERT、ATTDFF、ATTRIB、VIEWPORT和3DFACE以及。由于多義線(POLYLINE)和直線(LINE)中分別存放著母線和軸線的關(guān)鍵信息,是程序讀取的關(guān)鍵環(huán)節(jié),需要進一步探討分析。直線與多義線的數(shù)據(jù)結(jié)構(gòu)見表1,直線與多義線組值組碼見表2。
表1 直線與多義線數(shù)據(jù)結(jié)構(gòu)
表2 直線與多義線組值組碼
由上述內(nèi)容可知,要獲取軸類件的三維數(shù)據(jù)模型,只需通過提取對稱的1/2二維輪廓曲線并進行繞軸旋轉(zhuǎn)構(gòu)造整個軸類件曲面即可。通常,軸類件輪廓一般由直線、圓弧等解析形式的二次曲線和有理B樣條構(gòu)成。對提取輪廓曲線的問題就轉(zhuǎn)化為如何正確表達和提取上述的這些直線、圓弧以及B樣條曲線?,F(xiàn)對輪廓的數(shù)據(jù)處理進行如下說明:1>為簡化軸類件三維數(shù)據(jù)模型,現(xiàn)只取1/2軸類零件的輪廓曲線和旋轉(zhuǎn)軸;2>需要處理的軸類零件二維輪廓曲線均由直線、圓弧構(gòu)成;3>采用直線插補的方法對B樣條曲線進行處理,將其轉(zhuǎn)化為由允許精度下多條直線段共同構(gòu)成。
另外,數(shù)據(jù)處理還需考慮如下實際問題。
(1)在實際應(yīng)用中,圖形零件有時會出現(xiàn)軸線不水平的現(xiàn)象。這時,如果直接對零件圖形輪廓進行旋轉(zhuǎn)成型,會導(dǎo)致旋轉(zhuǎn)成型的數(shù)據(jù)處理過程變得十分復(fù)雜。為此,就需要使用曲線變換算法對輪廓數(shù)據(jù)進行預(yù)處理,使軸線處于某一特定的位置(本研究取水平X軸)。該曲線變換算法的數(shù)學(xué)計算過程如下:
曲線變換如圖1所示。已知軸線起、止點和線外任一點坐標分別為(a,b)、(c,d)和(x0,y0),對軸線進行平移和回轉(zhuǎn)操作,使軸線變換為起于原點的水平線,求點P的坐標。
圖1 曲線變換
由平面變換矩陣得:
(1)
其中
(2)
(3)
解得
(4)
(2)圓弧切割問題:
圓弧切割如圖2所示。在DXF文件中,圓弧信息可用起點、終點和對應(yīng)圓弧拱度定義和描述。在進行后續(xù)橫向切割時,需要根據(jù)已知信息求出對應(yīng)圓弧的圓心坐標,相關(guān)算法介紹如下:
(5)
所以
h=l*bow
(6)
由圖中三角關(guān)系可得:
(7)
則弧線圓心坐標為:
(8)
圖2 圓弧切割
(3)直線插補處理有理B樣條曲線:
有理B樣條曲線主要用來描述具有普遍意義的解析曲線,在實際工程中已廣泛應(yīng)用。對于有理B樣條曲線的數(shù)據(jù)處理,關(guān)鍵在于提取有效分割點。本應(yīng)用程序中采用直線插補的方式,對有理B樣條曲線進行分割點插入,從而可以通過分割點組成的連續(xù)直線段高度趨近代替光滑的B樣條曲線。但在此過程中,關(guān)鍵之處在于需要判斷位置誤差是否小于允許誤差(本應(yīng)用程序允許的位置誤差為0.1 mm),否則,則不能進行上述近似替代。
曲線插補計算示意圖如圖3所示,已知P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3),L為軌跡曲線上點到插補直線段之間的最大距離,即插補誤差。當(dāng)分割點生成后,每兩個分割點之間的插補直線均要進行一次誤差計算,如果插補誤差L小于給定的允許誤差,則能采用插補直線段來替代軌跡曲線;反之,則必須通過增加分割點的數(shù)量來減少誤差,直到滿足插補誤差要求[10],最后提取滿足條件的直線段起始點坐標信息即可。
圖3 插補計算示意圖
L計算公式:
(9)
其中:
計算L的程序語句為:
l=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
(4)考慮到三維數(shù)據(jù)模型的曲面光滑度,需要設(shè)置圓弧切割密度。這里分為橫向切割和縱向切割,其中橫向切割是指在已知輪廓線上逐段均勻地分割成若干個點,把所有分割點坐標按次序存入所設(shè)置的3個二維數(shù)組x[i,j],y[i,j],z[i,j]的過程。程序中橫向分割點的個數(shù)即為橫向切割密度值,值越大,則生成的曲線輪廓就越接近于原圖形曲線輪廓,與此同時數(shù)據(jù)的計算量也會相應(yīng)增大;縱向切割要對橫向切割生成的全部點進行空間三維旋轉(zhuǎn)操作,還需對每點的圓周軌跡進行插值點的坐標計算。插值點數(shù)就是密度值大小,即縱向插值點數(shù)越多,分割越細,所生成真實感圖形橫截面越圓滑,但數(shù)據(jù)的計算量也相應(yīng)增大。由于算法原理相同,現(xiàn)主要介紹縱向切割,如下所示:
圓弧縱向切割如圖4所示。由橫向切割得到母線輪廓的全部坐標點數(shù)組x[i,j],y[i,j],z[i,j],進行縱向切割計算時,假設(shè)繞x軸作圓周回轉(zhuǎn)操作,要計算圓周軌跡上的n個點的坐標,設(shè)旋轉(zhuǎn)步長t為2π/n,可得旋轉(zhuǎn)變換矩陣T:
(10)
設(shè)母線上任一點坐標為(x,y,z),則旋轉(zhuǎn)后的點坐標為:
(11)
即:
(12)
其中z=0,相關(guān)程序算法如下:
for(int j=1;j { for(inti=0;i { verx.Add(verx.GetAt(i)); very.Add(very.GetAt(i)*cos(j*2*PI/m_m)); verz.Add(very.GetAt(i)*sin(j*2*PI/m_m));}} 圖4 圓弧縱向切割 (5)判斷渲染方向: OpenGL中光照處理涉及到平面法向量。平面法向量決定了光照的正反面,只有獲得所期望的法向量才能使光照得到有效的處理。為此,需要單獨設(shè)計子程序模塊來計算和確定平法向量。 已知,不共線的3個點確定一個平面,兩兩不同的點確定一個矢向量,而不同矢向量的叉積便能夠確定平面法向量的大小和方向。平面法向矢量如圖5所示。 圖5 法向矢量 在空間坐標系中,設(shè)1、2、3點的坐標值分別為(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),則所構(gòu)成的平面法向量的計算過程如下: (13) (14) 矩陣式交叉展開,可以得到法向量對應(yīng)的數(shù)學(xué)表達式: (15) 經(jīng)過上述幾種算法的處理,基本上就能實現(xiàn)DXF軸類零件圖形數(shù)據(jù)的處理,將處理后的相關(guān)數(shù)據(jù)保存在所設(shè)置的動態(tài)數(shù)組中,以便為后續(xù)真實感渲染做好準備。 要讀取DXF文件中圖形數(shù)據(jù),首先打開要讀取的DXF文件,分別讀取對應(yīng)圖元的組碼和組值。當(dāng)讀到組值等于“ENTITES”時,表明實體段開始,隨后讀取的第一個組值即為圖元類型。然后判斷該圖元類型,根據(jù)對應(yīng)的圖元類型,提取該圖元信息并保存到已經(jīng)設(shè)置的動態(tài)數(shù)組中。就這樣反復(fù)讀取,直到組值為“ENDSEC”時,表示實體段讀取結(jié)束,即幾何圖元的實體信息提取完畢[11]。DXF文件的數(shù)據(jù)讀取流程如圖6所示。 圖6 DXF文件的數(shù)據(jù)讀取流程 系統(tǒng)程序利用OpenGL主要實現(xiàn)以下功能:窗口初始化,圖形的繪制,坐標變換,光照和材質(zhì)設(shè)置,霧化和紋理貼圖等功能[12]。由于涉及多種OpenGL技術(shù),現(xiàn)主要介紹與真實感顯示貼切的光照與材質(zhì)設(shè)置內(nèi)容,并以透視投影變換為例,介紹其變換原理。 4.1 光照與材質(zhì)設(shè)置 現(xiàn)實世界中的物體都具有多種多樣的色彩和質(zhì)感。概括來說,物體的顏色是由其本身的光學(xué)特性與照射到它身上的外來光共同作用的結(jié)果。在OpenGL中,可利用光源和物體的材質(zhì)來模擬自然界的光學(xué)效果,其中的光源用來模擬外來光,材質(zhì)用于描述物體本身的光學(xué)特性。 (1)顏色。 彩色計算機屏幕可以顯示各種顏色,而實際上它們都是有紅、綠、藍三色光以不同比率組合而成的。OpenGL提供了RGBA與顏色索引表兩種描述顏色的方法。為充分利用OpenGL強大的渲染功能,本文選用RGBA模式,且初始時將零件實體的顏色設(shè)置為寶石藍(如實驗結(jié)果中的圖9所示)。 (2)光源。 光源就是可以發(fā)光的物體,它同一般的幾何體一樣受到幾何變換矩陣的影響。OpenGL利用有限多個光源來盡量模擬自然的光效。對于一個光源來說,其屬性主要有環(huán)境光、泛光、鏡面光、光源位置、聚光燈方向、光錐角度及三級衰減因子等,在使用時可以根據(jù)需要對各參數(shù)進行調(diào)整。 本真實感應(yīng)用中設(shè)置光源的代碼如下: void CThirdEyeView::OnSetLight() { CPropertySheet SetLight("燈光設(shè)置"); SetLight.m_psh.dwFlags |= PSH_NOAPPLYNOW; CDLG_SETLIGHT dlg[8]; for(int i=0;i<8;i++)//根據(jù)不同的燈號取用不同的燈光效果; { SetLight.AddPage(&dlg[i]); dlg[i].Light=Light[i]; dlg[i].m_Num.Format("燈光 %d",i+1);}...} //上述8種燈光設(shè)置; glEnable(GL_LIGHTING); for(int i=0;i<8;i++) {glLightfv(GL_LIGHT0+i,GL_AMBIENT,Light[i].ambient); ……; if(Light[i].bIfEnable) glEnable(GL_LIGHT0+i); else glDisable(GL_LIGHT0+i);} (3)材質(zhì)。 在OpenGL中,物體的材質(zhì)是通過對光的紅、綠、藍三色的反射率定義的。通過設(shè)置材質(zhì)屬性,我們才能夠識別三維實體模型是由什么構(gòu)成。真實感中,設(shè)置物體材質(zhì)的代碼如下: float tt1[4],tt2[4],tt3[4],tt4[4];//RGBA; for(int i=0;i<4;i++) { tt1[i]=Material.ambient[i]/255.; tt2[i]=Material.diffuse[i]/255.; tt3[i]=Material.specular[i]/255.; tt4[i]=Material.emission[i]/255.;} glMaterialfv(GL_FRONT,GL_AMBIENT,tt1); glMaterialfv(GL_FRONT,GL_DIFFUSE,tt2); glMaterialfv(GL_FRONT,GL_SPECULAR,tt3); glMaterialfv(GL_FRONT,GL_EMISSION,tt4); glMaterialf(GL_FRONT,GL_SHININESS,Material.shininess); OpenGL通過物體的材質(zhì)和光源設(shè)置,便可準確地模擬現(xiàn)實世界的光照效果,從而實現(xiàn)計算機上三維實體模型的真實感效果。 4.2 透視投影[13] 坐標P點到觀察平面上點(xp,yp,zvp)的透視投影如圖7所示。 圖7 P點到觀察平面上點(xp,yp,zvp)的透視投影 將透視投影按照齊次矩陣的形式記為: (16) 其中:dp=zprp-zvp//投影參考點到觀察平面的距離; (17) 其中,投影坐標中zp值保持不變。 另外,調(diào)用OpenGL圖形操作函數(shù):glTranslate(平移)、glRotate(旋轉(zhuǎn))、glScale(縮放)等亦可實現(xiàn)對零件圖形的其它操作。 運行程序,首先讀入簡化后的1/2DXF軸類測試件。經(jīng)過旋轉(zhuǎn)造型后,獲得的零件三維立體效果,初始設(shè)置為寶石藍,圖8為旋轉(zhuǎn)過程中的視圖一覽。 圖8 旋轉(zhuǎn)視圖 另外,該真實感應(yīng)用程序亦可實現(xiàn)反走樣、紋理貼圖等功能。通過測試,程序運行穩(wěn)定,DXF軸類件輪廓數(shù)據(jù)提取可靠,具備高效的圖形真實感顯示效果。 本研究主要對DXF車削軸類零件圖形的真實感顯示進行研究,通過深入分析DXF數(shù)據(jù)結(jié)構(gòu),采用曲面構(gòu)造算法處理與讀取DXF圖形信息,并結(jié)合OpenGL圖形渲染方面的知識對生成的三維模型進行數(shù)據(jù)處理,完成了對車削軸類零件的真實感顯示內(nèi)容,實現(xiàn)了零件材質(zhì)、光照、霧化等特殊處理功能。 (1)解決了計算機輔助車削加工系統(tǒng)中的軸類件輪廓的數(shù)據(jù)提取問題,編程實現(xiàn)一些數(shù)學(xué)算法并將這些算法應(yīng)用于提取和處理軸類件輪廓中,避免了旋轉(zhuǎn)造型生成三維數(shù)據(jù)時繁瑣的數(shù)據(jù)處理,充分應(yīng)用了軟件處理圖形的能力,具備科學(xué)計算的特點。 (2)真實感顯示不僅是計算機圖形學(xué)在計算機領(lǐng)域中的一種實際應(yīng)用,而且是對文件圖形數(shù)據(jù)挖掘與可視化相結(jié)合的一種體現(xiàn)。為更好地應(yīng)用計算機圖形處理技術(shù),這就要求今后在計算機體系結(jié)構(gòu)和計算機算法的本質(zhì)方面作更深層的研究。 [1] JanBender, KennyErleben, Jeff Trinkle.Interactive Simulation of Rigid Body Dynamics in Computer Graphics[J].Computer Graphics Forum,2014,33(1):246-270. [2] 梁秀霞,韓慧健,張彩明.基于物理仿真的布料動畫研究綜述[J].計算機研究與發(fā)展,2014,51(1):31-40. [3] 劉慶元,易柳城,劉 莉.基于diamond-square算法的數(shù)字地形模型構(gòu)建與三維可視化研究[J].測繪工程2014,23(2):1-4. [4] 唐 云,羅俊松.計算機圖形技術(shù)在數(shù)據(jù)計算方面的應(yīng)用[J].制造業(yè)自動化,2010,32(11):198-200. [5] BoulangerK,Pattanaik S N,Bouatouch K,Rendering grass in real time with dynamic lighting.[J].IEEE Computer Graphics and Applications,2009,29(1):32-41. [6] Li C F,Guo X Y,Lu S L,et al.Real-time simulation of meadow[A].Proceedings of the 7thInternational Conference on System Simulation and Scientific Computing[C].Washington D C:IEEE Computer Society Press,2008:1205-1207. [7] 王 敏,邵定宏.圖形文件格式兼容性研究與發(fā)現(xiàn)[J].計算機工程與設(shè)計,2007,28(15):3758-3761. [8] 徐呈藝,劉 英,焦恩璋,等.基于DXF文件工業(yè)機器人作業(yè)程序的生成[J].現(xiàn)代制造工程,2014(8):36-40. [9] 李洪聲.數(shù)控銑床圖形自動編程系統(tǒng)設(shè)計中DXF文件圖元信息讀取技術(shù)研究[J].科學(xué)技術(shù)與工程,2010,10(33):8241-8246. [10] 武傳宇,賀磊盈,李秦川,等.基于CAD模型的鞋底噴膠軌跡生成方法[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2008,20(5):678-682. [11] 梁海濤,馬軍林,童創(chuàng)明,等.基于DXF模型的數(shù)據(jù)讀取與分析方法[J].空軍工程大學(xué)學(xué)報(自然科學(xué)版)2007,8(2):46-48. [12] 尹海峰,庫祥臣.基于Visual C++與OpenGL的風(fēng)電機組仿真系統(tǒng)研究[J].組合機床與自動化加工技術(shù),2013(6):142-144. [13] Donald Hearn M.Pauline Baker.計算機圖形學(xué)(蔡士杰,吳春轈,孫正興,等譯)[M].北京:電子工業(yè)出版社,2002. Trajectory Curve Extraction and Realistic Display of Lathe Turning Shaft Parts Chen Zhiyuan (Minorities Teachers College, Qinghai Teachers University, Hainan Tibetan Autonomous Prefecture 813000,China) Graphic data information visualization has been a research focus in computer graphics (CG)and visualization field, and graphical data mining, extraction and display are always done with computer graphics knowledge. This study probes into the computer graphics realistic processing technology in computer aided numerical control(NC) lathe turning processing automatic programming system, the application of programming by using computer image processing technology to extract the DXF trajectory curve, the outline of shaft parts and surface construction algorithm is adopted to improve the data processing, generating parts needed for the realistic 3D data model. Combined with OpenGL content for entity rendering of 3D data model, which interactively realized functions of light, material, spray, et al. Through the rotating, perspective transformation, part designers can truthfully observe parts' internal structure, with an intuitive understanding of the whole structure of the designed parts. The experiment results show that the development of graphics realistic application system can efficiently realize lathe turning rendering of shaft parts, and it has the high profile data extraction efficiency and realistic rendering capabilities. visualization; shaft part; data processing; realistic; OpenGL 2016-01-16; 2016-02-29。 陳智淵(1981-),男,青海樂都人,碩士,中級講師,主要從事計算機語音圖像處理方向的研究。 1671-4598(2016)07-0256-06 10.16526/j.cnki.11-4762/tp.2016.07.070 TP391 文獻標識碼:A3 DXF數(shù)據(jù)讀取
4 實現(xiàn)真實感
5 實驗結(jié)果
6 結(jié)束語