亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MFC的Vega Prime航空飛行器動(dòng)態(tài)視景仿真

        2019-10-14 11:14:24旺,劉西,南
        指揮控制與仿真 2019年5期
        關(guān)鍵詞:視景飛行器軌跡

        孫 旺,劉 西,南 英

        (南京航空航天大學(xué)航天學(xué)院,江蘇南京 210016)

        Vega Prime由Multigen-Paradigm公司開(kāi)發(fā),當(dāng)前被CA公司并購(gòu)。Vega Prime是一款實(shí)現(xiàn)高性能三維視景仿真的軟件,它取代了之前版本的Vega,引進(jìn)了較新的編譯器和新的圖形學(xué)相關(guān)理念和技術(shù),使得用戶可以更加方便地配置視景仿真,能夠滿足各種背景條件下的實(shí)時(shí)仿真要求[1]。

        MFC是微軟基礎(chǔ)類(lèi)庫(kù),采用MFC對(duì)話框程序可以方便地構(gòu)建人機(jī)交互界面[2],實(shí)現(xiàn)對(duì)Vega Prime API的充分利用,同時(shí)擴(kuò)展了Vega Prime的交互性,便于人對(duì)仿真過(guò)程的參數(shù)設(shè)置,由于MFC的封裝效果,操作人員可以通過(guò)改變輸入?yún)?shù)和文件實(shí)現(xiàn)在不接觸代碼的情況下改變仿真場(chǎng)景以達(dá)到相應(yīng)的視景仿真效果要求。

        Vega Prime在提供高級(jí)仿真功能的時(shí)候滿足:支持跨平臺(tái)性,可以在任意操作系統(tǒng)平臺(tái)上開(kāi)發(fā),且無(wú)需更改即可換平臺(tái)使用;與C++STL兼容,這也使得MFC框架構(gòu)建以及運(yùn)行成為可能;具有多種可擴(kuò)展模塊以滿足不同的仿真要求;同時(shí)支持OpenGL 1.2和Direct3D 8等。

        本文在構(gòu)建視景仿真時(shí)使用Vega Prime2.2及配套的開(kāi)發(fā)工具VS2005,主要完成了以下工作:設(shè)計(jì)開(kāi)發(fā)的基本流程,從兩個(gè)方面研究了航空飛行器動(dòng)態(tài)視景仿真:三維數(shù)字高程地圖模型中的飛行軌跡展示,海上空投數(shù)據(jù)的實(shí)時(shí)刷新,視角動(dòng)態(tài)切換和目標(biāo)幀的捕獲。

        1 航空飛行器動(dòng)態(tài)視景仿真

        1.1 發(fā)展背景及意義

        近年來(lái),各種類(lèi)型航空飛行器已經(jīng)不僅僅運(yùn)用于軍事背景下,同時(shí)還服務(wù)于社會(huì)生產(chǎn)生活,在越來(lái)越多的任務(wù)中驗(yàn)證飛行過(guò)程以及目標(biāo)完成的可靠性時(shí),需要繁雜且費(fèi)力的實(shí)驗(yàn),而通過(guò)航空飛行器視景仿真可以減少經(jīng)費(fèi)開(kāi)支,確保安全。

        同時(shí)在航空數(shù)據(jù)處理方面,科學(xué)技術(shù)的發(fā)展使得航空數(shù)據(jù)量包含的信息越來(lái)越多,而視景仿真可以將其轉(zhuǎn)換成直觀的幾何圖像信息,便于綜合分析,解決問(wèn)題。

        因此,航空飛行器的視景仿真在整個(gè)任務(wù)系統(tǒng)中顯得越來(lái)越重要。

        1.2 Vega Prime系統(tǒng)結(jié)構(gòu)

        Vega Prime的應(yīng)用主要由應(yīng)用程序、應(yīng)用配置文件和模型包等組成。其中,應(yīng)用程序控制場(chǎng)景等動(dòng)態(tài)模型,如通過(guò)VC7創(chuàng)建應(yīng)用程序,而應(yīng)用配置文件包含了應(yīng)用在初始化和運(yùn)行過(guò)程中的一切信息,配置成.ACF文件,模型包則是通過(guò)類(lèi)似Creator創(chuàng)建的幾何模型(.Flt文件或大面積地形文件),三者共同作用即可實(shí)現(xiàn)相應(yīng)任務(wù)要求。其配置關(guān)系如圖1所示。

        圖1 Vega Prime的系統(tǒng)構(gòu)成

        1.3 基于MFC的視景仿真開(kāi)發(fā)基本流程

        Vega Prime視景仿真的開(kāi)發(fā)可以從應(yīng)用配置文件開(kāi)始,在這里配置文件使用Lynx Prime,它可以通過(guò)圖形界面簡(jiǎn)單地配置仿真的基本構(gòu)架,大大簡(jiǎn)化了開(kāi)發(fā)的過(guò)程。通過(guò)對(duì)Lynx Prime圖形界面的配置滿足基本的框架要求,保存相應(yīng)的.ACF文件,之后對(duì)于更高要求的視景仿真需要根據(jù)該.ACF文件生成相應(yīng)的.cpp文件,直接生成的.cpp文件不能直接運(yùn)行,需要經(jīng)過(guò)些許改造,同時(shí)改正相應(yīng)的錯(cuò)誤,包括頭文件中包含的

        #include "vpPathWayPointSet-WayPoint.h"

        注釋該頭文件,并將涉及的所有該類(lèi)型改為vpPathWayPointSet::WayPoint類(lèi)型,在文件路徑presagisVega-Prime-2-2-1-VC8includevegaprime下修改頭文件VppatthFileWriter.h,提取其中名為vpPathSetSelector的部分并新建該名稱(chēng)的頭文件。

        同時(shí)對(duì)于.cpp中的部分函數(shù):

        SetRenderState()

        直接生成的cpp文件該函數(shù)存在參數(shù)錯(cuò)誤問(wèn)題,可以通過(guò)重新定義的方式:

        vpPathRenderState*state-lineyes=new

        vpPathRenderState();

        state-lineyes->setLineColor(…)

        ……∥配置渲染狀態(tài)

        state-lineyes->setLineEnable(true); pPathWay-PathWay->setRenderState(state-lineyes);

        以及addWayPointSet()函數(shù)的參數(shù)可能在自動(dòng)生成過(guò)程中類(lèi)型有誤。

        之后設(shè)計(jì)需要滿足仿真要求的MFC框架,并將之前生成的.cpp文件改造為類(lèi)中的靜態(tài)成員,根據(jù)基本要求相應(yīng)地改造代碼實(shí)現(xiàn)視景仿真,基本流程如圖2所示。

        圖2 開(kāi)發(fā)基本流程

        1.4 Vega Prime基本工作流程

        Vega Prime基本工作流程在主函數(shù)中可以分為初始化、定義場(chǎng)景、配置場(chǎng)景、設(shè)置窗體、幀循環(huán),退出[3]。對(duì)于不同的仿真要求,場(chǎng)景的定義存在很大差別[4],同時(shí)對(duì)于要求更高的仿真可以在幀循環(huán)中對(duì)場(chǎng)景進(jìn)行控制,圖2中的最后MFC界面及Vega Prime代碼配置框架具體如圖3所示。

        圖3 Vega Prime主函數(shù)配置框架

        2 飛行器山地機(jī)動(dòng)飛行

        2.1 大地形Open Flight模型制作

        飛行器在山地機(jī)動(dòng)飛行,根據(jù)地理高程數(shù)據(jù)優(yōu)化得到的飛行軌跡在展示過(guò)程中,需要與地形模型相搭配才能體現(xiàn)飛行軌跡優(yōu)化的效果,地形制作對(duì)于視景仿真來(lái)說(shuō)顯得格外重要。

        Vega Prime有支持大地形數(shù)據(jù)庫(kù)的模塊vpLADBM,用于管理地形幾何數(shù)據(jù),從MetaFlight格式文件讀取相應(yīng)的信息。該地形制作方法功能強(qiáng)大,可以實(shí)現(xiàn)地形、貼圖、文化特征等的配置,但對(duì)于在Lynx Prime中的配置和MetaFlight的制作相對(duì)復(fù)雜。這里,采用OpenFlight格式數(shù)據(jù)文件實(shí)現(xiàn)對(duì)飛行場(chǎng)景的構(gòu)建,功能較少但簡(jiǎn)單可靠。

        采用Creator軟件[5]制作OpenFlight格式的地形文件,關(guān)鍵在于飛機(jī)飛行區(qū)域跨度大,要求能夠在區(qū)域內(nèi)任意優(yōu)化出的飛行軌跡都能有對(duì)應(yīng)的地圖場(chǎng)景模型。緯度范圍在25.690 849 753 6°-28.115 0°,經(jīng)度范圍在99.178 938 259 5°-101.607 2°,經(jīng)度、緯度的跨度都在數(shù)百公里。同時(shí)飛機(jī)的軌跡優(yōu)化精度為30 m左右,需要保持地形精度與該精度相近。地形大,精度要求高,在電腦性能(8G內(nèi)存)相對(duì)不足的情況下,采用地圖分塊制作[6-7],加載的方法可以滿足制作要求,在視景仿真過(guò)程中通過(guò)部分地圖塊加載來(lái)減小系統(tǒng)負(fù)擔(dān),分塊如圖4所示。

        圖4 地圖分塊情況

        劃分完畢后,需要通過(guò)Global Mapper軟件將數(shù)據(jù)信息.ASC文件轉(zhuǎn)化為數(shù)字高程模型.DEM,在Creator的Terrain模塊中先由DEM文件生成對(duì)應(yīng)的.DED文件,在新建的各個(gè)地圖塊中選擇地圖生成模式和間隔距離,高度差異由顏色深淺區(qū)分,可以得到上述36塊地形OpenFlight模型,其中A1模型如圖5所示。

        圖5 A1地圖制作情況

        2.2 軌跡數(shù)據(jù)及地圖模型加載

        地圖數(shù)據(jù)庫(kù)建立完成后,需要構(gòu)建MFC框架,基本流程參考圖2、圖3,對(duì)于MFC的按鈕及相應(yīng)的入口消息函數(shù)分別指定為:地圖數(shù)據(jù)庫(kù)模型文件、飛行器模型文件、飛行器軌跡數(shù)據(jù)文件、涉及地圖信息文件,運(yùn)行及關(guān)閉按鈕。對(duì)于前四種處理函數(shù)都是返回一個(gè)文件地址或者一個(gè)文件夾地址留出接口給用戶自由配置,運(yùn)行按鈕定義了主線程,同時(shí)添加了關(guān)閉控制參數(shù)用于關(guān)閉按鈕,地址返回消息處理函數(shù)可參照:

        UpdateData(TRUE);∥寫(xiě)入數(shù)據(jù)

        ∥指定文件限制類(lèi)型

        Char szFilters[]="vehicle-on-Earth-Orgn(*.m)|*.m|All Files (*.*)|*.*||";

        ∥定義路徑選擇對(duì)話框?qū)ο?/p>

        CFileDialog objFileDialog(TRUE,NULL,NULL,OFN-HIDEREADONLY,szFilters,this);

        int nRet=objFileDialog.DoModal();

        if(nRet !=IDOK)

        return;

        CString strFileName=objFileDialog.GetPathName();

        ∥文件路徑賦值給CEdit類(lèi)型控件變量

        mfc-guijidatapath=strFileName;

        ∥賦值給全局變量 LX-global::lx-guijidatapath=mfc-guijidatapath;UpdateData(FALSE);∥顯示數(shù)據(jù)

        構(gòu)架完成后,已經(jīng)配置好對(duì)外接口,內(nèi)部數(shù)據(jù)傳遞通過(guò)定義全局函數(shù)LX-global將MFC的輸入信息傳遞到Vega Prime的Public-Member類(lèi)中,同時(shí)LX-glob-al可以實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),便于其他類(lèi)的調(diào)用,其基本框架如圖6所示。

        圖6 類(lèi)關(guān)系圖

        飛行器飛行軌跡以及地圖塊的配置在定義場(chǎng)景中,具體可以參照?qǐng)D3中的PublicMember::CTS-Define()函數(shù),在該函數(shù)中實(shí)現(xiàn)對(duì)飛行軌跡及地圖的加載。

        輸入接口中包括四個(gè)文件,首先讀取涉及地圖信息文件,該文件含括地圖編號(hào),并按照向南飛順序排列,向北飛倒序排列,使得第一項(xiàng)始終為飛行起點(diǎn)位置,同時(shí)還包含所有地圖的總量。讀取所有涉及數(shù)據(jù)信息,并獲得所涉及地圖塊的左下角經(jīng)緯度坐標(biāo)。配置過(guò)程根據(jù)地圖數(shù)據(jù)塊的數(shù)量進(jìn)行循環(huán)配置,將軌跡的起點(diǎn)位置所在的地圖塊作為偏移量為0的地圖塊,這樣可以減小軌跡與地圖模型之間的誤差。同時(shí)記錄該地圖塊的經(jīng)緯度坐標(biāo)作為基準(zhǔn),偏移函數(shù):

        PObject-dixing[j]->setTranslate(0,0,0);

        其中,PObject-dixing[]是vpObject定義的對(duì)象,j是循環(huán)次數(shù)變量從0開(kāi)始,當(dāng)為0時(shí)設(shè)置偏移量為0,之后根據(jù)該地圖經(jīng)緯度與起始?jí)K經(jīng)緯度的差值設(shè)置地圖塊加載的偏移量:

        Ix=(ll[0]-a[0])*cos(a[1]/180*3.14)*111 000;

        Iy=(ll[1]-a[1])*111 000;

        PObject-dixing[j]->setTranslate(Ix,Iy,0);

        其中,ll是當(dāng)前地圖塊的經(jīng)緯信息,a是起始?jí)K的經(jīng)緯信息,其余配置默認(rèn),并將其添加到定義的myScene的子類(lèi)下。

        軌跡的讀取配置有兩種方法:其一通過(guò)坐標(biāo)轉(zhuǎn)換vpCoordSys模塊,將經(jīng)緯度坐標(biāo)直接配置到路徑之中,通過(guò)該轉(zhuǎn)換將坐標(biāo)投影到以起始經(jīng)緯度為基準(zhǔn)的路徑當(dāng)中,該方式實(shí)現(xiàn)軌跡效果良好,但對(duì)姿態(tài)不可控。這里采取第二種方法,直接坐標(biāo)轉(zhuǎn)換,坐標(biāo)轉(zhuǎn)換方式同上,變量名換為mx,my,mz為高度:

        Pathway-pointset[i]->setPosition(mx,my,mz);

        Pathway-pointset[]為vp::PathwayPointSet::Way Point定義的對(duì)象,i為第i個(gè)點(diǎn),同樣可以控制姿態(tài):

        Pathway-pointset[i]->setOrientation(h,p,r);

        實(shí)現(xiàn)了航空飛行器的6D飛行軌跡展示,具體流程參照?qǐng)D7。

        圖7 地圖-軌跡配置流程

        剩余文件即飛機(jī)模型的配置,對(duì)于任意飛行器模型只要確定文件路徑,即可加載到視景仿真系統(tǒng)中。

        2.3 仿真實(shí)驗(yàn)效果圖

        對(duì)于完整的MFC程序框架,須在程序非正常執(zhí)行時(shí)返回到就緒狀態(tài)。這就要求在定義場(chǎng)景中,有錯(cuò)誤檢測(cè),一旦觸發(fā)就提示消息,并返回到初始狀態(tài)。本程序通過(guò)LX-global全局類(lèi)函數(shù)記錄程序運(yùn)行錯(cuò)誤信息,并在返回線程主函數(shù)時(shí)進(jìn)行消息提示,如圖8所示。

        圖8 非正常運(yùn)行錯(cuò)誤提示圖

        對(duì)于起點(diǎn)位置經(jīng)緯度99.8°,26.4°,終點(diǎn)位置經(jīng)緯度100.5°,27.5°,正確配置文件后得到仿真結(jié)果如圖9所示。

        圖9 仿真結(jié)果

        3 飛行器海上空投救援物資

        3.1 飛行器海上空投視景仿真

        飛行器海上空投視景仿真的主要目的是完整展現(xiàn)空投的整個(gè)過(guò)程,對(duì)于由不同的初始條件引起的空投結(jié)果區(qū)別,可以通過(guò)視景仿真進(jìn)行直觀的觀察,從而對(duì)不同初始條件下的空投效果進(jìn)行比較,尤其是對(duì)落體在空中的姿態(tài)變化和落點(diǎn)位置的變化。

        與飛行器山地飛行相同的是開(kāi)發(fā)的基本流程,如圖2、圖3。區(qū)別在于:飛行器山地飛行關(guān)鍵在于任意飛行軌跡與相應(yīng)的地形相契合,而飛行器海上空投重點(diǎn)在于仿真背景構(gòu)建及相應(yīng)控制功能的實(shí)現(xiàn),因此兩者側(cè)重點(diǎn)不同,涵蓋了更多關(guān)于航空飛行器視景仿真的要點(diǎn)。

        3.2 Lynx Prime配置仿真框架

        海上空投救援物資的基本背景包括:海洋,飛行器,救援物資模型,遇難船只模型,環(huán)境等。由基本流程框架圖2可知,首先在Lynx Prime中基本實(shí)現(xiàn)整個(gè)視景仿真的框架,該框架是為了之后在MFC中添加控制功能以實(shí)現(xiàn)完整的視景仿真,Lynx Prime的基本配置過(guò)程如圖10所示。

        圖10 Lynx Prime配置過(guò)程

        在窗口下定義不同的通道,以從不同角度分別展示空投救援物資的過(guò)程,包括固定視角俯視,其可用于觀察救援物資落點(diǎn)位置與目標(biāo)位置以及救援物資下落軌跡的偏航情況;固定視角側(cè)視,其可用于觀察落體的軌跡在初始速度方向所在的鉛錘面的軌跡。從以上兩個(gè)視角可以完整的觀察到軌跡情況,對(duì)于最后一個(gè)窗口用來(lái)觀察救援物資在下落時(shí)的姿態(tài)變化,而姿態(tài)變化的鏡頭配置上先采取vpMotion運(yùn)動(dòng)模式,以落體中心為旋轉(zhuǎn)中心,可以通過(guò)鼠標(biāo)調(diào)整角度以及視角相對(duì)下落物體的距離。各個(gè)窗口占比,姿態(tài)觀察窗口占右半窗口,軌跡觀察窗口平分左半窗口。

        海洋環(huán)境Vega Prime中有兩種方式:1)直接使用自帶的ocean.flt文件;2)使用Vega Prime的海洋模塊vpMarine。ocean.flt文件配置簡(jiǎn)單方便,但是效果遠(yuǎn)不如海洋模塊。這里配置使用海洋模塊,具體需要設(shè)置海洋位置為以觀察者為中心,海浪生成參數(shù)等,同時(shí)需要將三個(gè)通道的觀察者配置到海洋模塊下,防止部分通道缺少海洋景象,或者配置三個(gè)海洋模塊分別與相應(yīng)的通道觀察者結(jié)合。除了海洋場(chǎng)景,還有云層、太陽(yáng)等一些其他的環(huán)境因素,同樣配置在各個(gè)觀察者中。

        配置各個(gè)模型在該場(chǎng)景下的運(yùn)行軌跡,飛機(jī)的飛行軌跡設(shè)為高度不變且沒(méi)有偏航的直線,救援物資的軌跡由軌跡文件給出,小船是為增加場(chǎng)景的完整度,其軌跡盡可能靠近落點(diǎn)目標(biāo)區(qū)域。Lynx Prime中配置軌跡使用vpPath模塊按照相應(yīng)的順序,在運(yùn)動(dòng)對(duì)象文件下進(jìn)行配置,包括導(dǎo)航器、路徑、插值算法、路徑集合選擇器、路徑點(diǎn)集合、路徑點(diǎn)??梢酝ㄟ^(guò)手動(dòng)配置各個(gè)數(shù)據(jù)點(diǎn),也可以通過(guò).WAY和.NAV文件直接配置,當(dāng)路徑點(diǎn)數(shù)較多又需要在搭建框架時(shí)考量路徑時(shí),考慮使用.WAY文件,該文件的格式是XML超文本標(biāo)記語(yǔ)言,生成該類(lèi)文件只需通過(guò)VC對(duì)軌跡數(shù)據(jù)文件進(jìn)行相應(yīng)的讀取,同時(shí)對(duì).WAY文件嚴(yán)格按照所給格式要求寫(xiě)入即可,使用時(shí)直接import該.WAY文件再配置到正確位置即可。對(duì)于還要生成C++文件進(jìn)行動(dòng)態(tài)配置軌跡的視景仿真來(lái)說(shuō),可以在二次開(kāi)發(fā)的過(guò)程中進(jìn)行軌跡加載,此時(shí)不能通過(guò)預(yù)運(yùn)行檢驗(yàn)基本框架。

        仿真過(guò)程缺少特效,仿真的逼真程度大打折扣。救援物資落水后會(huì)產(chǎn)生相應(yīng)的水花,實(shí)現(xiàn)該效果需要使用vpFx特效模塊和vp模塊中的碰撞檢測(cè)[8-10]。由于救援物資的外包裝為長(zhǎng)方體,因此使用包圍盒算法,將救援物資視為長(zhǎng)方體包圍盒,將碰撞對(duì)象海面視為水平面,則判斷救援物資與海面是否碰撞的依據(jù)是:長(zhǎng)方體的8個(gè)頂點(diǎn)中是否有一個(gè)點(diǎn)或多個(gè)點(diǎn)在海面的下方。具體情況如圖11-圖13所示。圖11中,整個(gè)長(zhǎng)方體在平面上方,表示救援物資與海面沒(méi)有發(fā)生碰撞;圖12中,長(zhǎng)方體的一個(gè)頂點(diǎn)在平面上,其余頂點(diǎn)都在平面上方,表示救援物資與海面沒(méi)有發(fā)生碰撞;圖13中,長(zhǎng)方體的一個(gè)頂點(diǎn)在平面下方,表示救援物資與海面發(fā)生碰撞。

        圖11 未發(fā)生碰撞

        圖12 臨界情況

        圖13 發(fā)生碰撞

        當(dāng)長(zhǎng)方體包圍盒與平面相接觸時(shí)會(huì)產(chǎn)生一個(gè)信號(hào),產(chǎn)生相應(yīng)的落水特效,通過(guò)vpFx特效模塊可以產(chǎn)生任意形態(tài)的水花。相關(guān)水特效即濺起水花的形態(tài)(角度、高度等),與落水物體的形狀、質(zhì)量、落水時(shí)的姿態(tài)與速度等有關(guān),可由流體力學(xué)計(jì)算得出。本文只作救援物資落水的特效展示,水花的細(xì)節(jié)并非經(jīng)過(guò)嚴(yán)格計(jì)算得出。

        碰撞對(duì)象只能在海洋模塊下添加Ocean.flt模型,小船的模型添加vpFx火焰與煙霧的特效,在海洋模塊中還配置其生成的艦首破浪和艦尾尾浪特效,均使用海洋模塊中的特效。

        視點(diǎn)與軌跡距離較遠(yuǎn),無(wú)法具體看到落體的實(shí)時(shí)位置,因此,為觀察完整的軌跡,對(duì)落體進(jìn)行相應(yīng)的標(biāo)記,使用vpOverlay模塊中的“LineStrip”,根據(jù)各個(gè)點(diǎn)的排列順序形成一個(gè)“X”形標(biāo)記,設(shè)置標(biāo)記對(duì)象為落體,在仿真過(guò)程中即可以看到落體在軌跡上的實(shí)時(shí)位置。

        Lynx Prime配置如圖14所示。

        圖14 Lynx Prime配置圖

        運(yùn)行后效果圖如圖15所示。

        圖15 Lynx Prime預(yù)運(yùn)行示意圖

        3.3 VC實(shí)現(xiàn)控制功能

        Lynx Prime搭建完成框架后,輸出為.CPP文件,并構(gòu)建MFC基本框架,其流程如圖3,而類(lèi)之間的關(guān)系參照?qǐng)D6。VC實(shí)現(xiàn)控制功能具體包括添加多條軌跡、對(duì)于不同軌跡設(shè)置不同的投放時(shí)間,即延時(shí)投放或提前投放,同時(shí)設(shè)置投放倒計(jì)時(shí)時(shí)間,將以上兩項(xiàng)設(shè)置為輸入,實(shí)時(shí)顯示當(dāng)前速度值,當(dāng)前時(shí)間以及根據(jù)設(shè)置的投放倒計(jì)時(shí)顯示當(dāng)前的倒計(jì)時(shí)時(shí)間,在程序運(yùn)行時(shí)作為輸出顯示;設(shè)置視角切換,可以在視景仿真運(yùn)行時(shí)切換視角觀察不同的落體下落情況;設(shè)置獲取當(dāng)前幀,定格當(dāng)前幀畫(huà)面以便分析。

        在MFC對(duì)話框類(lèi)中,配置窗口界面的輸入和輸出信息,可參照?qǐng)D16。

        圖16 VC控制功能

        定義開(kāi)始,退出按鈕,其中在開(kāi)始按鈕的消息響應(yīng)函數(shù)中獲取ID為IDC-grScene的分組框句柄,并賦值給CTS-RunningWindow,以此作為Vega Prime應(yīng)用程序的運(yùn)行場(chǎng)所,為控制變量賦值,即允許幀循環(huán)并將退出標(biāo)志置假,最后啟動(dòng)線程主函數(shù)。

        定義切換視角按鈕,在消息響應(yīng)函數(shù)中對(duì)標(biāo)志位進(jìn)行重復(fù)的取反賦值操作,實(shí)現(xiàn)對(duì)兩條不同軌跡觀察視角的來(lái)回切換,同理定義獲取當(dāng)前幀按鈕,實(shí)現(xiàn)對(duì)當(dāng)前幀的暫停與繼續(xù)。

        設(shè)計(jì)輸入為投放延時(shí)時(shí)間和設(shè)置倒計(jì)時(shí)時(shí)間,投放延遲時(shí)間決定兩個(gè)救援物資投放時(shí)間的差值,以區(qū)別兩條下落軌跡,設(shè)置倒計(jì)時(shí)時(shí)間,模擬飛行過(guò)程中投放時(shí)機(jī)判斷。在MFC框架中,定義數(shù)據(jù)顯示按鈕,并在其消息響應(yīng)函數(shù)中通過(guò)while循環(huán)不斷地對(duì)編輯框變量進(jìn)行賦值,并手動(dòng)推動(dòng)消息循環(huán),直到有仿真結(jié)束的信號(hào)為止。

        在PublicMember類(lèi)中主要針對(duì)場(chǎng)景定義函數(shù)CTS-Define()以及主線程函數(shù)中的幀循環(huán)進(jìn)行配置。

        開(kāi)始按鈕按下后,進(jìn)入主線程并按照如圖3所示進(jìn)行相應(yīng)的配置,在主線程中設(shè)有關(guān)閉控制變量,由退出按鈕改變?cè)撟兞坷^而控制程序的退出。

        在主線程中的CTS-Define()函數(shù)下實(shí)現(xiàn)對(duì)之前由Lynx Prime配置的.ACF輸出的.CPP的修改,包括軌跡點(diǎn)的加載,對(duì)照軌跡的設(shè)計(jì)。倒計(jì)時(shí)時(shí)間決定投放前的飛行時(shí)間,延遲時(shí)間決定投放物資的時(shí)間間隔,通過(guò)這兩個(gè)輸入值實(shí)現(xiàn)對(duì)上面函數(shù)的改造,具體過(guò)程可參照?qǐng)D17。

        圖17 CTS-Define()軌跡點(diǎn)配置

        路徑點(diǎn)配置完成后,畫(huà)面的配置完成,在幀循環(huán)中實(shí)現(xiàn)對(duì)仿真過(guò)程中每一幀的展示,同時(shí)還要實(shí)現(xiàn)MFC程序中的數(shù)據(jù)刷新,視角切換和目標(biāo)幀獲取。

        在主線程函數(shù)的幀循環(huán)中實(shí)現(xiàn)對(duì)于數(shù)據(jù)的更新,仿真時(shí)間的更新從0開(kāi)始計(jì)數(shù),在幀循環(huán)的開(kāi)始時(shí)刻設(shè)置仿真時(shí)間為0。

        vpKernel::instance()->setSimulationTime(0);

        在幀循環(huán)內(nèi)部,首先獲取當(dāng)前的時(shí)刻,采用:

        vpKernel::instance()->getSimulationTime();

        并將該函數(shù)的返回值最終賦到mfc類(lèi)的變量當(dāng)中,投放倒計(jì)時(shí)與當(dāng)前時(shí)間相關(guān),幀號(hào),幀率等與時(shí)間函數(shù)設(shè)置類(lèi)似:

        vpKernel::instance()->getActualFrameRate();

        對(duì)于實(shí)時(shí)顯示的速度值,可以采用多種方式獲取。一元區(qū)間不等距插值,或自帶函數(shù)獲取。

        由按鈕實(shí)現(xiàn)視角的切換,在兩條飛行軌跡中進(jìn)行視角切換,具體方法包括:1)在定義場(chǎng)景的過(guò)程中定義鏡頭的軌跡,并控制策略使能為真,即按照預(yù)定義的飛行軌跡點(diǎn)飛行,當(dāng)設(shè)置切換時(shí),更改對(duì)應(yīng)鏡頭的飛行軌跡路徑。該方法實(shí)用性好,切換速度快,并且切換后穩(wěn)定性好,缺點(diǎn)是對(duì)于場(chǎng)景定義配置。2)實(shí)時(shí)獲取鏡頭當(dāng)前位置,并再次為鏡頭配置切換后視角的位置。該實(shí)現(xiàn)方法靈活性較大,適用于變化較多的實(shí)時(shí)場(chǎng)合,但是切換后的鏡頭穩(wěn)定性與電腦的處理速度相關(guān)。

        3.4 仿真實(shí)驗(yàn)效果圖

        根據(jù)以上的配置來(lái)展現(xiàn)海上空投的整個(gè)過(guò)程,可以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)刷新,視角動(dòng)態(tài)切換和目標(biāo)幀的捕獲,仿真結(jié)果如圖18所示。

        圖18 海上空投視景仿真

        4 結(jié)束語(yǔ)

        本文詳細(xì)介紹了Vega Prime結(jié)合MFC應(yīng)用程序的開(kāi)發(fā)流程。針對(duì)視景仿真中大范圍地圖的飛行仿真加載問(wèn)題,給出了大地圖制作及飛行軌跡生成的詳細(xì)過(guò)程;針對(duì)海上空投過(guò)程完整展現(xiàn)的問(wèn)題,給出了仿真背景的構(gòu)建及相應(yīng)控制功能的實(shí)現(xiàn)。本文為相關(guān)Vega Prime視景仿真的開(kāi)發(fā)提供一定的參考。

        猜你喜歡
        視景飛行器軌跡
        高超聲速飛行器
        軌跡
        軌跡
        軌跡
        vega及其在戰(zhàn)場(chǎng)環(huán)境視景仿真系統(tǒng)中的應(yīng)用
        復(fù)雜飛行器的容錯(cuò)控制
        電子制作(2018年2期)2018-04-18 07:13:25
        進(jìn)化的軌跡(一)——進(jìn)化,無(wú)盡的適應(yīng)
        神秘的飛行器
        全回轉(zhuǎn)拖輪運(yùn)動(dòng)建模與視景仿真
        基于Vortex與Vega Prime的車(chē)輛模擬器動(dòng)力學(xué)與視景仿真
        极品av在线播放| 精品少妇人妻av无码久久| 精品人妻系列无码一区二区三区| 色系免费一区二区三区| 日本成人中文字幕亚洲一区 | 邻居人妻的肉欲满足中文字幕| 午夜国产精品一区二区三区| 在线视频国产91自拍| 人妻丝袜av中文系列先锋影音| 91精彩视频在线观看| 亚洲AV乱码毛片在线播放| 自拍情爱视频在线观看| 日韩人妻中文字幕专区| 人与动牲交av免费| 亚洲av无码日韩精品影片| 免费国产一级片内射老| 免费av一区男人的天堂| 无码av中文一区二区三区 | 日本人妻伦理在线播放| 水蜜桃精品一二三| 亚洲AV永久天堂在线观看| 亚洲av成人无网码天堂| 少妇被又大又粗又爽毛片久久黑人| 日本乱人伦在线观看| 久久99久久99精品免观看女同| 狼狼色丁香久久女婷婷综合| 国产福利永久在线视频无毒不卡| 粗大的内捧猛烈进出在线视频| 日韩精品有码中文字幕在线| 国产精品第一二三区久久| 国产乱xxⅹxx国语对白| 国产精品高潮av有码久久| 亚洲天码一区二区三区| 国产成人午夜无码电影在线观看| 久久久窝窝午夜精品| 亚洲一区二区丝袜美腿| 日韩女同视频在线网站| 国产av电影区二区三区曰曰骚网| 国产视频嗯啊啊啊| 女同三级伦理在线观看| 欧美性巨大╳╳╳╳╳高跟鞋|