一種基于三維運動視景的仿真系統(tǒng)設(shè)計與實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于三維運動視景技術(shù)領(lǐng)域,其利用信號處理、計算機輔助設(shè)計技術(shù)、視景 仿真技術(shù)和計算機仿真技術(shù)等實現(xiàn)仿真多種船舶和飛行器目標在不同風(fēng)向、風(fēng)速等級和不 同運行狀態(tài)時的三維視景動畫,仿真的視景動畫效果能夠直觀且真實地反映設(shè)定的仿真參 數(shù)對船舶和飛行器目標運動狀態(tài)的影響,本發(fā)明涉及一種基于三維運動視景的仿真系統(tǒng)設(shè) 計與實現(xiàn)方法。
【背景技術(shù)】
[0002] 傳統(tǒng)的雷達仿真方法分析手段較為抽象,對于繁雜的數(shù)學(xué)公式和大量的數(shù)據(jù), 除了專業(yè)人員了解其真實情況外,一般的訓(xùn)練人員和決策者難以迅速準確地做出判 斷。李震,李積德,王慶.艦船三維運動視景仿真系統(tǒng)的設(shè)計[J].哈爾濱工程大學(xué)學(xué) 報,2003, 24(1) :9-13.
[0003] 隨著計算機硬件和計算機圖形學(xué)的發(fā)展,科學(xué)計算可視化已成為一門獨立的新 興學(xué)科。特別地,視景仿真技術(shù)以其靈活、通用、高效和低成本等特點在多領(lǐng)域得到了廣泛 應(yīng)用??跌P舉.艦船仿真技術(shù)發(fā)展綜述[J].艦船電子工程,2004,24(1):9-11.
[0004] 針對傳統(tǒng)雷達仿真方法存在的問題,利用視景仿真技術(shù)建立具有真實物理屬性的 三維真實研究分析環(huán)境,用戶借助必要的設(shè)備以自然的方式與虛擬環(huán)境中的對象進行交互 作用、相互影響,從而為系統(tǒng)研究人員、雷達訓(xùn)練人員和決策分析人員創(chuàng)造一個共享的視聽 環(huán)境,用共同的語言來研究、分析和探討問題,使整個仿真過程變得看得見和聽得到,使結(jié) 果變得更加真實、可信。
【發(fā)明內(nèi)容】
[0005] 針對現(xiàn)有技術(shù)的不足,本發(fā)明要解決的技術(shù)問題是建立具有真實物理屬性的三維 真實研究分析環(huán)境,使系統(tǒng)研究人員、雷達訓(xùn)練人員和決策分析人員對整個仿真過程既有 抽象的理性的定量分析,又有形象的感性的定性分析。
[0006] 本發(fā)明能夠仿真出適用于船舶航行水域環(huán)境和飛行器航行的天空環(huán)境下的三維 運動視景動畫,根據(jù)設(shè)定的船舶和飛行器目標的名稱、類型、持續(xù)時間、經(jīng)度、高度、煒度、俯 仰角、偏航角、翻滾角、速度以及風(fēng)向、風(fēng)速等仿真數(shù)據(jù),生成對應(yīng)的船舶和飛行器目標在設(shè) 定的水域和天空環(huán)境按既定的運動參數(shù)進行相應(yīng)的狀態(tài)更新畫面。
[0007] 本發(fā)明的技術(shù)方案:
[0008] 為了實現(xiàn)基于三維運動視景的仿真系統(tǒng)設(shè)計,首先建立一個基于MFC單文檔的 OpenGL仿真系統(tǒng)框架;然后建立由采用OpenGL紋理貼圖方法繪制的地物模塊(樹、山等)、 天空模塊、海洋模塊和光照模塊組成的環(huán)境系統(tǒng);同時建立坐標系統(tǒng);再將利用計算機輔 助設(shè)計技術(shù)生成的船舶和飛行器目標的三維模型載入構(gòu)建好的程序框架中;并通過實時通 訊,讀取外部的驅(qū)動數(shù)據(jù),實現(xiàn)目標的狀態(tài)更新;建立的視角轉(zhuǎn)換系統(tǒng),可通過鍵盤交互,實 現(xiàn)不同的觀測效果;最后利用OpenGL雙緩存技術(shù)實現(xiàn)平滑的動畫,通過數(shù)據(jù)顯示系統(tǒng)顯示 目標信息。
[0009] 本發(fā)明采用的技術(shù)方案如下:
[0010] 第一步:建立OpenGL仿真系統(tǒng)框架
[0011] 在操作系統(tǒng)下,建立一個基于MFC單文檔的OpenGL圖形程序框架,具體步驟為:
[0012] 1. 1利用"MFC應(yīng)用程序"選擇"應(yīng)用程序類型:單個文檔"創(chuàng)建基于MFC單文檔的 工程;
[0013] 1. 2在已創(chuàng)建好的工程中添加 OpenGL庫文件和頭文件,完成初始化設(shè)置;
[0014] 1. 3調(diào)用OpenGL相關(guān)命令進彳丁圖形繪制;
[0015] 1. 4退出OpenGL繪圖窗口,同時釋放OpenGL繪制描述表和Windows設(shè)備描述表。
[0016] 第二步:建立環(huán)境系統(tǒng)模型
[0017] 環(huán)境系統(tǒng)包括地物模塊(樹、山等)、天空模塊、海洋模塊和光照模塊。各模塊采 用OpenGL的紋理貼圖方法進行繪制,即通過讀取外部的圖像文件,采用紋理映射的方法進 行貼圖。在海洋模塊中,為接近真實效果的海水起伏以及海面明暗變化,運用基于快速傅里 葉變換生成動態(tài)的海面高度場,其中,海面的高度被看成一個由位置X = (X,z)和時間t組 成的隨機變量h(X,t),&(&,〇與海浪譜相關(guān)且滿足
,本仿真方法 采用Phillips海浪譜,將海面高度場存入到頂點紋理中,同時采用多塊網(wǎng)格無縫拼接形成 無限海面,然后通過取頂點紋理的值對網(wǎng)格進行擾動,實現(xiàn)動態(tài)的海面效果。
[0018] 第三步:建立坐標系統(tǒng)
[0019] 本仿真系統(tǒng)在數(shù)據(jù)結(jié)構(gòu)和程序?qū)崿F(xiàn)上需建立一個窗口二維坐標系和兩個三維坐 標系,兩個三維坐標系為OpenGL坐標系及目標坐標系。
[0020] 第四步:建立目標系統(tǒng)
[0021] 4. 1建立船舶和飛行器目標的三維模型:搜集關(guān)于所建模型的幾何結(jié)構(gòu)信息,通 過相關(guān)專業(yè)雜志和網(wǎng)絡(luò)資源提供的設(shè)計圖以及現(xiàn)場實拍的真實圖片,根據(jù)所獲取的目標模 型的具體信息,利用3DS Max建模工具按比例繪制出真實模型并加以紋理貼圖和光照效果 的渲染;
[0022] 4. 2載入船舶和飛行器目標的三維模型:采用文件讀入的方式將繪制的三維模型 載入程序框架;具體步驟為:
[0023] 4. 2. 1生成3DS文件,利用3DS Max軟件將繪制的三維模型導(dǎo)出為3DS文件;
[0024] 4. 2. 2編寫讀取3DS文件的VC++程序,即頭文件"Read3DS. h"和源文件"Read3DS. cpp" ;
[0025] 4. 2. 3載入工程,在構(gòu)建好的程序框架中,包含頭文件"Read3DS.h",調(diào)用函數(shù)讀 取目錄下的3DS文件,完成三維模型的載入,并可在工程中對載入模型進行對象管理。
[0026] 4. 3船舶和飛行器目標的數(shù)據(jù)驅(qū)動:
[0027] 本仿真系統(tǒng)通過讀取外部的驅(qū)動數(shù)據(jù)實現(xiàn)船舶和飛行器目標的實時狀態(tài)更新,驅(qū) 動數(shù)據(jù)包括船舶和飛行器目標的名稱、類型、持續(xù)時間、經(jīng)度、高度、煒度、俯仰角、偏航角、 翻滾角和速度等數(shù)據(jù)。其中經(jīng)度、高度及煒度坐標需以O(shè)penGL坐標系為基準,對經(jīng)度、高度 及煒度坐標數(shù)據(jù)進行相應(yīng)轉(zhuǎn)換。
[0028] 船舶和飛行器目標的實時狀態(tài)包括位置和姿態(tài),位置由OpenGL坐標系X,Y,Z的三 個坐標值來確定,姿態(tài)包括俯仰角、偏航角及翻滾角。以O(shè)penGL坐標系為基準,沿OpenGL 坐標系的X,Y,Z三個坐標軸平移實現(xiàn)目標的位置變換;以O(shè)penGL坐標系為基準,沿OpenGL 坐標系的X,Y,Z三個坐標軸旋轉(zhuǎn)實現(xiàn)目標的姿態(tài)變換,目標的俯仰變換為繞X軸旋轉(zhuǎn),目標 的偏航變換為繞Υ軸旋轉(zhuǎn),目標的翻滾變換為繞Ζ軸旋轉(zhuǎn)。
[0029] 目標的實時狀態(tài)控制由OpenGL中的模型轉(zhuǎn)換函數(shù)(glTranslatef ()和 glRotatef ())完成,在繪制目標前調(diào)用相應(yīng)的轉(zhuǎn)換函數(shù),通過不斷地改變?nèi)齻€坐標值和各 角度值,實現(xiàn)目標的實時狀態(tài)更新。
[0030] 第五步:建立視角轉(zhuǎn)換系統(tǒng)
[0031] 本仿真系統(tǒng)共定義了 2種視點,分別是跟蹤視點和固定視點。跟蹤視點是將相機 位置設(shè)置于目標附近,與目標距離的遠近參數(shù)可以調(diào)用SetCamera()來設(shè)置,視點會隨目 標的運動而移動。固定視點是將相機固定在某一具體三維坐標上,用于實現(xiàn)固定點的觀測 效果,處于固定視點時,通過鍵盤交互,系統(tǒng)會有三個不同程度的縮放效果,人為設(shè)定視角 度數(shù),縮放的效果可以使用OpenGL中的透視投影函數(shù)gluPerspectiveO來實現(xiàn)。
[0032] 第六步:三維運動視景系統(tǒng)實現(xiàn)
[0033] 本仿真系統(tǒng)采用OpenGL雙緩存技術(shù),OpenGL利用glutSwapBuffers ()函數(shù)來交 換雙緩存,如此循環(huán)反復(fù),實現(xiàn)平滑的動畫,并通過據(jù)顯示系統(tǒng)顯示必要的目標信息。
[0034] 系統(tǒng)利用響應(yīng)定時中斷來為船舶和飛行器目標更新狀態(tài)數(shù)據(jù),使船舶和飛行器目 標每隔一定的時間(用戶可設(shè)定)讀取一次狀態(tài)數(shù)據(jù),隨著狀態(tài)數(shù)據(jù)的不斷更新,目標的實 時狀態(tài)也在不斷地發(fā)生變化,最終實現(xiàn)目標的模擬運動。
[0035] 本發(fā)明可以通過實時通訊,實時讀取驅(qū)動數(shù)據(jù),完成三維模型狀態(tài)的實時繪制,實 現(xiàn)不同的視景變換;可以將目標狀態(tài)仿真數(shù)據(jù)進行一次性存儲,通過讀取仿真數(shù)據(jù)進行三 維可視化驗證。
[0036] 本發(fā)明根據(jù)已設(shè)定的船舶和飛行器目標的名稱、類型、持續(xù)時間、經(jīng)度、高度、煒 度、俯仰角、偏航角、翻滾角、速度以及風(fēng)向、風(fēng)速等仿真數(shù)據(jù),可成對應(yīng)的船舶和飛行器目 標在設(shè)定的水域、天空環(huán)境和既定運動參數(shù)下的狀態(tài)畫面,為系統(tǒng)研究人員、雷達訓(xùn)練人員 和決策分析人員創(chuàng)造一個共享的視聽環(huán)境,使整個仿真過程變得看得見、摸得著,使結(jié)果變 得更加真實、可信。
【附圖說明】
[0037] 圖1是基于三維運動視景仿真系統(tǒng)的總體設(shè)計框圖。
[0038] 圖2是采用OpenGL紋理貼圖方法繪制完成的環(huán)境系統(tǒng)。
[0039] 圖3是基于三維運動視景仿真系統(tǒng)的坐標系統(tǒng)。
[0040] 圖3 (a)是窗口坐標系。
[0041] 圖 3 (b)是 OpenGL 坐標系。
[0042] 圖3(c)是目標坐標系。