劉楚斌 李 東 薛 楠 張 欣
(63801部隊 西昌 615000)
火箭飛行仿真是根據(jù)火箭升空后飛行時的姿態(tài),結(jié)合飛行環(huán)境,模擬火箭發(fā)射后的真實運行狀態(tài)?;鸺w行仿真系統(tǒng)主要用于測控設(shè)備的仿真訓(xùn)練和可視化演示[1]。
為了真實地模擬火箭飛行狀態(tài),本文對常見三維引擎進(jìn)行了分析,如Delta3D,OGRE,OSG,Unity3d等。通過對三維圖像渲染引擎的運行效率、場景管理、功能支持、可擴展性等方面的分析,選擇了OSG作為開發(fā)引擎[2]。對火箭飛行仿真的測量坐標(biāo)系及其轉(zhuǎn)換進(jìn)行了研究。通過三維場景的坐標(biāo)變換,調(diào)整火箭模型在視場中的位置姿態(tài)。采用3DS Max軟件構(gòu)建了火箭的三維模型,通過osgExp插件把3DS Max格式的火箭模型導(dǎo)出為OSG格式的模型。利用OSG的粒子系統(tǒng)對天氣變化進(jìn)行渲染。
OSG是開源的場景圖形管理開發(fā)庫,主要為圖形圖像應(yīng)用程序的開發(fā)提供場景管理和圖形渲染優(yōu)化功能[3]。它以O(shè)penGL底層渲染API為基礎(chǔ),采用C++語言編寫。OSG是跨平臺的三維開發(fā)引擎,可在Windows系統(tǒng)、Mac OS X和Linux系統(tǒng)上運行。OSG支持GNU協(xié)議,是開源的三維開發(fā)庫。隨著技術(shù)的不斷發(fā)展,OSG的模塊和第三方庫不斷得到完善,目前已具備對高性能渲染、海量地形數(shù)據(jù)庫、地理信息及多通道等的支持[4]。
OSG主要包括核心庫、工具庫、插件庫和內(nèi)省庫[5]。
1)OSG核心庫
OSG核心庫實現(xiàn)了對場景數(shù)據(jù)庫的組織和管理、對場景圖形的操作以及為外部數(shù)據(jù)庫的導(dǎo)入提供接口等。核心庫主要包括osg庫、osgUtil庫、osgDB庫和osgViewer庫。
osg庫是OSG基本數(shù)據(jù)類庫,主要負(fù)責(zé)基本場景的構(gòu)建,如場景節(jié)點的生成、場景狀態(tài)的描述和場景的繪制等。同時,osg庫還可以對命令行進(jìn)行解析,對錯誤信息進(jìn)行調(diào)試等。
osgUtil庫是OSG工具類庫,主要用于場景圖形及內(nèi)容的操作,如場景圖的更新、裁減,節(jié)點的遍歷、數(shù)據(jù)統(tǒng)計和場景圖的優(yōu)化。
osgDB庫是OSG數(shù)據(jù)讀寫庫,提供了一個文件工具類,主要負(fù)責(zé)場景數(shù)據(jù)的讀寫工作。
osgViewer庫是OSG視窗管理庫,可以集中各種窗體系統(tǒng),提供OSG與各種GUI的結(jié)合。
2)OSG工具庫
OSG工具庫是對OSG核心庫的補充,主要包括osgFX、osgParticle、osgSim、osgTerrain、osgText和osgShadow6個庫。
osgFX庫主要用來實現(xiàn)特殊效果,渲染特效節(jié)點。如異性光照特效、凹凸貼圖特效、卡通渲染特效、刻線特效和立方圖鏡面高光特效等。
osgParticle庫是OSG的粒子系統(tǒng)庫,主要用于模擬各種天氣或者自然現(xiàn)象效果。如雨雪天氣和爆炸效果等。
osgSim庫主要用來實現(xiàn)虛擬仿真效果,如地形高程圖、光點節(jié)點和DOF變換節(jié)點等[6]。
osgTerrain庫是處理地形數(shù)據(jù)的庫,利用開源庫GDAL來讀取和渲染常見格式的地形數(shù)據(jù)。
osgText庫是文字處理庫,用于向場景中添加文字信息。
osgShadow庫主要用于向場景中實時添加陰影效果,提高場景渲染的真實性。
3)OSG插件庫
OSG采用插件庫的設(shè)計思想,利用第三方庫的支持,能夠直接或間接地導(dǎo)入3D模型或圖片等場景數(shù)據(jù),從而省去了大量圖形的繪制,提高了工作效率。
4)OSG內(nèi)省庫
OSG內(nèi)省庫提供了一個與語言無關(guān)的運行程序接口,確保了OSG可以跨平臺運行。OSG利用osgIntrospection庫與軟件系統(tǒng)進(jìn)行交互。在交互時,應(yīng)用程序和軟件并不需要了解OSG的編譯和鏈接過程,便可調(diào)用OSG中的函數(shù)和方法。由于C++在交互時不支持反射式和自省式的交互方式,為此OSG提供了利用源代碼生成的封裝庫。
三維模型的建立是仿真場景構(gòu)建的基礎(chǔ)。為了實現(xiàn)逼真的仿真環(huán)境,首先需要構(gòu)建逼真的三維模型。細(xì)致的模型和實際效果的紋理貼圖可以增強仿真場景的真實感與沉浸感[7]。本文采用的三維建模工具為3DS Max。3DS Max具有強大的建模功能和良好的建模效果。為了將3DS Max軟件構(gòu)建的火箭模型導(dǎo)出為OSG格式的模型,需安裝osgExp插件。最終生成的火箭模型如圖1所示。
圖1 OSG格式的火箭模型
目前對火箭的跟蹤一般采用地面站或者測量船的跟蹤方式?;鸺l(fā)射升空后,測控設(shè)備對火箭飛行彈道,姿態(tài)數(shù)據(jù)進(jìn)行測量,實時監(jiān)控火箭的飛行狀態(tài)。為描述火箭的運動規(guī)律,需定義好坐標(biāo)系統(tǒng)。一般來說,確定火箭的位置采用的坐標(biāo)系為地心坐標(biāo)系和地心慣性坐標(biāo)系。
利用火箭在坐標(biāo)系中的飛行數(shù)據(jù),可以模擬仿真火箭的飛行狀態(tài)?;鸺蘸?,利用測控設(shè)備的實時測量數(shù)據(jù)對火箭模型進(jìn)行驅(qū)動,不斷調(diào)整火箭的飛行姿態(tài),從而實現(xiàn)對火箭模型的仿真驅(qū)動。
圖2 火箭模型的驅(qū)動
OSG的例子系統(tǒng)把需渲染的對象定義為不規(guī)則隨機分布的粒子集。粒子集中的粒子在其生命周期內(nèi),跟隨對象總體形狀和特征的變化而不斷變化。在渲染的動態(tài)過程中,舊的粒子逐漸消失,新的粒子不斷誕生。從粒子的誕生到消亡的過程中,利用粒子集的動態(tài)變化達(dá)到對對象進(jìn)行渲染和仿真的目的。根據(jù)不同對象的特征,可以設(shè)置粒子集運動軌跡參數(shù)、顏色變化規(guī)律和粒子大小等屬性[8]。
OSG的粒子系統(tǒng)能實現(xiàn)常見的場景特效,如噴泉仿真、火焰仿真、煙效仿真和雨雪天氣仿真。通過操作OSG提供的類庫,可以對粒子的形狀、大小和運動狀態(tài)進(jìn)行控制,從而營造逼真的場景,滿足人機交互的需求,給人以真實的沉浸感受[9~10]。
表1 OSG粒子特效類
雨天氣特效實現(xiàn)的核心代碼為
圖3 雨天氣下的火箭飛行仿真圖
雪天氣特效實現(xiàn)的核心代碼為
圖4 雪天氣下的火箭飛行仿真圖
本文選擇了OSG作為三維仿真開發(fā)引擎,對火箭飛行仿真的關(guān)鍵技術(shù)進(jìn)行了研究,成功搭建了VS2010+QT5.4+OSG3.4的開發(fā)環(huán)境,實現(xiàn)了多種天氣條件下的火箭仿真飛行。三維仿真關(guān)鍵技術(shù)的研究可為火箭跟蹤仿真訓(xùn)練系統(tǒng)的研制提供技術(shù)支撐,具有重要的應(yīng)用價值。