太陽帆航天器三維動畫視覺化模擬平臺的設計與實現論文

太陽帆航天器三維動畫視覺化模擬平臺的設計與實現論文

  0 引言

  太陽帆航天器是一種在深空探測和星際航行等領域極具潛力的新型航天器,利用太陽光壓產生持續推力,給航天器提供持續動力,本身無需攜帶大量的燃料,因此在深空探測和星際航行等航天領域具有廣闊的應用前景,近年來受到國際航天界的廣泛關注。

  美國宇航局(NASA)、日本宇航局(JAXA)、歐洲航天局(ESA)等多個世界研究機構正在研製利用太陽帆航天器進行推進任務(如Pole Site、Geosail、Geostorm等),但是,離利用太陽帆進行深空探測及星際航行還有一定的距離,還有一系列的關鍵技術需要攻克。針對太陽帆航天器進行一次太空航行任務,需要高額的成本,本文提供了一種經濟且有效的方式,研究並開發了一套三維視覺化模擬平臺,利用模擬平臺模擬太陽帆航天器的飛行情況,為實際太陽帆航天器飛行提供一定的參考。

  截止目前,未發現有關太陽帆航天器視覺化模擬平臺的'文獻。本文利用C++6.0、Multigen Creator/Vega、及MATLAB等軟體相結合搭建了一個太陽帆三維動畫視覺化模擬平臺。利用視點控制及多通道多視點技術分別在不同的通道中觀察太陽帆的飛行軌跡及姿態變化;透過VC++與MATLAB的互動程式設計,利用MAT檔案的模擬資料驅動多個物體同時移動;利用Vega和OpenGL混合程式設計,實現了飛行軌跡及姿態資訊實時顯示的功能。

  1 太陽帆航天器三維動畫視覺化模擬平臺總體設計

  三維動畫視覺化模擬系統主要由太空飛行模擬場景及視景模擬模型兩大部分構成。飛行模擬場景是指太陽帆所飛行的具體環境;視景模擬模型是指太陽帆航天器的具體結構模型。

  本文首先利用Creator建立太空環境飛行模擬場景(太空環境)和太陽帆航天器的結構視景模擬模型(flt檔案);接著利採用Vega提供的Lynx工具將flt檔案匯入相應的場景中,然後,進行一系列的初始化工作,並將其儲存為應用程式定義檔案(ADF)檔案;最後,透過MATLAB計算各個時刻太陽帆的飛行軌跡和姿態資料,並透過載入模型物件的位置及姿態資料,完成對太陽帆的飛行軌跡和姿態變化的三維視覺化模擬。

  2 模擬軟體平臺環境和開發中的關鍵技術

  2.1 在Visual C++環境下Vega應用程式的開發

  Windows平臺上Vega應用程式的開發,利用MFC框架開發程式能夠有效地應用Vega函式庫,可以極大程度地減小程式開發的工作量。本文采用基於MFC開發Vega應用程式。

  2.2 三維動畫場景和模型的建立

  Multigen Creator是一款專業化的建模軟體工具,可以有效地建立互動式實時應用的三維模型及場景。本文利用Creator建立太空環境模型和太陽帆航天器的結構模型。太陽帆航天器的結構主要包括大面積帆膜、支撐機構及中心控制機構等其它附屬機構,模型的正面檢視如圖2所示。將Creator中建好的模型檔案匯入Vega中,利用Vega所提供的Lynx定義三維動畫場景中的模型元素屬性和相互位置關係,最後生成用於太陽帆航天器三維動畫模擬平臺的ADF檔案,即虛擬場景檔案。

  2.3 多通道渲染技術

  本文采用多通道技術實現在同一時刻不同位置觀察各角色模型物件的運動狀態。在一個通道中觀察包括太陽帆在內的多個運動模型的相對運動軌跡,而在另外一個通道中觀察太陽帆航天器姿態的變化過程,結合兩個通道同時觀察太陽帆航天器飛行狀況。

  2.4 資料驅動

  本系統利用模擬資料與各模型物件進行關聯,透過不斷呼叫相關聯的資料進行位置及姿態的更新,實現逼真的視覺化效果,能夠準確地展現控制效果。利用MATLAB與VC++之間的互動程式設計呼叫MAT檔案,並採用MAT檔案的操作方法來讀取MAT檔案,從而實現利用模擬資料驅動太陽帆、地球等模型物件的運動。

  3 模擬例項

  三維視覺化模擬平臺系統介面主要包括選單欄、主視窗和操作面板。其中主視窗中有兩個通道,分別顯示各模型物件飛行的軌跡與太陽帆的姿態變化;操作面板則用來控制模擬的進度,並同時顯示太陽帆、地球等角色物件的位置、姿態及速度資訊。首先載入使用MATLAB進行太陽帆航天器軌跡最佳化模擬後儲存的MAT資料檔案,與太陽帆、地球等模型繫結其相關的位姿資料。太陽帆航天器以一定的位姿出現在模擬環境中,透過視點切換,並選擇合適的視點來觀察太陽帆飛行過程。模擬過程中可以選擇開始模擬、暫停模擬、重啟模擬。

  4 結論

  本文透過Vega和VC++相結合的方法,設計並開發了一套太陽帆航天器三維動畫視覺化模擬平臺。利用Creator軟體建立相關模型;採用多通道多視點技術分別觀察太陽帆航天器的飛行軌跡及姿態變化,並透過視點控制技術,可以從任意位置任意角度觀察太陽帆航天器的飛行狀態;透過MATLAB與VC++的互動程式設計,實現了多個運動體同時移動;透過回撥函式解決了Vega和OpenGL混合程式設計問題,給系統增加了顯示飛行軌跡及重要資料資訊的功能。

最近訪問