VRML在FMS上的應(yīng)用

發(fā)布日期:2011-11-25    蘭生客服中心    瀏覽:3889

      計(jì)算機(jī)技術(shù)的發(fā)展,特別是三維圖形技術(shù)的發(fā)展,使人們更加方便地進(jìn)入到三維世界,于是,提出了虛擬現(xiàn)實(shí)建模語言VRML(Virtual Reality Modeling Language)[1]。同樣地,工程實(shí)際中,有大量需要用三維圖形來表示設(shè)計(jì)、制造等方面的概念。往常,我們只能用昂貴的軟件或花費(fèi)大量的精力用C++等計(jì)算機(jī)語言來繪制三維圖形,表示這些概念;有了VRML,我們就可以很方便而容易地做同樣的工作。特別需要指出的是,由于有了VRML,我們可以編寫出更復(fù)雜的三維圖形,如交互式三維圖形。
    筆者利用VRML語言,將一個(gè)實(shí)際的FMS實(shí)驗(yàn)環(huán)境編寫成一個(gè)復(fù)雜的三維動(dòng)畫程序,利用VRML的動(dòng)畫及交互功能,使FMS三維動(dòng)畫程序能夠根據(jù)人們的控制,產(chǎn)生相應(yīng)的運(yùn)動(dòng)變化,從而顯示出FMS的工作流程。
1 VRML簡介
    VRML是在OPENGL三維圖形庫的基礎(chǔ)之上發(fā)展而來的,雖然出現(xiàn)只有二三年的時(shí)間,但已經(jīng)成為網(wǎng)絡(luò)技術(shù)的熱點(diǎn)之一。1997年年底,VRML2.0(又稱VRML97)正式成為國際標(biāo)準(zhǔn),這也是第一個(gè)在網(wǎng)絡(luò)上發(fā)布的國際標(biāo)準(zhǔn)。
    VRML2.0是一個(gè)比較簡單的三維建模語言。之所以簡單,是因?yàn)樗穷愃朴贖TML的腳本語言,編寫起來很方便。但VRML2.0內(nèi)部可以直接利用JavaScript語言進(jìn)行編程處理,并可與外部的Java語言共同作用,因而可以編寫復(fù)雜的程序,產(chǎn)生復(fù)雜的顯示效果。VRML2.0的基本組成為54個(gè)節(jié)點(diǎn)(Node),由這些節(jié)點(diǎn)生成節(jié)點(diǎn)語句,進(jìn)而構(gòu)造三維物體,物體間可以產(chǎn)生交互作用。利用VRML2.0可以構(gòu)造具有奇異效果的三維世界,可以將照片,甚至MPEG影像顯示在物體表面,還可以在三維空間產(chǎn)生環(huán)繞立體聲。由于在主要的網(wǎng)絡(luò)瀏覽器如IE及Netscape Navigator上可以運(yùn)行VRML程序,故VRML的作用大為增強(qiáng)。
    雖然VRML2.0是隨著網(wǎng)絡(luò)技術(shù)的發(fā)展而產(chǎn)生的,但它同樣可以運(yùn)用在其它方面,如三維動(dòng)畫模擬、三維游戲制作等。尤其是三維動(dòng)畫模擬方面,VRML2.0可以通過非常短小的程序來生成三維動(dòng)畫(如小于10k)——同樣效果的動(dòng)畫,如果用3DS制作,生成的動(dòng)畫程序有時(shí)會(huì)有幾十兆。這是因?yàn)椋?DS等動(dòng)畫軟件生成的動(dòng)畫程序,在程序編寫時(shí)就對三維物體進(jìn)行了上色(渲染),因而程序非常大;而VRML程序則是利用網(wǎng)絡(luò)瀏覽器,在程序運(yùn)行過程中實(shí)時(shí)地進(jìn)行上色(渲染),因而程序非常小。
    在三維動(dòng)畫模擬方面,VRML2.0有較好的模擬效果,許多領(lǐng)域正在使用它:有人利用VRML2.0語言將莎士比亞的名著《仲夏夜之夢》改編成了三維的動(dòng)畫片;對1997年的火星探測行動(dòng),VRML愛好者們通過VRML程序,將無人探測車在火星上行走的三維場景通過網(wǎng)絡(luò)傳遍了全世界,那時(shí),人們只要上網(wǎng)瀏覽NASA的站點(diǎn),就可以在Netscape瀏覽器上看到這些奇妙的、具有動(dòng)畫效果的三維圖形。
2 VRML2.0的交互作用與動(dòng)畫功能
 
  VRML2.0程序主要用來構(gòu)造三維物體,構(gòu)造物體的節(jié)點(diǎn)是形體節(jié)點(diǎn),如本文程序里用到的Box、Cylinder等,當(dāng)然VRML2.0還有一些其它的節(jié)點(diǎn),如Extrusion、IndexedFaceSet、ElevationGrid,可以用來構(gòu)造簡單或復(fù)雜的三維物體。
    VRML2.0編寫的程序,可以實(shí)現(xiàn)動(dòng)態(tài)的交互作用,即在程序的運(yùn)行過程中,實(shí)時(shí)控制程序所定義的三維物體的運(yùn)動(dòng)。交互作用的產(chǎn)生主要靠2種節(jié)點(diǎn)和1種語句。2種節(jié)點(diǎn)是傳感器節(jié)點(diǎn)和內(nèi)插器(Interpolator)節(jié)點(diǎn);1種語句是路徑(ROUTE)語句。VRML2.0的傳感器節(jié)點(diǎn)一共有7種,這些節(jié)點(diǎn)可以探知程序運(yùn)行時(shí)的一些變化,如鼠標(biāo)的點(diǎn)擊動(dòng)作、物體從不可見到可見的變化等。VRML2.0的內(nèi)插器節(jié)點(diǎn)有6種,它們可以在程序的運(yùn)行過程中改變物體的一些狀態(tài),如顏色、尺寸、位置等,筆者利用坐標(biāo)內(nèi)插器節(jié)點(diǎn)CoordinateInterpolator及方向內(nèi)插器節(jié)點(diǎn)OrientationInterpolator,改變小車、機(jī)械手、物料及零件的位置及方向。路徑ROUTE語句的主要作用是感知一些狀態(tài)的變化,并把這些變化傳給其它節(jié)點(diǎn),進(jìn)而使物體的一些狀態(tài)產(chǎn)生變化。
    VRML2.0的內(nèi)插器節(jié)點(diǎn)使VRML程序具有動(dòng)畫功能,因而我們可以利用它編寫三維動(dòng)畫程序,使三維物體相互間產(chǎn)生運(yùn)動(dòng),或使物體的狀態(tài)如形狀、顏色隨時(shí)間發(fā)生變化,我們甚至可以動(dòng)態(tài)地改變觀察三維物體的位置、產(chǎn)生廣角鏡頭效果等。
    由于傳感器節(jié)點(diǎn)和內(nèi)插器節(jié)點(diǎn)的作用,使VRML2.0具有交互作用,我們可以利用VRML的交互作用編寫各類應(yīng)用程序,如交互式三維卡通動(dòng)畫、三維游戲。傳統(tǒng)的三維卡通動(dòng)畫,人們只能看,不能改變動(dòng)畫的內(nèi)容,而交互式卡通動(dòng)畫,動(dòng)畫的內(nèi)容實(shí)際上是由運(yùn)行程序的人員控制的。
3 VRML語言在FMS系統(tǒng)上的應(yīng)用
 
   我們用VRML語言,將1個(gè)實(shí)際的FMS系統(tǒng)編寫成1個(gè)具有交互作用的三維應(yīng)用程序!∩穷^大學(xué)機(jī)電系FMS實(shí)驗(yàn)室的主要設(shè)備有物料傳輸系統(tǒng)、電腦控制臺(tái)、車削加工中心、銑削加工中心、機(jī)械手、拖盤。對于這些設(shè)備,我們通過Box、Cylinder、Sphere等基本形體節(jié)點(diǎn)以及Extrusion、IndexedFaceSet這2個(gè)可以生成復(fù)雜形體的節(jié)點(diǎn),生成了FMS實(shí)驗(yàn)室里所有設(shè)備的三維圖形。
    為了使獲得的三維圖形具有實(shí)用價(jià)值,我們利用VRML所具有的動(dòng)畫功能及交互作用,將FMS系統(tǒng)里的設(shè)備工作運(yùn)行狀態(tài)通過傳感器節(jié)點(diǎn)、內(nèi)插器節(jié)點(diǎn)及ROUTE語句表現(xiàn)出來。
    根據(jù)FMS實(shí)驗(yàn)室設(shè)備的工作流程,我們利用VRML里的傳感器節(jié)點(diǎn)、內(nèi)插器節(jié)點(diǎn),通過編程使整個(gè)程序在一定的工作時(shí)間內(nèi),完成了上面的加工循環(huán)。
    首先在物料傳送系統(tǒng)的1個(gè)醒目的位置安裝了2個(gè)按鈕,并在按鈕上面附上了2個(gè)觸摸傳感器TouchSensor:1個(gè)起動(dòng)按鈕,1個(gè)關(guān)閉按鈕。小車在物料傳送系統(tǒng)上不停地行走,當(dāng)它運(yùn)行到物料傳送系統(tǒng)的4個(gè)角落時(shí),就在角落位置處改變其運(yùn)動(dòng)方向;小車的直線行走靠的是坐標(biāo)內(nèi)插器節(jié)點(diǎn)在時(shí)間傳感器及坐標(biāo)內(nèi)插器節(jié)點(diǎn)的共同作用下,小車按照設(shè)定的速度行走。當(dāng)小車運(yùn)行到物料架邊上時(shí),小車會(huì)暫停數(shù)秒鐘,機(jī)械手將物料從物料架上取出,擺放在小車上。機(jī)械手有轉(zhuǎn)動(dòng)和平動(dòng)2個(gè)動(dòng)作。通過方向內(nèi)插器節(jié)點(diǎn)實(shí)現(xiàn)機(jī)械手的轉(zhuǎn)動(dòng);通過坐標(biāo)內(nèi)插器節(jié)點(diǎn)實(shí)現(xiàn)機(jī)械手的平動(dòng)。物料及零件的拿起、放下動(dòng)作和機(jī)械手的運(yùn)動(dòng)是協(xié)調(diào)一致的;物料及零件的行走與小車的行走是協(xié)調(diào)一致的。根據(jù)這樣的分析,我們在程序中對物料及零件的編程處理起來顯得非常簡單:直接照套機(jī)械手及小車的編程內(nèi)容。
     通過上面的分析及處理,給出了FMS三維交互式動(dòng)畫程序的編程思路,通過具體的編程,我們實(shí)現(xiàn)了上面所有的內(nèi)容。在建立復(fù)雜的三維圖形時(shí),通常都是從小的部分做起,逐步擴(kuò)大。Inline節(jié)點(diǎn)為我們提供了建立復(fù)雜模型的方便,它可以讓我們將復(fù)雜的模型拆分成多個(gè)簡單的部分,單獨(dú)編程并以單獨(dú)的文件名命名存儲(chǔ),最后在一個(gè)主文件里用Inline節(jié)點(diǎn)將各部分組合在一起。在FMS的編程過程中,我們根據(jù)程序中主要部分的內(nèi)容,將其一一單獨(dú)編程,最后通過Inline節(jié)點(diǎn)將其組合在一起。
4 結(jié)論
 
  利用VRML編程,得到了一個(gè)具有交互作用、具有動(dòng)畫效果的FMS的三維圖形(見圖1)。這對于研究FMS有非常大的幫助。當(dāng)設(shè)計(jì)一個(gè)新的FMS系統(tǒng)時(shí),可以根據(jù)工廠的實(shí)際情況,利用這樣的方法,先建立它的三維模型;然后從人機(jī)工程、物料管理、設(shè)備的配置等方面對其進(jìn)行研究;最后給出一個(gè)完整的設(shè)計(jì)方案。利用VRML編寫的FMS系統(tǒng),可以進(jìn)行FMS的網(wǎng)絡(luò)教學(xué)實(shí)驗(yàn)。

更多相關(guān)信息