蘇志剛,陳天彧,郝敬堂
(中國(guó)民航大學(xué) 中歐航空工程師學(xué)院,天津 300300)
國(guó)內(nèi)外學(xué)者針對(duì)機(jī)場(chǎng)的視景仿真問(wèn)題,已經(jīng)開展了一些有益的探索與研究[1-7]:文獻(xiàn)[5]在3DMAX平臺(tái)下開發(fā)出某型飛機(jī)的三維運(yùn)動(dòng)仿真系統(tǒng),該系統(tǒng)能夠加載飛機(jī)模型以及飛行數(shù)據(jù)文件,并通過(guò)終端輸出實(shí)時(shí)仿真結(jié)果;文獻(xiàn)[6]基于3DMAX和Unity3D構(gòu)建機(jī)場(chǎng)場(chǎng)景,實(shí)現(xiàn)了飛機(jī)運(yùn)動(dòng)的三維仿真;文獻(xiàn)[7]利用MultiGen Creator建立了一個(gè)飛行視景數(shù)據(jù)庫(kù),針對(duì)其中各類模型的特點(diǎn)提出相應(yīng)的優(yōu)化建模方法,結(jié)合地面實(shí)拍數(shù)據(jù),以某機(jī)場(chǎng)為原型,建立了一套完成的機(jī)場(chǎng)視景數(shù)據(jù)庫(kù)。但以上對(duì)機(jī)場(chǎng)視景仿真的研究仍然存在建模過(guò)程復(fù)雜、場(chǎng)景無(wú)法快速搭建的問(wèn)題,不利于進(jìn)行機(jī)場(chǎng)場(chǎng)面的二次開發(fā)。
針對(duì)上述問(wèn)題,本文基于X-Plane模擬飛行軟件搭建機(jī)場(chǎng)地景數(shù)據(jù)庫(kù),基于Java3D API對(duì)機(jī)場(chǎng)視景仿真系統(tǒng)體系結(jié)構(gòu)和功能模塊進(jìn)行設(shè)計(jì)。X-Plane是一款包括世界各地機(jī)場(chǎng)地景和多種機(jī)型的模擬飛行軟件[8],Java3D是用來(lái)開發(fā)三維圖形和3D應(yīng)用程序的編程接口[9]。
為滿足機(jī)場(chǎng)視景仿真的需求,為用戶提供逼真的機(jī)場(chǎng)地景觀察環(huán)境,系統(tǒng)需要產(chǎn)生的主要視覺(jué)信息為:地貌與實(shí)際相符的機(jī)場(chǎng)地景和豐富可調(diào)的環(huán)境背景。其中,機(jī)場(chǎng)地景要求機(jī)場(chǎng)具有相應(yīng)的地標(biāo)、跑道、停機(jī)坪、機(jī)庫(kù)、塔臺(tái)等具有細(xì)節(jié)紋理的建筑物。環(huán)境背景包含具有色彩和方向特性燈光,以及能見(jiàn)度與距離相關(guān)的大氣衰減效果。
為了讓用戶有更好的觀察效果以及更利于系統(tǒng)進(jìn)行基于機(jī)場(chǎng)場(chǎng)面監(jiān)視的二次開發(fā),視景仿真系統(tǒng)至少應(yīng)具有以下性能:具有觀察視角和漫游路徑可調(diào)的場(chǎng)景漫游功能;場(chǎng)景觀察效果流暢,畫面無(wú)卡頓,圖形更新率不小于25幀/秒;場(chǎng)景的能見(jiàn)度、視景圖像亮度、霧等環(huán)境背景均可調(diào)。
根據(jù)設(shè)計(jì)需求,將機(jī)場(chǎng)視景仿真系統(tǒng)結(jié)構(gòu)設(shè)計(jì)為數(shù)據(jù)層、接口層和應(yīng)用層。數(shù)據(jù)層存儲(chǔ)以X-Plane模擬飛行軟件的地景數(shù)據(jù)為基礎(chǔ)的地景數(shù)據(jù)庫(kù),為系統(tǒng)提供數(shù)據(jù)支持。接口層包括地景數(shù)據(jù)解譯動(dòng)態(tài)鏈接庫(kù)和坐標(biāo)轉(zhuǎn)換動(dòng)態(tài)鏈接庫(kù)。調(diào)用地景數(shù)據(jù)解譯動(dòng)態(tài)鏈接庫(kù)可以實(shí)現(xiàn)機(jī)場(chǎng)地景文件的解譯,獲取需要搭建的機(jī)場(chǎng)信息;調(diào)用坐標(biāo)轉(zhuǎn)換動(dòng)態(tài)鏈接庫(kù)可以實(shí)現(xiàn)地理坐標(biāo)系與觀察場(chǎng)景坐標(biāo)系的轉(zhuǎn)換。應(yīng)用層包括地景數(shù)據(jù)管理、視景多模型顯示和人機(jī)交互3個(gè)功能模塊,各功能分析詳見(jiàn)1.2小節(jié)。系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1 機(jī)場(chǎng)視景仿真系統(tǒng)體系結(jié)構(gòu)
根據(jù)系統(tǒng)功能需求和性能需求的分析,現(xiàn)將機(jī)場(chǎng)視景仿真系統(tǒng)設(shè)計(jì)為地景數(shù)據(jù)管理模塊、視景多模型顯示模塊和人機(jī)交互模塊,如圖2所示。
圖2 機(jī)場(chǎng)視景仿真系統(tǒng)功能結(jié)構(gòu)
(1)地景數(shù)據(jù)管理模塊
地景數(shù)據(jù)管理模塊通過(guò)調(diào)用地景數(shù)據(jù)解譯動(dòng)態(tài)鏈接庫(kù)和坐標(biāo)轉(zhuǎn)換動(dòng)態(tài)鏈接庫(kù),對(duì)地景數(shù)據(jù)庫(kù)中的核心地景數(shù)據(jù)進(jìn)行解譯和坐標(biāo)轉(zhuǎn)換,完成對(duì)機(jī)場(chǎng)信息、建筑物模型信息和地形多邊形信息的預(yù)處理,為機(jī)場(chǎng)場(chǎng)景的快速搭建提供數(shù)據(jù)支持。
(2)視景多模型顯示模塊
視景多模型顯示模塊負(fù)責(zé)為觀察場(chǎng)景添加豐富可調(diào)的環(huán)境背景,主要包括光照模型和大氣衰減模型的設(shè)置。其中,光照模型負(fù)責(zé)產(chǎn)生具有色彩和方向特性的環(huán)境燈光,大氣衰減模型負(fù)責(zé)產(chǎn)生能見(jiàn)度與距離相關(guān)的大氣衰減效果。
(3)人機(jī)交互模塊
人機(jī)交互模塊負(fù)責(zé)添加觀察視角和漫游路徑可調(diào)的場(chǎng)景漫游等功能,使用戶通過(guò)簡(jiǎn)單的操作獲得更多的視覺(jué)信息,增加系統(tǒng)的交互性和實(shí)用性。
地景數(shù)據(jù)庫(kù)是整個(gè)視景仿真系統(tǒng)的數(shù)據(jù)基礎(chǔ),它的質(zhì)量直接影響到整個(gè)系統(tǒng)的顯示效果。本系統(tǒng)選用模擬飛行軟件X-Plane的地景模型庫(kù)作為數(shù)據(jù)基礎(chǔ)。X-Plane作為一款逼真的模擬飛行軟件,擁有一套完整且豐富的地景模型庫(kù),能夠?yàn)橛脩籼峁┤澜绯^(guò)200個(gè)機(jī)場(chǎng)的地景模型。X-Plane的地景模型庫(kù)為系統(tǒng)提供了完整且逼真的機(jī)場(chǎng)地景信息和模型,保證了機(jī)場(chǎng)地景視景仿真的真實(shí)感和準(zhǔn)確性。
X-Plane中使用的地景是由描述各種實(shí)體的模型文件和機(jī)場(chǎng)核心數(shù)據(jù)文件組成的。其中,模型文件主要包括描述建筑物的三維模型文件和描述地形的覆蓋多邊形文件;機(jī)場(chǎng)核心數(shù)據(jù)文件則記錄了搭建整個(gè)機(jī)場(chǎng)場(chǎng)景所需的核心數(shù)據(jù),主要包括:機(jī)場(chǎng)的名稱、類型、ICAO代碼、經(jīng)緯度覆蓋范圍;機(jī)場(chǎng)范圍內(nèi)所有建筑物模型的名稱、經(jīng)緯度;機(jī)場(chǎng)范圍內(nèi)所有地形多邊形的名稱、頂點(diǎn)坐標(biāo)、頂點(diǎn)索引規(guī)則;對(duì)機(jī)場(chǎng)范圍內(nèi)所有建筑物模型和覆蓋多邊形等單獨(dú)存儲(chǔ)起來(lái)的地景模型文件的引用信息等。
為滿足系統(tǒng)設(shè)計(jì)的要求,本文建立的機(jī)場(chǎng)地景數(shù)據(jù)庫(kù)使用X-Plane地景模型庫(kù)作為數(shù)據(jù)基礎(chǔ),將地景數(shù)據(jù)分為機(jī)場(chǎng)核心數(shù)據(jù)、建筑物模型和地形多邊形3種類型。其中,包含機(jī)場(chǎng)核心數(shù)據(jù)的地景文件具有特殊的文件格式,需要調(diào)用地景數(shù)據(jù)解譯動(dòng)態(tài)鏈接庫(kù)進(jìn)行解譯,地景數(shù)據(jù)解譯動(dòng)態(tài)鏈接庫(kù)是基于開源X-Plane地景處理工具DSFTOOL進(jìn)行仿寫的動(dòng)態(tài)鏈接庫(kù),可以實(shí)現(xiàn)對(duì)X-Plane中地景文件的解譯。此外,在X-Plane中建筑物模型和地形多邊形的位置信息都是以經(jīng)緯度的形式存儲(chǔ)的,在以外部文件的形式將其加載到場(chǎng)景之前,需要調(diào)用坐標(biāo)轉(zhuǎn)換動(dòng)態(tài)鏈接庫(kù)對(duì)其位置信息進(jìn)行坐標(biāo)轉(zhuǎn)換,坐標(biāo)轉(zhuǎn)換動(dòng)態(tài)鏈接庫(kù)是基于地圖投影坐標(biāo)轉(zhuǎn)換公式進(jìn)行封裝的動(dòng)態(tài)鏈接庫(kù),可以實(shí)現(xiàn)地理坐標(biāo)系與觀察場(chǎng)景坐標(biāo)系的轉(zhuǎn)換。地景數(shù)據(jù)庫(kù)的E-R模型如圖3所示。
圖3 地景數(shù)據(jù)庫(kù)E-R模型
由于X-Plane中地景文件格式的特殊性,地景信息經(jīng)過(guò)解譯后才能被獲取和使用,為實(shí)現(xiàn)機(jī)場(chǎng)場(chǎng)景的快速搭建,減少場(chǎng)景繪制過(guò)程中系統(tǒng)資源的消耗,需要對(duì)地景數(shù)據(jù)庫(kù)中的地景信息進(jìn)行解譯和預(yù)處理,對(duì)搭建機(jī)場(chǎng)場(chǎng)景所需的關(guān)鍵地景數(shù)據(jù)進(jìn)行管理和控制。地景數(shù)據(jù)管理模塊通過(guò)對(duì)地景數(shù)據(jù)解譯動(dòng)態(tài)鏈接庫(kù)和坐標(biāo)轉(zhuǎn)換動(dòng)態(tài)鏈接庫(kù)的調(diào)用實(shí)現(xiàn)對(duì)地景數(shù)據(jù)的解譯和預(yù)處理,具體步驟如下:首先,調(diào)用地景數(shù)據(jù)解譯動(dòng)態(tài)鏈接庫(kù)解譯地景文件,獲取需要搭建的機(jī)場(chǎng)信息;然后,對(duì)建筑物模型和地形多邊形中“所屬機(jī)場(chǎng)”屬性進(jìn)行索引,篩選出所有屬于所選機(jī)場(chǎng)的建筑物模型和地形多邊形;隨后,調(diào)用坐標(biāo)轉(zhuǎn)換動(dòng)態(tài)鏈接庫(kù),將篩選出的建筑物模型的經(jīng)緯度坐標(biāo)和地形多邊形的頂點(diǎn)坐標(biāo)轉(zhuǎn)換為場(chǎng)景坐標(biāo)系下的坐標(biāo);最后,將轉(zhuǎn)換后的坐標(biāo)信息分別存儲(chǔ)到相應(yīng)的字符串組中,等待系統(tǒng)指令進(jìn)行下一步的調(diào)用和處理。
地景信息管理模塊通過(guò)對(duì)地景數(shù)據(jù)的解譯和預(yù)處理,避免了場(chǎng)景搭建時(shí)對(duì)地景數(shù)據(jù)庫(kù)中無(wú)關(guān)建筑物模型和地形多邊形的加載與渲染,減少了場(chǎng)景繪制過(guò)程中系統(tǒng)資源的消耗,對(duì)機(jī)場(chǎng)地景的快速加載起到了至關(guān)重要的作用。
視景多模型顯示模塊使用Java3D API進(jìn)行編程開發(fā),為了產(chǎn)生豐富可調(diào)的環(huán)境背景,需要建立光照模型和大氣衰減模型。
在計(jì)算機(jī)圖形學(xué)中,給光反射建立一個(gè)非常精確的模型是極其復(fù)雜且不切實(shí)際的。計(jì)算機(jī)圖形學(xué)中的一般做法是建立一個(gè)高效的計(jì)算模型,同時(shí)又能很好地模擬視覺(jué)的真實(shí)感。經(jīng)典的Phong光照模型是一個(gè)在計(jì)算效率和繪制質(zhì)量?jī)烧咧g取得平衡的模型,它在計(jì)算機(jī)圖形學(xué)中得到了廣泛的應(yīng)用,因此本文選用Phong模型作為視景顯示的光照模型。
在Phong模型中,表面上一點(diǎn)的光線強(qiáng)度由光照式(1)給出
I=Iaka+Ipkdcosθ+Ipkscosnα
(1)
式中:Ia和Ip分別表示環(huán)境光源和點(diǎn)狀光源發(fā)出的光線強(qiáng)度,在Ip中光線的衰減已經(jīng)得到考慮。系數(shù)ka、kd與ks分別對(duì)應(yīng)于環(huán)境反射、漫反射與鏡面反射的反射系數(shù),這些系數(shù)由反射對(duì)象表面的材質(zhì)屬性來(lái)決定。n是鏡面反射指數(shù),也是由材質(zhì)決定,指數(shù)越大,高光的區(qū)域就越集中。
對(duì)波長(zhǎng)連續(xù)的光譜,本文選用RGB顏色模型,針對(duì)該顏色模型中的每一個(gè)顏色分量(紅、綠、藍(lán))應(yīng)用上述光照公式,來(lái)計(jì)算各個(gè)顏色分量的光照強(qiáng)度。
Java3D API支持Phong光照模型,當(dāng)一個(gè)可視對(duì)象受到光照時(shí),就可以依據(jù)該模型來(lái)進(jìn)行繪制。通過(guò)設(shè)置光照模型,可以為顯示場(chǎng)景生成包含具有色彩和方向特性的燈光環(huán)境背景。
大氣衰減模型的定義請(qǐng)參見(jiàn)文獻(xiàn)[10]。本文通過(guò)對(duì)景深效果的處理建立大氣衰減模型,模擬大氣衰減所產(chǎn)生的效果。景深原理和相關(guān)計(jì)算公式的詳細(xì)分析請(qǐng)參見(jiàn)文獻(xiàn)[11]。
某個(gè)繪制點(diǎn)的最終顏色可以由式(2)得出
C=f·C0+(1-f)·Cf
(2)
式中:C0是對(duì)象本身的顏色,Cf是霧的顏色,霧因子f是一個(gè)關(guān)于觀察者距離的遞減函數(shù)。因此,當(dāng)對(duì)象距離觀察者越遠(yuǎn),霧的顏色權(quán)重越大,而對(duì)象自身顏色的權(quán)重越小。此時(shí),對(duì)象看起來(lái)將會(huì)消失在霧里。霧因子f可以由式(3)中的函數(shù)表示
(3)
式中:z是到觀察點(diǎn)的距離,front和back是表示霧范圍的常數(shù),f的值在范圍[0.0,1.0]之間變化。
Java3D提供Fog類葉節(jié)點(diǎn)來(lái)支持景深效果處理。在Fog節(jié)點(diǎn)下,通過(guò)構(gòu)造線性函數(shù)來(lái)創(chuàng)建一個(gè)線性霧:Li-nearFog對(duì)象,其霧因子是式(3)中定義的線性函數(shù)。通過(guò)設(shè)置大氣衰減模型,可以為顯示場(chǎng)景生成顏色可調(diào)且能見(jiàn)度與距離相關(guān)的霧效果。
系統(tǒng)測(cè)試的硬件環(huán)境為聯(lián)想臺(tái)式計(jì)算機(jī),配置信息為:雙核四線程i7-3770CPU、8GRAM、200 G硬盤;系統(tǒng)測(cè)試的軟件平臺(tái)為Eclipse Java Oxygen。
以上海虹橋機(jī)場(chǎng)、長(zhǎng)沙黃花機(jī)場(chǎng)和北京南苑機(jī)場(chǎng)為例,機(jī)場(chǎng)三維場(chǎng)景的顯示效果如圖4所示。
圖4 機(jī)場(chǎng)視景仿真效果測(cè)試
構(gòu)建機(jī)場(chǎng)場(chǎng)景時(shí),場(chǎng)景內(nèi)圖形的多邊形數(shù)反映了整個(gè)場(chǎng)景的復(fù)雜度,3個(gè)機(jī)場(chǎng)場(chǎng)景需要繪制的圖形多邊形數(shù)和場(chǎng)景漫游時(shí)的每秒幀數(shù)FPS見(jiàn)表1。
如表1所示,3個(gè)機(jī)場(chǎng)需要加載的圖形多邊形數(shù)量不同,場(chǎng)景的復(fù)雜度不同。其中,上海虹橋機(jī)場(chǎng)的多邊形數(shù)最多,場(chǎng)景內(nèi)模型的復(fù)雜多最高,在場(chǎng)景繪制時(shí)消耗的時(shí)間和資源也最多。在進(jìn)行場(chǎng)景漫游時(shí),3個(gè)機(jī)場(chǎng)的FPS都在25幀/秒以上,動(dòng)畫顯示連貫,成像距離可動(dòng)態(tài)調(diào)整,能
表1 機(jī)場(chǎng)復(fù)雜度與FPS對(duì)比
夠?yàn)橛脩籼峁┮暯强烧{(diào)且連貫清晰的場(chǎng)景顯示效果,也為系統(tǒng)的二次開發(fā)提供了可靠的機(jī)場(chǎng)地景顯示平臺(tái),符合系統(tǒng)設(shè)計(jì)的性能要求。
圖5是對(duì)上海虹橋機(jī)場(chǎng)進(jìn)行背景環(huán)境效果的測(cè)試。由圖5(a)可見(jiàn),通過(guò)對(duì)光照模型的設(shè)置,系統(tǒng)可以生成顏色、亮度可調(diào)的背景環(huán)境光,模擬生成白天和黑夜的顯示效果;由圖5(b)可見(jiàn),通過(guò)對(duì)大氣衰減模型的設(shè)置,系統(tǒng)可以模擬大氣衰減所產(chǎn)生的效果,生成顏色可調(diào)的霧背景。系統(tǒng)生成的機(jī)場(chǎng)觀察場(chǎng)景具有豐富可調(diào)的環(huán)境背景以及大氣衰減效果,場(chǎng)景的能見(jiàn)度、視景圖像的亮度、背景燈光和霧的顏色均可調(diào)。黑夜、霧等背景的添加可以更有效幫助管制員進(jìn)行有針對(duì)性的分析、驗(yàn)證和演練,符合系統(tǒng)設(shè)計(jì)的性能要求,進(jìn)一步提高了系統(tǒng)的實(shí)用性。
圖5 環(huán)境背景效果測(cè)試
本文基于X-Plane模擬飛行軟件搭建機(jī)場(chǎng)地景數(shù)據(jù)庫(kù),基于Java3D API開發(fā)多模型的交互式的機(jī)場(chǎng)視景顯示平臺(tái),實(shí)現(xiàn)了機(jī)場(chǎng)地景的快速加載和可視化。系統(tǒng)測(cè)試結(jié)果表明該系統(tǒng)可以快速建立地貌與實(shí)際相符的機(jī)場(chǎng)地景,具有豐富可調(diào)的環(huán)境背景,可以在此基礎(chǔ)上進(jìn)行基于機(jī)場(chǎng)場(chǎng)面運(yùn)行仿真系統(tǒng)、機(jī)場(chǎng)起降指揮系統(tǒng)等服務(wù)于機(jī)場(chǎng)場(chǎng)面監(jiān)視的二次開發(fā),具有較高的實(shí)用性和靈活性,為機(jī)場(chǎng)的視景仿真提供了一個(gè)可行的方案。