高興燁,劉建軍,任 鑫,鄒小端,李春來
(1.中國科學院國家天文臺,北京 100012;2.中國科學院研究生院,北京 100049)
嫦娥二號探測器是我國發射的第二顆繞月探測器,其主要任務是對嫦娥三號預選著陸區虹灣開展高分辨率成像[1]。執行月球探測任務的嫦娥任務探測器不同于地球軌道的航天器,其飛行過程復雜,飛行風險大,探測環境未知性強,科學探測過程具有唯一性,所以必須根據探測器的狀態,針對科學探測過程中的重大關鍵事件進行地面仿真驗證,以便進行決策分析,優化探測計劃。
針對以上仿真任務的需要,本文發揮視景仿真的優勢,結合嫦娥一號探測器獲得的地形數據以及嫦娥二號探測器的星歷數據和日地月星歷數據,利用計算機圖形學知識,設計了針對嫦娥二號任務的在軌運行視景仿真系統,它通過時間驅動三維可視化場景更新,直觀展示嫦娥二號探測器繞月探測全過程以及日地月時空關系,不僅能為有效載荷的科學探測計劃提供決策依據,而且能夠通過回放功能,再現嫦娥二號探測器繞月探測過程,對工程匯報和科普工作的開展具有重要意義。
目前視景仿真系統主要有兩種構建方案。第一種基于OpenGL、DirectX等底層三維應用程序編程接口(Application Programming Interface,API),從系統底層進行構建,采用這種方案設計靈活,系統精簡,但開發效率低下,工作量大,開發周期長。第二種是基于已有三維開發平臺進行二次開發,采用這種方案,可以大大提高開發效率,但系統難免冗余。目前主流的開發平臺有Vega、Open GVS、Open Scene Graph(OSG)等,這些軟件各有特色,都能完成大型視景仿真程序的構建。其中OSG是一個面向對象的三維圖形軟件開發包,它包含了豐富的類庫,性能優越,操作靈活,更重要的是OSG是開源軟件,因此受到廣泛關注。目前OSG在世界仿真軟件市場的占有率已超過51%[2]。本文通過結合OSG開發包和Virtual Planet Builder(VPB)擴展工具包以及微軟基礎類(Microsoft Foundation Classes,MFC)完成仿真系統的構建。OSG使用可移植的ANSI C++編寫,并使用已成為工業標準的Open GL底層渲染API,具有良好的跨平臺特性。OSG運行時文件由一系列動態鏈接庫和可執行文件組成,這些鏈接庫共分為5大類,共同構成了OSG的體系(圖1)[3]。運用OSG提供的體系結構,導入構建的三維模型,能夠完成場景的高效渲染。VPB是OSG針對海量地形圖形顯示需求所開發的擴展工具包,能夠以各種格式的地形和影像數據源構建OSG支持的高速讀取的地形模型,通過結合OSG可以完成海量地形數據的高速渲染。VPB的特點在于支持海量的地形數據處理,甚至可以同時處理和容納幾個星球的地形和影像數據[4]。

圖1 OSG體系結構Fig.1 OSG architecture
為通過可視化仿真嫦娥二號探測器繞月探測過程達到驗證嫦娥二號探測器探測指令可行性的目的,本系統設計完成以下主要功能:
(1)根據星歷數據動態更新嫦娥二號探測器、日地月空間位置及完成三維動態顯示。
(2)根據用戶要求設定系統內部時間分辨率,動態改變顯示速度,并以時間驅動仿真過程。
(3)利用嫦娥一號探測器獲取的地形數據及影像數據,顯示嫦娥二號探測器星下點月形月貌。
(4)根據飛控指令文件與CCD立體相機安裝參數,仿真嫦娥二號探測器CCD立體相機數據獲取過程。
(5)視點的切換和控制。
(6)動態顯示衛星位置、速度、當前飛控指令等信息。
根據以上功能需求,設計的嫦娥二號探測器在軌運行視景仿真系統由三維顯示模塊、仿真時間驅動模塊、數據管理模塊構成,總體框架圖如圖2。

圖2 系統總體框架圖Fig.2 Block diagram of the system
數據管理模塊用于存放和組織系統所需要的數據,主要對嫦娥一號獲取的月球地形數據(DEM)和影像數據(DOM)處理后得到的地形數據庫進行管理;仿真時間驅動模塊主要功能是通過時間驅動完成仿真實體狀態及空間位置的更新;顯示模塊提供系統的渲染及可視化功能。
視景仿真程序的實現大致分為視景仿真環境制作和仿真驅動[5]。仿真環境制作主要是構造出真實的三維模型,而仿真驅動則是根據數據和力學模型更新三維模型空間位置,以及完成系統的實時交互響應及事件響應等。
嫦娥二號探測器不同于以往的地球軌道航天器,在大部分任務周期中,它都將進行繞月探測,構建逼真的月表模型和精細的嫦娥二號探測器模型,可以大大提高對探測任務所處的空間環境仿真的真實度。至于地球模型和太陽模型并不是仿真的重點,可以在仿真程序中通過紋理貼圖的方式實現。下面對構建月球和嫦娥二號探測器精細模型的實現方法進行論述。
3.1.1 月球模型數據構建
利用嫦娥一號探測器獲得的影像和地形數據實現月表形貌環境的真實模擬。嫦娥一號探測器獲得的120 m分辨率的正射影像數據和500 m空間分辨率的地形數據的數據量在GB級,考慮到大規模地形數據流暢繪制的問題,采用層次細節模型(Level of Detail Model,LOD)繪制算法繪制月表地形地貌。層次細節模型繪制算法是指在場景中進行模型繪制時距離視點越遠的地方分辨率越低,距離視點越近的地方分辨率越高,而且隨著視點的變化,場景的變化具有連續性,這樣即能保證顯示大規模數據的流暢性,又不影響顯示的效果[6]。OSG為了加快海量數據的渲染,其內部支持層次細節模型繪制算法,采用PagedLOD分頁數據庫的方式對層次細節模型進行調度。具體構建月球模型的步驟是采用OSG擴展工具包VPB中的OSGDEM應用程序將嫦娥一號探測器獲得的tif格式正射影像和月球地形數據進行處理,生成osga格式的月球三維模型。將生成的模型導入到三維場景中,完成月表地形地貌環境的可視化(圖3)。

圖3 經OSGDEM程序處理的嫦娥一號探測器獲得的部分月球DEM數據的格網顯示Fig.3 Terrain grid of the DEM data obtained by the Chang’E-1 as processed by the OSGDEM program
3.1.2 嫦娥二號探測器模型的構建
目前三維建模軟件已經相當成熟。相比采用程序進行模型的構建,采用成熟的三維建模軟件進行三維模型建模,可以明顯提高建模效率及模型的精細程度。3D Studio MAX是個人計算機上最普及的三維動畫和建模軟件,集成了豐富的第三方插件,支持多種格式導入與導出[7]。本文采用3DS MAX2010構建精細的嫦娥二號探測器(圖4),通過第三方插件導出OSG支持格式的模型供三維場景導入。

圖4 嫦娥二號探測器3D模型Fig.4 3D model of the Chang’E-2 spacecraft
在仿真環境構建完成之后,需要根據仿真任務的要求驅動模型按時間進行空間位置的更新。模型的空間位置變化通過仿真循環實現(圖5)。在系統的每次仿真循環中,系統內部時間根據設定的時間步長進行更新,然后系統根據當前系統內部時間訪問星歷數據庫,檢索星歷數據,利用檢索到的星歷數據更新仿真實體的位置和狀態,達到以時間驅動仿真實體變化的目的。仿真驅動的具體實現方法如下。
3.2.1 星歷數據庫的構建與訪問
作為根據星歷數據更新仿真模型空間位置的仿真系統,每一次仿真循環都要訪問星歷數據進行場景的更新,所以能否實時高效地訪問星歷數據是保證系統流暢運行的關鍵。本文采用數據庫的方式對星歷進行組織,可以有效地提高星歷數據的訪問速度。原始日、地、月、嫦娥二號探測器的位置數據和衛星的姿態數據以文本格式存儲,本系統先將星歷數據轉換為以時間為索引的數據庫文件。在系統實時運行的某個時刻,訪問該星歷數據庫,查詢任意時刻仿真實體的空間位置和衛星的姿態信息等,速度達到毫秒級,完全能保證系統實時更新三維場景的仿真實體,達到實時渲染的目的。

圖5 系統仿真流程圖Fig.5 Flowchart of the simulation system
3.2.2 仿真實體空間位置的實時更新
OSG的主要功能是提供場景樹類,它將場景中的對象按照樹的形式進行組織[8]。通過場景樹的方式可以大大提高場景的渲染效率。場景樹由若干節點構成,節點可以是不同的類型,如葉子節點、根節點、枝干節點。節點還可以被整合到多個組節點中,作用于組節點的變換矩陣同樣會作用于整合組節點中的子節點。在本系統中為方便日、地、月、嫦娥二號探測器空間位置實時更新,在場景的根節點中添加日、地、月、嫦娥二號探測器更新變換組節點,再將對應的模型節點整合到對應的組節點中(圖6)。每一次仿真循環,系統訪問各個仿真實體的星歷數據庫,根據當前系統內部時間讀取各個星體的空間位置數據,然后實時地更新對應的組節點的變換矩陣,以達到更新場景模型空間位置的目的。

圖6 空間環境場景層次圖Fig.6 Scene graph of the space environment
3.2.3 CCD立體相機探測過程的仿真
嫦娥二號探測器CCD立體相機探測過程的可視化仿真通過訪問飛控指令文件并結合三維場景的更新實現。飛控指令文件是以時間順序記錄嫦娥二號探測器探測計劃的文本格式存儲的指令文件。每次仿真循環中,系統都會訪問飛控指令文件(圖5),以獲得當前系統內部時刻的飛控指令,若指令為立體相機加電,則在衛星更新變換組節點中添加根據相機安裝參數繪制的兩條透明光束節點(圖7),若指令為立體相機斷電,則從衛星更新變換組節點移除該節點,通過相機光束節點的添加和移除更新場景達到CCD立體相機探測過程的可視化。
3.2.4 視點的控制和切換

圖7 嫦娥二號探測器CCD立體相機15 km成像原理圖Fig.7 Illustration of the pointing of the CCD stereo camera on the Chang’E-2 on an orbit of 15km altitude
在大范圍的虛擬場景中,為了使用戶通過簡單的視點操作及時獲取有效信息和觀察仿真過程,本系統設計了以下幾種視點觀察方案。
(1)月心模式:在三維場景中,月球永遠位于屏幕的中心,通過控制鼠標完成視點距月球的遠近,以及使視點環繞月球轉動。通過這種觀察方式,一方面方便觀察月球晨昏狀態以及月球地形地貌,另一方面可以宏觀地了解嫦娥二號探測器環月軌道。本系統以月固坐標系為場景空間絕對坐標系進行構建。月固坐標系即月心為坐標原點,z軸與地軸平行指向北極點,x軸指向月球零度經線與月球赤道的交點,y軸垂直于xoy平面構成右手坐標系。所以本系統中月球的空間位置不會改變,可以通過軌跡球[9]的方式實現月心模式瀏覽方式。OSG提供了軌跡球控制類Trackball Manipulator,通過Trackball Manipulator類可以輕松實現月心模式的瀏覽。
(2)衛星模式:此種模式下,嫦娥二號探測器永遠位于屏幕的中心,通過控制鼠標完成視點距嫦娥二號探測器的遠近,以及使視點圍繞嫦娥二號探測器轉動。通過這種觀察方式,一方面方便詳細地了解星下點地形地貌,另一方面便于觀察衛星的姿態以及CCD立體相機探測過程。在月固坐標下,衛星的空間位置在三維場景中不斷更新,所以可以通過跟蹤軌跡球的方式實現。將被跟蹤的物體設為軌跡球的中心,并且設定視點與跟蹤物體有同樣的速度與運動方向。OSG同樣提供了Node Tracker Manipulator類實現。
(3)地球模式:在三維場景中,地球永遠位于屏幕的中心,通過控制鼠標完成視點距月球的遠近,以及使視點環繞月球轉動。通過這種觀察方式,一方面方便觀察地球晨昏狀態,另一方面可以直觀地了解月球與地球的相對位置。在月固坐標系下,地球空間位置在三維場景中是不斷更新的。所以同樣可以通過Node Tracker Manipulator類實現,將地心設為跟蹤的中心,視點保持與地球同樣的運動速度與方向。
系統以VS2008為工具進行開發,基于OSG和VPB開發了嫦娥二號探測器在軌運行視景仿真系統。本文的仿真結果如圖8。圖中仿真了CE-2衛星于10月28日22點14分49秒時刻,飛越月球正面虹灣地區,CCD立體相機開機獲取月面兩線陣影像數據的過程。該時刻,衛星距離月面高度為15 km,星下點位置為北緯42.5°,西經33.1°,視點操作方式為衛星模式。

圖8 嫦娥二號探測器虹灣地區探測過程仿真效果圖Fig.8 Screenshot from the simulation system for the Chang’E-2 in exploring the Sinus Iridum on the Moon
本系統是以時間為驅動的四維仿真系統。以時間為驅動,實時更新場景中仿真實體的空間位置及相互關系,仿真了日地月空間環境,利用嫦娥一號探測器獲得的數據展現了嫦娥二號星下點的月形月貌情況,仿真了CCD立體相機數據的獲取過程,取得了不錯的效果。但本系統存在不足,不能實時查詢衛星平臺及其有效載荷的工作狀態,在未來開發版本中將引入實時遙測數據,對這些信息進行查詢和顯示。另外,還需考慮與三維立體硬件系統相結合,實現沉浸式立體顯示[10]。
[1]歐陽自遠.嫦娥一號衛星的初步成果和嫦娥二號衛星的使命[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的三維仿真平臺的設計和實現 [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]吳家鑄.視景仿真技術與應用 [M].西安:西安電子科技大學出版社,2001.
[6]萬定生,龔匯豐.一種基于四叉樹的大規模地形實時生成算法 [J].計算機工程與應用,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標準培訓教材 [M].北京:人民郵電出版社,2009:32-33.
[8]程菊明,李梅蓮,劉連芳.虛擬場景的管理及其在OSG中的應用 [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]徐偉忠,劉輝,談正.三維立體顯示系統的開發研究 [J].中國圖像圖形學報,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.