肖 瑞,全吉成,袁昱緯
(空軍航空大學(xué) 特種專業(yè)系,吉林 長春130022)
目前,三維可視化技術(shù)在各個領(lǐng)域應(yīng)用廣泛。Skyline作為三維地理信息系統(tǒng)平臺,體現(xiàn)出高效的快速索引、三維模型加載、對復(fù)雜的地形模型的支持能力等特點,在國內(nèi)市場上地位越來越明顯。因此,如何對Skyline平臺進(jìn)行二次開發(fā)以滿足各種需求。
據(jù)調(diào)查顯示,信息80%是通過視覺獲取的,因此視覺效果作為評價標(biāo)準(zhǔn),具有以真實地景、地理空間位置為平臺的飛行模擬,才能對飛行員體驗飛行、對飛行的認(rèn)知起到幫助,而Skyline能滿足平臺需要,為用戶提供真實的地景和地理空間,因此基于Skyline開發(fā)的飛行模擬具有重要意義。飛行模擬的一個重要方面就是飛機的座艙儀表顯示系統(tǒng),它能讓飛行員體會到從第一視角觀察自己的飛行狀態(tài)及周圍的地景變化。為滿足人們體驗?zāi)M飛行的視覺效果,文中基于實現(xiàn)Skyline模擬飛行的前提下,對如何實現(xiàn)座艙儀表的顯示進(jìn)行了探討,并得出如何高效簡單地解決座艙儀表顯示的問題。目前儀表顯示可以通過OpenGL、DirectX和Flash實現(xiàn),文中給出用Flash實現(xiàn)Skyline飛行座艙儀表顯示的方法,該方法高效、快捷。
Skyline是獨立于硬件之外、多平臺、多功能的一套基于網(wǎng)絡(luò)的三維地理信息系統(tǒng)平臺。用戶可以利用航空和衛(wèi)星遙感影像、地形高程數(shù)據(jù)和其他的二、三維地理空間和屬性數(shù)據(jù),創(chuàng)建自定義的虛擬現(xiàn)實三維可視化場景,進(jìn)行瀏覽、查詢、分析和網(wǎng)絡(luò)發(fā)布。它能夠允許用戶快速融合數(shù)據(jù)、更新數(shù)據(jù)庫,并且有效地支持大型數(shù)據(jù)庫和實時信息流通訊技術(shù),此系統(tǒng)還能實時地展現(xiàn)給用戶3D地理空間影像,并開放所有的API,無論在網(wǎng)絡(luò)環(huán)境還是單機應(yīng)用,用戶都能根據(jù)自身的業(yè)務(wù)需求開發(fā)定制功能,建立個性化的三維地理信息系統(tǒng)。文中基于Skyline提供的開放API實現(xiàn)模擬飛行功能的基礎(chǔ)上,進(jìn)行再次開發(fā),實現(xiàn)座艙儀表的顯示。
Flash是重要的動畫制作工具,它是基于矢量的圖形系統(tǒng),各元素均為矢量,只用少量的向量數(shù)據(jù)就可以描述一個復(fù)雜的對象,占用的存儲空間僅為位圖的幾千分之一,同時矢量圖像可以做到真正的無級放大,這樣圖像始終可以完全顯示,并且不會降低畫面質(zhì)量。在Flash中,一般動畫都是依靠關(guān)鍵幀實現(xiàn),方便快捷,用戶只需給出一個對象的幾個關(guān)鍵動作,生成關(guān)鍵幀,系統(tǒng)就會根據(jù)需要在各個關(guān)鍵幀之間自動插入平滑的動畫。Flash使用了“層”的概念,不同的角色可以出現(xiàn)在不同的層面上,相互掩映,可以單獨對某一層面進(jìn)行操作,并且可以看見效果。文中根據(jù)Flash的這些特性,實現(xiàn)了座艙儀表的顯示。
為了達(dá)到座艙儀表顯示更為逼真的目的,采用3D MAX制作。3D MAX是集各項3D功能為一身的軟件,建模、渲染、材質(zhì)、動作等使得建模更加精致、逼真。建模完成的效果如圖1所示,該圖作為Skyline窗口的背景貼圖。
利用3D MAX的裁剪渲染功能,將圖1中的每一個儀表(除地平儀以外)及儀表指針單獨渲染輸出保存圖像如圖2所示,用于之后加入到Flash場景中制作動畫。由于地平儀中的圓柱是隨著飛機俯仰角的變化而轉(zhuǎn)動,在Flash中實現(xiàn)較困難,因此將其獨立出來,放在3D MAX中制作動畫,設(shè)置旋轉(zhuǎn)一圈為720幀,然后再通過裁剪渲染,按每幀輸出得到720張圖像并保存。
圖1 座艙儀表建模圖
在新建的Flash工程中,將儀表圖像及其相應(yīng)的指針分層放入場景,并按照指針的指示設(shè)定足夠的幀數(shù)和關(guān)鍵幀制作動畫輸出保存為*.swf文件。其中,F(xiàn)lash支持圖片的批量加載,并自動將每幅圖像按編號順序添加為關(guān)鍵幀,這使得地平儀的制作簡單化。制作效果圖如圖3所示。
以上制作的儀表必須通過數(shù)據(jù)的驅(qū)動才能轉(zhuǎn)動,數(shù)據(jù)來自于飛行模擬。本文的儀表動態(tài)顯示是通過C#編程語言實現(xiàn),通過建立同一命名管道實現(xiàn)飛機參數(shù)與儀表指針幀數(shù)之間的通信,具體實現(xiàn)過程如下:
(1)建立Myfly和Flash兩個工程文件。Myfly工程用于模擬飛行并將飛行參數(shù)輸出;Flash工程用于加載制作的*.swf文件,并匹配飛行參數(shù)與指針幀數(shù)之間的關(guān)系。
(2)建立同一命名管道。Myfly中的管道作為客戶端,用于發(fā)送帶一定格式的數(shù)據(jù);Flash中的管道作為服務(wù)器端,用于接受數(shù)據(jù)并按數(shù)據(jù)格式解碼。
(3)運行兩個工程文件,實現(xiàn)儀表的動態(tài)顯示。其顯示結(jié)果如圖4所示。
圖4 飛行顯示效果
可以看到飛行的場景為Skyline提供的海量遙感影像,座艙為3D MAX制作的座艙,儀表為Flash動畫,在飛行參數(shù)的驅(qū)使下,指針發(fā)生了偏轉(zhuǎn),實現(xiàn)了座艙儀表的動態(tài)顯示。而圖5為機艙照片直接粘貼,儀表都是靜止的,而且顯示效果不好,相比之下,通過3D MAX和Flash相結(jié)合制作的飛行座艙儀表顯示取得了良好的效果。
圖5 其他座艙儀表顯示
論述了基于Flash實現(xiàn)Skyline的飛行座艙儀表顯示,該實現(xiàn)使得飛行模擬更加逼真形象。與其他儀表顯示相比,顯示更精致;優(yōu)點是較好地使Skyline的開發(fā)平臺與Flash相結(jié)合,實現(xiàn)了不同工程程序間的相互通信,對Skyline的二次開發(fā)能力進(jìn)行了補充。
[1] 王娟.飛行仿真中虛擬航空儀表顯示系統(tǒng)的研究和實現(xiàn)[D].吉林:吉林大學(xué),2005.
[2] 東方道邇.SkylineGlobe+6技術(shù)白皮書[M].北京:北京東方道邇信息技術(shù)股份有限公司,2010.
[3] 吳東巖.飛行模擬器座艙儀表驅(qū)動的設(shè)計與應(yīng)用[D].吉林:吉林大學(xué),2006.
[4] 李俊濤,李學(xué)仁,李永賓.基于DirectX的虛擬儀表技術(shù)在飛行仿真中的應(yīng)用[J].空軍工程大學(xué)學(xué)報,2004,5(6):1-4.
[5] 王述運,林亞軍,呂明,等.基于OpenGL的飛行模擬器圖形儀表設(shè)計[J].電腦編程技巧與維護(hù),2010,10(8):1-3.