張紹澤,任 磊
飛行仿真系統中三維地形的仿真實現
張紹澤,任 磊
(中國電子科技集團公司第二十研究所,西安 710068)
三維地形是飛行仿真系統中的重要組成部分,機場跑道作為飛機起飛降落過程中不可或缺的部分,其真實感直接影響著飛行仿真系統中地形的真實感。為了創建包含高真實感機場跑道的三維地形,在Unity下利用FlightGear中的地形數據、機場紋理數據及Google Maps紋理數據,通過動態創建地形網格和材質的方法,結合多線程技術,實現了三維地形的并行創建。實驗結果表明,提出的方法可以快速創建包含高真實感機場跑道的三維地形,可用于飛行仿真系統中三維地形的仿真實現。
FlightGear;GoogleMaps;三維地形;機場跑道;Unity
飛行仿真系統是現代航空科研、教學、試驗等不可缺少的工具,在飛行性能研究、飛行品質評估和飛行訓練等方面具有重要的經濟價值和軍事意義[1]。三維地形作為飛行仿真系統的重要組成部分,其幾何形狀及紋理的精細程度直接影響著飛行仿真系統的真實感。而飛機的起飛和降落是飛行仿真過程中不可或缺的部分,這些過程主要都是在機場跑道完成的,因此飛行仿真系統的三維地形除了要保證一般地物的高真實感,還需要確保機場跑道的高真實感。
OSGEarth[2]是基于三維引擎(OpenSceneGraph,OSG)[3]開發的三維數字地球引擎,可實現三維地形的仿真。王雷[4]等基于OSGEarth實現了大型三維空戰場景的搭建,雖然其搭建的場景包含了大規模的三維地形,但地形中機場跑道和其它地物的精度及真實感不高。FlightGear[5]作為一款開源、跨平臺的飛行模擬程序,提供了三維地形的仿真實現,已有多位學者利用其進行飛行仿真系統的開發[6-8]。雖然FlightGear的地形系統包含高精度、高真實感的機場跑道,但是對于地形中的其它地物,其紋理主要是通過圖片的重復鋪貼來實現,有明顯的人工痕跡,導致真實感較低。
為解決以上問題,本文將FlightGear中的地形數據、機場紋理數據和Google Maps的紋理數據相結合,通過動態創建地形網格和材質的方法,利用多線程技術,實現了包含高真實感機場跑道的三維地形的并行創建。
FlightGear中的地形數據存儲在按經緯度劃分的文件夾內,每個文件夾內包含了構成該經緯度范圍內地形所需的數據,這些數據使用Binary Terrain Format編碼形式以BTG文件格式存儲。每個BTG文件對應一個地形塊,包含了組成該地形的包圍球、頂點列表、法線列表、紋理坐標列表、顏色列表、三角形和材質等信息。其中,頂點的坐標為基于WGS84橢球體的笛卡爾地心坐標,包含經度、緯度和高度;三角形信息包含了構成三角形的頂點索引;材質信息包含了材質名稱、使用該材質的三角形起始索引及三角形數量[9]。
在Unity中,地形主要由地形網格和對應的材質組成。將創建的材質賦給對應的地形網格,經過Unity渲染顯示即可實現三維地形的可視化。
為創建具有高真實感機場跑道的三維地形,本文使用FlightGear的地形數據創建高精度的地形網格,使用FlightGear的機場跑道紋理和Google Maps的紋理數據分別創建高真實感的機場跑道材質和其它地物材質。由于FlightGear地形數據中存儲的材質相關信息與FlightGear使用的材質相對應,因此對于FlightGear地形數據中除了機場跑道的其它地物材質所對應三角形,其頂點紋理坐標需要重新計算,使其適合由Google Maps紋理創建的材質。
Unity中可以使用點的三維坐標、法線坐標、紋理坐標以及構成三角形的頂點索引動態創建網格。BTG文件中除了包含Unity創建網格所需的信息外,還包含材質信息。因此可以充分利用BTG文件包含的信息進行地形網格的創建。具體步驟如下:
(1)根據需求確定需要創建地形的經緯度范圍及Google Maps紋理的縮放等級;
(2)加載并解碼對應的BTG文件,得到點的三維坐標、法線坐標、紋理坐標、構成三角形的頂點索引以及材質信息;
(3)以BTG文件對應的經緯度創建空物體作為父節點,以BTG文件名創建空物體作為子節點;
(4)根據材質信息,以每種材質名創建空物體作為BTG物體的子節點,如果材質是機場跑道,則執行步驟(5),如果材質是其它地物類型,則執行步驟(6);
(5)根據材質對應頂點的三維坐標、法線坐標、紋理坐標及構成三角形的頂點索引創建網格,然后執行步驟(10);
(6)根據式(1)和式(2)計算材質對應三角形所包含頂點的Google Maps坐標;
(7)對該BTG文件中所有頂點進行遍歷,確定所有頂點的經緯度范圍,并如式(1)~式(4)所示,確定該BTG文件對應的Google Maps瓦片坐標范圍;


該經緯度對應的瓦片坐標為[10]:


(8)根據步驟(7)得到的結果對步驟(6)得到的坐標進行歸一化處理,并將其作為頂點的紋理坐標;
(9)根據材質對應頂點的三維坐標、法線坐標、構成三角形的頂點索引及步驟(8)計算得到的紋理坐標創建網格;
(10)為材質物體添加MeshFliter組件,并將創建的網格作為組件的Mesh,完成地形網格創建。
FlightGear地形使用的材質包括機場跑道材質及其它地物材質,材質信息存儲在Materials文件夾內的xml文件中,文件包含了材質名稱及使用的紋理圖片。
對于機場跑道,每個跑道使用的紋理圖片是固定的,因此本文根據xml文件中的材質信息,預先在Unity中創建了相應的材質。使用機場跑道材質時直接從預先創建的材質中查找該機場跑道對應的材質。
對其它地物,其對應材質需根據Google Maps紋理動態創建。創建材質時,先根據創建地形網格步驟(7)得到的Google Maps瓦片坐標范圍加載對應圖片,然后將圖片按瓦片坐標排列并拼接,最后使用拼接后的圖片創建對應的材質。
在進行飛行仿真時,通常需要加載大范圍的三維地形,如果使用單線程創建地形,則需要耗費大量的時間,為了縮短創建地形所需的時間,本文使用Unity的多線程插件Loom對地形創建過程加速。
為了驗證本文提出方法的有效性,本文進行了仿真實驗。以下實驗均在Windows7 64位環境下運行,使用的Unity版本為5.6.0f3,電腦配置為:Intel Core i7-4790 3.6 GHz 4核8線程CPU,16 GB內存,NVIDIA GeForce GTX 1070顯卡。
首先,本文將FlightGear默認材質創建的地形和本文提出方法創建的地形進行了對比。實驗結果如圖1所示。由圖1可知,FlightGear默認材質創建的地形紋理樣式少,而且對于同種材質使用相同的紋理重復鋪貼,人工痕跡明顯,真實感較低。本文提出的方法將材質替換為Google地圖紋理創建的材質后,不同地物類型容易辨別,而且紋理細節豐富,顏色過渡平滑,真實感更強。

圖1 FlightGear默認材質創建地形與本文提出方法創建地形對比
其次,對本文提出方法創建的機場跑道進行了渲染顯示,并給出了其在本單位開發的飛行仿真系統中的效果,實驗結果如圖2所示。由圖2可知,本文提出方法創建的機場跑道筆直、平坦,紋理分辨率高,跑道上的劃線清晰,真實感較高。

圖2 本文提出方法創建的機場跑道及其在飛行仿真系統中的效果
接下來,給出了本文提出方法創建的地形在本單位開發的飛行仿真系統中的實驗結果,如圖3所示。由圖3可知,本文提出方法創建的地形細節豐富,紋理清晰,提升了飛行仿真系統的真實感。

圖3 本文提出方法創建的地形在飛行仿真系統中的應用
最后,本文對使用單線程方法和多線程方法創建地形所用的時間進行了實驗。實驗分為多組,每組地形相同,使用兩種方法分別進行多次實驗,并將所用的平均時間進行了對比,實驗結果如表1所示。由表1可知,使用多線程方法與使用單線程方法相比速度最多提升了27.4倍,最少提升了6.3倍。即使是速度提升最少的情況,創建地形時間也由3分多鐘降低到半分鐘左右,速度提升明顯。實驗結果表明,使用多線程方法可以有效降低創建地形所用的時間。

表1 單線程與多線程創建地形時間對比
由以上實驗可見,本文提出的方法可以利用并行技術快速地創建包含高真實感機場跑道的三維地形。
本文基于FlightGear中的地形數據、機場紋理數據和Google Maps紋理數據,利用多線程技術,在Unity下實現了三維地形的并行創建。實驗結果表明提出的方法可快速創建包含高真實感機場跑道的三維地形,可用于飛行仿真系統中的地形仿真。
[1] 童中翔,王曉東. 飛行仿真技術的發展與展望[J]. 飛行力學,2002(3):5-8.
[2] OSGEarth – 3D Mapping Engine & Geospatial SDK for OpenSceneGraph. http://osgearth.org/.
[3] OpenSceneGraph. http://www.openscenegraph.org/.
[4] 王雷,丁華. 基于OSGEarth的大型三維空戰場景的搭建[J]. 軟件,2016,37(1):114-116+ 131.
[5] FlightGear Flight Simulator – sophisticated, professional, open-source. https://www.flightgear.org.
[6] 黃花,徐幼平,鄧志武. 基于FlightGear模擬器的實時可視化飛行仿真系統[J]. 系統仿真學報,2007(19):4421-4423.
[7] 蔚海軍. 基于FlightGear的直升機飛行模擬系統研究[D]. 大連:大連理工大學,2008.
[8] 劉鵬. 基于FlightGear 的無人直升機飛行仿真技術研究[D]. 南京:南京航空航天大學,2011.
[9] BTG_file_format.https://wiki.flightgear.org/BTG_file_format.
[10] 張紹澤,任磊. Google Maps在Unity中的可視化及交互方法[J]. 現代導航,2019,10(1):34-38.
Realization of 3D Terrain Simulation in Flight Simulation System
ZHANG Shaoze, REN Lei
3D terrain is an important part of flight simulation system. Airport runway is an indispensable part of the flight landing process, and its authenticity directly affects the authenticity of flight simulation system. In order to create 3D terrain with high realistic airport runway, the terrain data in FlightGear, airport texture data and Google Maps texture data are used under Unity. Through the method of dynamic creating terrain grid and material, combined with multithreading technology, the parallel creation of 3D terrain is realized. The experimental results show that the proposed method can quickly create 3D terrain including high realistic airport runway, and can be used to simulate 3D terrain in flight simulation system.
FlightGear; Google Maps; 3D Terrain; Airport Runway; Unity
TP391
A
1674-7976-(2021)-06-434-04
2021-04-26。
張紹澤(1985.06—),黑龍江富錦人,博士,工程師,主要研究方向為三維場景仿真、VR仿真。