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