高興燁,劉建軍,任 鑫,鄒小端,李春來
(1.中國科學(xué)院國家天文臺,北京 100012;2.中國科學(xué)院研究生院,北京 100049)
嫦娥二號探測器是我國發(fā)射的第二顆繞月探測器,其主要任務(wù)是對嫦娥三號預(yù)選著陸區(qū)虹灣開展高分辨率成像[1]。執(zhí)行月球探測任務(wù)的嫦娥任務(wù)探測器不同于地球軌道的航天器,其飛行過程復(fù)雜,飛行風(fēng)險大,探測環(huán)境未知性強,科學(xué)探測過程具有唯一性,所以必須根據(jù)探測器的狀態(tài),針對科學(xué)探測過程中的重大關(guān)鍵事件進(jìn)行地面仿真驗證,以便進(jìn)行決策分析,優(yōu)化探測計劃。
針對以上仿真任務(wù)的需要,本文發(fā)揮視景仿真的優(yōu)勢,結(jié)合嫦娥一號探測器獲得的地形數(shù)據(jù)以及嫦娥二號探測器的星歷數(shù)據(jù)和日地月星歷數(shù)據(jù),利用計算機(jī)圖形學(xué)知識,設(shè)計了針對嫦娥二號任務(wù)的在軌運行視景仿真系統(tǒng),它通過時間驅(qū)動三維可視化場景更新,直觀展示嫦娥二號探測器繞月探測全過程以及日地月時空關(guān)系,不僅能為有效載荷的科學(xué)探測計劃提供決策依據(jù),而且能夠通過回放功能,再現(xiàn)嫦娥二號探測器繞月探測過程,對工程匯報和科普工作的開展具有重要意義。
目前視景仿真系統(tǒng)主要有兩種構(gòu)建方案。第一種基于OpenGL、DirectX等底層三維應(yīng)用程序編程接口(Application Programming Interface,API),從系統(tǒng)底層進(jìn)行構(gòu)建,采用這種方案設(shè)計靈活,系統(tǒng)精簡,但開發(fā)效率低下,工作量大,開發(fā)周期長。第二種是基于已有三維開發(fā)平臺進(jìn)行二次開發(fā),采用這種方案,可以大大提高開發(fā)效率,但系統(tǒng)難免冗余。目前主流的開發(fā)平臺有Vega、Open GVS、Open Scene Graph(OSG)等,這些軟件各有特色,都能完成大型視景仿真程序的構(gòu)建。其中OSG是一個面向?qū)ο蟮娜S圖形軟件開發(fā)包,它包含了豐富的類庫,性能優(yōu)越,操作靈活,更重要的是OSG是開源軟件,因此受到廣泛關(guān)注。目前OSG在世界仿真軟件市場的占有率已超過51%[2]。本文通過結(jié)合OSG開發(fā)包和Virtual Planet Builder(VPB)擴(kuò)展工具包以及微軟基礎(chǔ)類(Microsoft Foundation Classes,MFC)完成仿真系統(tǒng)的構(gòu)建。OSG使用可移植的ANSI C++編寫,并使用已成為工業(yè)標(biāo)準(zhǔn)的Open GL底層渲染API,具有良好的跨平臺特性。OSG運行時文件由一系列動態(tài)鏈接庫和可執(zhí)行文件組成,這些鏈接庫共分為5大類,共同構(gòu)成了OSG的體系(圖1)[3]。運用OSG提供的體系結(jié)構(gòu),導(dǎo)入構(gòu)建的三維模型,能夠完成場景的高效渲染。VPB是OSG針對海量地形圖形顯示需求所開發(fā)的擴(kuò)展工具包,能夠以各種格式的地形和影像數(shù)據(jù)源構(gòu)建OSG支持的高速讀取的地形模型,通過結(jié)合OSG可以完成海量地形數(shù)據(jù)的高速渲染。VPB的特點在于支持海量的地形數(shù)據(jù)處理,甚至可以同時處理和容納幾個星球的地形和影像數(shù)據(jù)[4]。
圖1 OSG體系結(jié)構(gòu)Fig.1 OSG architecture
為通過可視化仿真嫦娥二號探測器繞月探測過程達(dá)到驗證嫦娥二號探測器探測指令可行性的目的,本系統(tǒng)設(shè)計完成以下主要功能:
(1)根據(jù)星歷數(shù)據(jù)動態(tài)更新嫦娥二號探測器、日地月空間位置及完成三維動態(tài)顯示。
(2)根據(jù)用戶要求設(shè)定系統(tǒng)內(nèi)部時間分辨率,動態(tài)改變顯示速度,并以時間驅(qū)動仿真過程。
(3)利用嫦娥一號探測器獲取的地形數(shù)據(jù)及影像數(shù)據(jù),顯示嫦娥二號探測器星下點月形月貌。
(4)根據(jù)飛控指令文件與CCD立體相機(jī)安裝參數(shù),仿真嫦娥二號探測器CCD立體相機(jī)數(shù)據(jù)獲取過程。
(5)視點的切換和控制。
(6)動態(tài)顯示衛(wèi)星位置、速度、當(dāng)前飛控指令等信息。
根據(jù)以上功能需求,設(shè)計的嫦娥二號探測器在軌運行視景仿真系統(tǒng)由三維顯示模塊、仿真時間驅(qū)動模塊、數(shù)據(jù)管理模塊構(gòu)成,總體框架圖如圖2。
圖2 系統(tǒng)總體框架圖Fig.2 Block diagram of the system
數(shù)據(jù)管理模塊用于存放和組織系統(tǒng)所需要的數(shù)據(jù),主要對嫦娥一號獲取的月球地形數(shù)據(jù)(DEM)和影像數(shù)據(jù)(DOM)處理后得到的地形數(shù)據(jù)庫進(jìn)行管理;仿真時間驅(qū)動模塊主要功能是通過時間驅(qū)動完成仿真實體狀態(tài)及空間位置的更新;顯示模塊提供系統(tǒng)的渲染及可視化功能。
視景仿真程序的實現(xiàn)大致分為視景仿真環(huán)境制作和仿真驅(qū)動[5]。仿真環(huán)境制作主要是構(gòu)造出真實的三維模型,而仿真驅(qū)動則是根據(jù)數(shù)據(jù)和力學(xué)模型更新三維模型空間位置,以及完成系統(tǒng)的實時交互響應(yīng)及事件響應(yīng)等。
嫦娥二號探測器不同于以往的地球軌道航天器,在大部分任務(wù)周期中,它都將進(jìn)行繞月探測,構(gòu)建逼真的月表模型和精細(xì)的嫦娥二號探測器模型,可以大大提高對探測任務(wù)所處的空間環(huán)境仿真的真實度。至于地球模型和太陽模型并不是仿真的重點,可以在仿真程序中通過紋理貼圖的方式實現(xiàn)。下面對構(gòu)建月球和嫦娥二號探測器精細(xì)模型的實現(xiàn)方法進(jìn)行論述。
3.1.1 月球模型數(shù)據(jù)構(gòu)建
利用嫦娥一號探測器獲得的影像和地形數(shù)據(jù)實現(xiàn)月表形貌環(huán)境的真實模擬。嫦娥一號探測器獲得的120 m分辨率的正射影像數(shù)據(jù)和500 m空間分辨率的地形數(shù)據(jù)的數(shù)據(jù)量在GB級,考慮到大規(guī)模地形數(shù)據(jù)流暢繪制的問題,采用層次細(xì)節(jié)模型(Level of Detail Model,LOD)繪制算法繪制月表地形地貌。層次細(xì)節(jié)模型繪制算法是指在場景中進(jìn)行模型繪制時距離視點越遠(yuǎn)的地方分辨率越低,距離視點越近的地方分辨率越高,而且隨著視點的變化,場景的變化具有連續(xù)性,這樣即能保證顯示大規(guī)模數(shù)據(jù)的流暢性,又不影響顯示的效果[6]。OSG為了加快海量數(shù)據(jù)的渲染,其內(nèi)部支持層次細(xì)節(jié)模型繪制算法,采用PagedLOD分頁數(shù)據(jù)庫的方式對層次細(xì)節(jié)模型進(jìn)行調(diào)度。具體構(gòu)建月球模型的步驟是采用OSG擴(kuò)展工具包VPB中的OSGDEM應(yīng)用程序?qū)㈡隙鹨惶柼綔y器獲得的tif格式正射影像和月球地形數(shù)據(jù)進(jìn)行處理,生成osga格式的月球三維模型。將生成的模型導(dǎo)入到三維場景中,完成月表地形地貌環(huán)境的可視化(圖3)。
圖3 經(jīng)OSGDEM程序處理的嫦娥一號探測器獲得的部分月球DEM數(shù)據(jù)的格網(wǎng)顯示Fig.3 Terrain grid of the DEM data obtained by the Chang’E-1 as processed by the OSGDEM program
3.1.2 嫦娥二號探測器模型的構(gòu)建
目前三維建模軟件已經(jīng)相當(dāng)成熟。相比采用程序進(jìn)行模型的構(gòu)建,采用成熟的三維建模軟件進(jìn)行三維模型建模,可以明顯提高建模效率及模型的精細(xì)程度。3D Studio MAX是個人計算機(jī)上最普及的三維動畫和建模軟件,集成了豐富的第三方插件,支持多種格式導(dǎo)入與導(dǎo)出[7]。本文采用3DS MAX2010構(gòu)建精細(xì)的嫦娥二號探測器(圖4),通過第三方插件導(dǎo)出OSG支持格式的模型供三維場景導(dǎo)入。
圖4 嫦娥二號探測器3D模型Fig.4 3D model of the Chang’E-2 spacecraft
在仿真環(huán)境構(gòu)建完成之后,需要根據(jù)仿真任務(wù)的要求驅(qū)動模型按時間進(jìn)行空間位置的更新。模型的空間位置變化通過仿真循環(huán)實現(xiàn)(圖5)。在系統(tǒng)的每次仿真循環(huán)中,系統(tǒng)內(nèi)部時間根據(jù)設(shè)定的時間步長進(jìn)行更新,然后系統(tǒng)根據(jù)當(dāng)前系統(tǒng)內(nèi)部時間訪問星歷數(shù)據(jù)庫,檢索星歷數(shù)據(jù),利用檢索到的星歷數(shù)據(jù)更新仿真實體的位置和狀態(tài),達(dá)到以時間驅(qū)動仿真實體變化的目的。仿真驅(qū)動的具體實現(xiàn)方法如下。
3.2.1 星歷數(shù)據(jù)庫的構(gòu)建與訪問
作為根據(jù)星歷數(shù)據(jù)更新仿真模型空間位置的仿真系統(tǒng),每一次仿真循環(huán)都要訪問星歷數(shù)據(jù)進(jìn)行場景的更新,所以能否實時高效地訪問星歷數(shù)據(jù)是保證系統(tǒng)流暢運行的關(guān)鍵。本文采用數(shù)據(jù)庫的方式對星歷進(jìn)行組織,可以有效地提高星歷數(shù)據(jù)的訪問速度。原始日、地、月、嫦娥二號探測器的位置數(shù)據(jù)和衛(wèi)星的姿態(tài)數(shù)據(jù)以文本格式存儲,本系統(tǒng)先將星歷數(shù)據(jù)轉(zhuǎn)換為以時間為索引的數(shù)據(jù)庫文件。在系統(tǒng)實時運行的某個時刻,訪問該星歷數(shù)據(jù)庫,查詢?nèi)我鈺r刻仿真實體的空間位置和衛(wèi)星的姿態(tài)信息等,速度達(dá)到毫秒級,完全能保證系統(tǒng)實時更新三維場景的仿真實體,達(dá)到實時渲染的目的。
圖5 系統(tǒng)仿真流程圖Fig.5 Flowchart of the simulation system
3.2.2 仿真實體空間位置的實時更新
OSG的主要功能是提供場景樹類,它將場景中的對象按照樹的形式進(jìn)行組織[8]。通過場景樹的方式可以大大提高場景的渲染效率。場景樹由若干節(jié)點構(gòu)成,節(jié)點可以是不同的類型,如葉子節(jié)點、根節(jié)點、枝干節(jié)點。節(jié)點還可以被整合到多個組節(jié)點中,作用于組節(jié)點的變換矩陣同樣會作用于整合組節(jié)點中的子節(jié)點。在本系統(tǒng)中為方便日、地、月、嫦娥二號探測器空間位置實時更新,在場景的根節(jié)點中添加日、地、月、嫦娥二號探測器更新變換組節(jié)點,再將對應(yīng)的模型節(jié)點整合到對應(yīng)的組節(jié)點中(圖6)。每一次仿真循環(huán),系統(tǒng)訪問各個仿真實體的星歷數(shù)據(jù)庫,根據(jù)當(dāng)前系統(tǒng)內(nèi)部時間讀取各個星體的空間位置數(shù)據(jù),然后實時地更新對應(yīng)的組節(jié)點的變換矩陣,以達(dá)到更新場景模型空間位置的目的。
圖6 空間環(huán)境場景層次圖Fig.6 Scene graph of the space environment
3.2.3 CCD立體相機(jī)探測過程的仿真
嫦娥二號探測器CCD立體相機(jī)探測過程的可視化仿真通過訪問飛控指令文件并結(jié)合三維場景的更新實現(xiàn)。飛控指令文件是以時間順序記錄嫦娥二號探測器探測計劃的文本格式存儲的指令文件。每次仿真循環(huán)中,系統(tǒng)都會訪問飛控指令文件(圖5),以獲得當(dāng)前系統(tǒng)內(nèi)部時刻的飛控指令,若指令為立體相機(jī)加電,則在衛(wèi)星更新變換組節(jié)點中添加根據(jù)相機(jī)安裝參數(shù)繪制的兩條透明光束節(jié)點(圖7),若指令為立體相機(jī)斷電,則從衛(wèi)星更新變換組節(jié)點移除該節(jié)點,通過相機(jī)光束節(jié)點的添加和移除更新場景達(dá)到CCD立體相機(jī)探測過程的可視化。
3.2.4 視點的控制和切換
圖7 嫦娥二號探測器CCD立體相機(jī)15 km成像原理圖Fig.7 Illustration of the pointing of the CCD stereo camera on the Chang’E-2 on an orbit of 15km altitude
在大范圍的虛擬場景中,為了使用戶通過簡單的視點操作及時獲取有效信息和觀察仿真過程,本系統(tǒng)設(shè)計了以下幾種視點觀察方案。
(1)月心模式:在三維場景中,月球永遠(yuǎn)位于屏幕的中心,通過控制鼠標(biāo)完成視點距月球的遠(yuǎn)近,以及使視點環(huán)繞月球轉(zhuǎn)動。通過這種觀察方式,一方面方便觀察月球晨昏狀態(tài)以及月球地形地貌,另一方面可以宏觀地了解嫦娥二號探測器環(huán)月軌道。本系統(tǒng)以月固坐標(biāo)系為場景空間絕對坐標(biāo)系進(jìn)行構(gòu)建。月固坐標(biāo)系即月心為坐標(biāo)原點,z軸與地軸平行指向北極點,x軸指向月球零度經(jīng)線與月球赤道的交點,y軸垂直于xoy平面構(gòu)成右手坐標(biāo)系。所以本系統(tǒng)中月球的空間位置不會改變,可以通過軌跡球[9]的方式實現(xiàn)月心模式瀏覽方式。OSG提供了軌跡球控制類Trackball Manipulator,通過Trackball Manipulator類可以輕松實現(xiàn)月心模式的瀏覽。
(2)衛(wèi)星模式:此種模式下,嫦娥二號探測器永遠(yuǎn)位于屏幕的中心,通過控制鼠標(biāo)完成視點距嫦娥二號探測器的遠(yuǎn)近,以及使視點圍繞嫦娥二號探測器轉(zhuǎn)動。通過這種觀察方式,一方面方便詳細(xì)地了解星下點地形地貌,另一方面便于觀察衛(wèi)星的姿態(tài)以及CCD立體相機(jī)探測過程。在月固坐標(biāo)下,衛(wèi)星的空間位置在三維場景中不斷更新,所以可以通過跟蹤軌跡球的方式實現(xiàn)。將被跟蹤的物體設(shè)為軌跡球的中心,并且設(shè)定視點與跟蹤物體有同樣的速度與運動方向。OSG同樣提供了Node Tracker Manipulator類實現(xiàn)。
(3)地球模式:在三維場景中,地球永遠(yuǎn)位于屏幕的中心,通過控制鼠標(biāo)完成視點距月球的遠(yuǎn)近,以及使視點環(huán)繞月球轉(zhuǎn)動。通過這種觀察方式,一方面方便觀察地球晨昏狀態(tài),另一方面可以直觀地了解月球與地球的相對位置。在月固坐標(biāo)系下,地球空間位置在三維場景中是不斷更新的。所以同樣可以通過Node Tracker Manipulator類實現(xiàn),將地心設(shè)為跟蹤的中心,視點保持與地球同樣的運動速度與方向。
系統(tǒng)以VS2008為工具進(jìn)行開發(fā),基于OSG和VPB開發(fā)了嫦娥二號探測器在軌運行視景仿真系統(tǒng)。本文的仿真結(jié)果如圖8。圖中仿真了CE-2衛(wèi)星于10月28日22點14分49秒時刻,飛越月球正面虹灣地區(qū),CCD立體相機(jī)開機(jī)獲取月面兩線陣影像數(shù)據(jù)的過程。該時刻,衛(wèi)星距離月面高度為15 km,星下點位置為北緯42.5°,西經(jīng)33.1°,視點操作方式為衛(wèi)星模式。
圖8 嫦娥二號探測器虹灣地區(qū)探測過程仿真效果圖Fig.8 Screenshot from the simulation system for the Chang’E-2 in exploring the Sinus Iridum on the Moon
本系統(tǒng)是以時間為驅(qū)動的四維仿真系統(tǒng)。以時間為驅(qū)動,實時更新場景中仿真實體的空間位置及相互關(guān)系,仿真了日地月空間環(huán)境,利用嫦娥一號探測器獲得的數(shù)據(jù)展現(xiàn)了嫦娥二號星下點的月形月貌情況,仿真了CCD立體相機(jī)數(shù)據(jù)的獲取過程,取得了不錯的效果。但本系統(tǒng)存在不足,不能實時查詢衛(wèi)星平臺及其有效載荷的工作狀態(tài),在未來開發(fā)版本中將引入實時遙測數(shù)據(jù),對這些信息進(jìn)行查詢和顯示。另外,還需考慮與三維立體硬件系統(tǒng)相結(jié)合,實現(xiàn)沉浸式立體顯示[10]。
[1]歐陽自遠(yuǎn).嫦娥一號衛(wèi)星的初步成果和嫦娥二號衛(wèi)星的使命[J].航天器工程,2010,19(5):1-6.Ouyang Ziyuan.Science Results of Chang’e-1Lunar Orbiter and Mission Goals of Chang’e-2[J].Spacecraft Engineering,2010,19(5):1-6.
[2]申閆春,朱幼虹,曹莉,等.基于OSG的三維仿真平臺的設(shè)計和實現(xiàn) [J].計算機(jī)仿真,2007,24(6):207-211.Shen Yanchun,Zhu Youhong,Cao Li,et al.Design and Implementation of 3D Simulation Platform Based on OSG [J].Computer Simulation,2007,24(6):207-211.
[3]Paul Martz.Open Scene Graph Quick Start Guide [M/OL].http://www.skew-matrix.com/OSGQSG/.
[4]Introduce to VirtualPlanetBuilder [EB/OL].http://www.openscenegraph.org/projects/Virtual-PlanetBuilder.
[5]吳家鑄.視景仿真技術(shù)與應(yīng)用 [M].西安:西安電子科技大學(xué)出版社,2001.
[6]萬定生,龔匯豐.一種基于四叉樹的大規(guī)模地形實時生成算法 [J].計算機(jī)工程與應(yīng)用,2005(33):190-192.Wang Dingsheng,Gong Huifeng.A Quadtree-based and Real-time Generation Algorithm for Large Scale Terrain [J].Computer Engineering and Applications,2005(33):190-192.
[7]王琦.Autodesk 3ds Max2010標(biāo)準(zhǔn)培訓(xùn)教材 [M].北京:人民郵電出版社,2009:32-33.
[8]程菊明,李梅蓮,劉連芳.虛擬場景的管理及其在OSG中的應(yīng)用 [J].微計算機(jī)信息,2008,24(6):25-27.Cheng Juming,Li Meilian,Liu Lianfang.The Management of Virtual Reality Scene and It’s Application in OSG [J].Microcomputer Information,2008,24(6):25-27.
[9]Introduce to trackball[EB/OL].http://www.opengl.org/wiki/Trackball.
[10]徐偉忠,劉輝,談?wù)?三維立體顯示系統(tǒng)的開發(fā)研究 [J].中國圖像圖形學(xué)報,1997,2(2/3):144-148.Xu Weizhong,Liu Hui,Tan Zheng.Study on Stereo Display System [J].China Journal of Image and Graphics,1997,2(2/3):144-148.