王曉霞
(太原理工大學(xué)陽(yáng)泉學(xué)院信息系,山西陽(yáng)泉045000)
大家都知道,鑄造[1]是制造類產(chǎn)業(yè)發(fā)展的基本條件之一。同時(shí),它又是產(chǎn)品質(zhì)量不合格、廢品出產(chǎn)比較多的產(chǎn)業(yè)之一。就其原因來(lái)說(shuō),大部分廢品的出現(xiàn)都是由于鑄造模型制造不準(zhǔn)確造成的。隨著社會(huì)的發(fā)展和人們的需求,對(duì)產(chǎn)品質(zhì)量要求越來(lái)越精,這就使得人們必須尋找出一種合適、精確的工具來(lái)提高產(chǎn)品精度,增加產(chǎn)品合格率。
近年來(lái)隨著計(jì)算機(jī)圖形圖像學(xué)的發(fā)展,并廣泛的將其應(yīng)用于計(jì)算機(jī)輔助設(shè)計(jì)中,大大提高了產(chǎn)品的生產(chǎn)效率。圖形圖像學(xué)是鑄造模型制造中比較突出的一項(xiàng)技術(shù),在現(xiàn)代社會(huì)的激烈環(huán)境中,越來(lái)越受到人們的普遍關(guān)注。比較好的仿真系統(tǒng)可以從仿真的效果和解析得到的一系列數(shù)據(jù)中獲得大量可用信息,以合適的圖形圖像的表示方法,沒(méi)有誤差同時(shí)又恰當(dāng)?shù)叵蛐枨蟮挠脩暨M(jìn)行說(shuō)明,為用戶進(jìn)行鑄造提供依據(jù)。
本文通過(guò)對(duì)STL中的數(shù)據(jù)在計(jì)算機(jī)的存儲(chǔ)結(jié)構(gòu)、邏輯運(yùn)算方法的解釋和闡述,以達(dá)到使模型的制造流程人性化,制造精度更能達(dá)到人們的需求。
計(jì)算機(jī)圖像學(xué)(IP)是一門(mén)實(shí)現(xiàn)信息處理和加工功能的學(xué)科。它致力于怎樣才能把人類社會(huì)中的各種圖像用計(jì)算機(jī)準(zhǔn)確描述出來(lái)、以及這些數(shù)據(jù)在計(jì)算機(jī)中如何進(jìn)行存儲(chǔ)、解析、處理和傳輸?shù)?。其比較前沿的技術(shù)有生活中采集的圖像和生成圖像的方法、圖像進(jìn)行重組、圖像應(yīng)變化得容易處理和圖像通過(guò)某種壓縮方法讓計(jì)算機(jī)可以識(shí)別、解析中的邊邊角角的檢查測(cè)量、如何對(duì)圖像進(jìn)行分化、以及圖像在各行各業(yè)的應(yīng)用等。
圖形學(xué)(CG)是解決如何生成、計(jì)算并把圖形顯示的一門(mén)學(xué)科。它的內(nèi)容有畫(huà)面如何描述、造型如何設(shè)計(jì)、圖形的準(zhǔn)確反映、機(jī)器和人之間的對(duì)話——交互式方式[2]等。就當(dāng)前來(lái)言,計(jì)算機(jī)圖形學(xué)比較新的研究方面有用虛擬設(shè)備對(duì)現(xiàn)實(shí)生活的情景再現(xiàn)、許多物理現(xiàn)象用幾何形式表述、科學(xué)計(jì)算過(guò)程通過(guò)屏幕逼真演算、對(duì)大自然景象的模仿、用仿生學(xué)再現(xiàn)真實(shí)情景等。
計(jì)算機(jī)圖像學(xué)和圖形學(xué)之間有著千絲萬(wàn)縷的聯(lián)系。這兩個(gè)學(xué)科所用的數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是比較接近的,它們的公共問(wèn)題都是如何用計(jì)算機(jī)對(duì)圖像進(jìn)行處理。但是,所不同的是,計(jì)算機(jī)圖形學(xué)側(cè)重于將現(xiàn)實(shí)中采集的信息和幾何模型轉(zhuǎn)換成圖像,而圖像處理則著重在于圖像信息的處理與加工。
計(jì)算機(jī)圖形圖像技術(shù)在鑄造方面的一個(gè)比較重要的應(yīng)用就是實(shí)體造型技術(shù)[3]。實(shí)體造型技術(shù)是近來(lái)快速突崛起來(lái)的一種比較好的幾何描述方法。這種方法在描述三維物體時(shí)具有不可忽視的優(yōu)勢(shì)——可以完全準(zhǔn)確且不會(huì)產(chǎn)生歧義性的描述物體。在機(jī)械產(chǎn)業(yè)的許多方面,比如產(chǎn)品的構(gòu)造和分布、解析和試測(cè)、產(chǎn)品投入生產(chǎn)等方面得到越來(lái)越廣泛的應(yīng)用,因而受到了機(jī)械制造及其它有關(guān)行業(yè)越來(lái)越多的重視,具有實(shí)體造型能力的CAD/CAM正快速涌入市場(chǎng)。
STL(Stereo lithography)文件是三維模型經(jīng)過(guò)三角化處理后得到的文件[4]。可能大多數(shù)人覺(jué)得這句話不太好理解;那么用一種通俗的解釋來(lái)說(shuō),它就是將實(shí)體表面化分為若干個(gè)三角形的面。同時(shí)在化分時(shí)由于不同的人采用的精度不同,相應(yīng)的三角形網(wǎng)格劃分也不同。通常4個(gè)數(shù)據(jù)就可以準(zhǔn)確描述某個(gè)三角形面,大多數(shù)人都知道對(duì)于三角形來(lái)說(shuō)必定有三個(gè)頂點(diǎn),那么這三個(gè)頂點(diǎn)就占據(jù)了這4個(gè)數(shù)據(jù)的3/4,剩下一個(gè)即為三角形面片的外法線矢量,不難想像,STL文件化分的三角形面越恰當(dāng)?shù)亟咏鼘?shí)體模型,它的精度就越高。
STL文件格式的規(guī)則如下:(1)三角形法向量的方向。對(duì)于所有的三角形面片,要求其法向量必須全部向外,3個(gè)頂點(diǎn)組成矢量的方向按照逆時(shí)針來(lái)確定(右手法則)。(2)鄰接的三角形共用頂點(diǎn)。所有三角形面必須和與它鄰接的三角形面共用兩個(gè)頂點(diǎn)。(3)對(duì)實(shí)體的全部布滿。對(duì)三維模型來(lái)說(shuō),其表面必須布滿小三角形面,不得有一點(diǎn)點(diǎn)的遺漏。同時(shí),布滿的程度越高,將來(lái)建立的模型越精確。(4)三角形面頂點(diǎn)的取值。所有三角形面的頂點(diǎn)坐標(biāo)要求必須為大于0,0和小于0均為不正確。
STL文件的基本思路是讓許多空間三角形一步步慢慢地?zé)o限逼近三維實(shí)體表面。前面大家已經(jīng)了解每個(gè)三角形面有3個(gè)頂點(diǎn),每個(gè)頂點(diǎn)由坐標(biāo)(x,y,z)表示,因?yàn)橐啦牧习谌切蔚哪菞l邊上,所以所有三角形都有1個(gè)法向量,在這里我們用數(shù)學(xué)上常用的表示方法(Lx,Ly,Lz)。這樣,STL提供了所有三角形頂點(diǎn)的絕對(duì)坐標(biāo)值(相對(duì)坐標(biāo)系的原點(diǎn))和描述三角形方向的外法線矢量,且3個(gè)頂點(diǎn)的放置順序與右手規(guī)則得到結(jié)果完全一致,拇指指向平面的外法線矢量。為了便于大多數(shù)人理解,下面以一個(gè)具體的例子來(lái)說(shuō)明STL文件存儲(chǔ)格式。有1個(gè)邊長(zhǎng)分別為(20,40,15)的長(zhǎng)方體模型,如圖 1:總共由(1,5,8),(4,3,2)……(5,6,8)等12個(gè)三角形面布滿長(zhǎng)方體的表面。在STL文件中的存儲(chǔ)一般有兩種格式,ASCII碼和二進(jìn)制格式。ASCII碼格式如圖1:
圖1 STL文件數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)圖
solid try.stl(文件開(kāi)始標(biāo)志及此文件名)
facet normal 0.0,0.0,0.2(第 1 個(gè)三角面的外法線矢量,由 (1,5,8)組成的三角形為第一個(gè)三角形)
outer loop(第1個(gè)三角形面頂點(diǎn)定義開(kāi)始)
vertex 20.0,40.0,15.0(第 1 個(gè)頂點(diǎn)坐標(biāo))
vertex 20.0,0.0,15.0(第 2 個(gè)頂點(diǎn)坐標(biāo))
vertex 0.0,0.0,0.0(第 3 個(gè)頂點(diǎn)坐標(biāo))
end loop(第一個(gè)三角形頂點(diǎn)定義結(jié)束)
end facet(三角形面定義結(jié)束)
…(第i個(gè)三角形面片)…(i的值在本例中從2到12)
endsolid try.stl(實(shí)體結(jié)束標(biāo)志)
二進(jìn)制格式是按位存儲(chǔ)的,其方式為:前640個(gè)位用以作說(shuō)明來(lái)用,其后16位存放所有三角形的個(gè)數(shù),然后開(kāi)始記錄三角形數(shù)據(jù)(法線向量和3個(gè)頂點(diǎn)),記錄采用實(shí)數(shù),每個(gè)數(shù)值占用32個(gè)位,在每個(gè)三角形信息記錄完畢后空16個(gè)位,以記錄下1個(gè)三角形信息。
在實(shí)體中,需要用到曲面反求技術(shù)[5]。在這種技術(shù)中,實(shí)體通常被劃分為苦干個(gè)相互有重疊的曲面面片[6],數(shù)據(jù)合成也即為面片相互間的拼接。在曲面拼接的幾種方法中,有一種簡(jiǎn)單而實(shí)用的方法——人機(jī)交互方式,即為窗體上可以同時(shí)顯示兩個(gè)曲面面片,對(duì)曲面面片采用對(duì)話-交互式的方式進(jìn)行平移或旋轉(zhuǎn),使兩曲面位于相對(duì)比較準(zhǔn)確的位置,以實(shí)現(xiàn)兩曲面面片的拼接;如此反復(fù)多次致使整個(gè)實(shí)體拼接的完成。最后把拼接完成的相應(yīng)數(shù)據(jù)輸出,即完成實(shí)體的曲面拼接。
在曲面拼接中,三維顯示是最重要的部分,如果將其完成,那么整個(gè)模型的建立相對(duì)來(lái)說(shuō)就容易多了。同時(shí)它還可以為拼接過(guò)程提供一個(gè)可供人們觀察的過(guò)程。要完成拼接工作,必須反復(fù)進(jìn)行三角形的平移、旋轉(zhuǎn)。根據(jù)平移、旋轉(zhuǎn)原理可知:對(duì)一個(gè)三角形進(jìn)行平移或旋轉(zhuǎn)一次,必須將三角形的一個(gè)頂點(diǎn)與平移(旋轉(zhuǎn))矩陣相乘一次。比如一個(gè)STL文件有5 000個(gè)面片,每個(gè)三角形記錄一個(gè)頂點(diǎn),共記錄了15 000萬(wàn)個(gè)頂點(diǎn)。
在后續(xù)的處理中,由于上述長(zhǎng)方體模型是由六個(gè)表面的網(wǎng)格組成,這是與對(duì)STL文件的剖切不同的。在計(jì)算機(jī)處理中,網(wǎng)格的邊長(zhǎng)(x,y,z)很小,可以將其看為是一個(gè)點(diǎn)。對(duì)鑄造實(shí)體模型的剖切,也就是用一個(gè)平面去截交實(shí)體模型,可用OpenGL繪制截面,就可以提取所得的截面上網(wǎng)格的信息,也就可以完成了對(duì)鑄造實(shí)體模型的剖切。由于這部分內(nèi)容涉及其它的技術(shù),在這里本人就不詳細(xì)敘述了。
利用STL技術(shù)可以實(shí)現(xiàn)正方體、圓、橢圓等實(shí)體模型構(gòu)造。將這些實(shí)體添加到STL模型裝配中,用戶就可以在鑄件上裝配自己需要的鑄件模型了。
針對(duì)鑄造工藝中鑄造模型手工不準(zhǔn)確的情況下,造成材料的大量浪費(fèi)。進(jìn)而提供一種計(jì)算機(jī)STL技術(shù)建立模型,使其達(dá)到更精準(zhǔn)的程度,是計(jì)算機(jī)在鑄造工藝中的一項(xiàng)大的進(jìn)步。
[1]范玉青,周建華.實(shí)體造型技術(shù)及其應(yīng)用前景[N].中國(guó)計(jì)算機(jī)報(bào),2004.
[2]孫家廣.計(jì)算機(jī)圖形學(xué)[M].第3版.北京:清華大學(xué)出版社,1998.
[3]歐陽(yáng)春梅,丁秋林.實(shí)體造型技術(shù)[M].北京:國(guó)防工業(yè)出版社,1995.
[4]Stroud I,Xirouchakis P C.STL and Extensions[J].Advances in Engineering Software,2010,31(2):83 -95.
[5]李電生,鐘約先,李江鋒.曲面反求中測(cè)量數(shù)據(jù)人機(jī)交互合成及優(yōu)化[J].機(jī)械設(shè)計(jì)與制造,2008,3:31 -33.
[6]趙吉賓,劉偉軍,王越超.基于STL文件的實(shí)體分割算法研究[J].機(jī)械科學(xué)與技術(shù),2005(24):131-134.