" />

色偷偷伊人-色偷偷综合-色无五月-色香蕉影院-色亚洲影院

GL Studio在航空發(fā)動(dòng)機(jī)仿真中的應(yīng)用

所屬欄目:機(jī)械論文 發(fā)布日期:2010-08-31 08:48 熱度:

  摘要:GLStudio是一個(gè)虛擬儀表開發(fā)軟件。本文介紹了GLStudio的開發(fā)環(huán)境、建模方法、與VC混合編程的方法,并將其應(yīng)用到航空發(fā)動(dòng)機(jī)訓(xùn)練仿真中,開發(fā)了一套發(fā)動(dòng)機(jī)控制顯示面板。
  關(guān)鍵詞:仿真;航空發(fā)動(dòng)機(jī);GLStudio
  中圖分類號(hào):TP391
  
  來越困難。隨著計(jì)算機(jī)技術(shù)的突飛猛進(jìn),虛擬現(xiàn)實(shí)技術(shù)逐步走向成熟,軍事發(fā)達(dá)國(guó)家都十分重視基于虛擬現(xiàn)實(shí)的仿真訓(xùn)練系統(tǒng)的建設(shè),利用虛擬現(xiàn)實(shí)技術(shù)進(jìn)行訓(xùn)練系統(tǒng)的開發(fā),可以大大提高訓(xùn)練的效果,擺脫實(shí)裝的制約。在訓(xùn)練實(shí)踐中,我軍使用虛擬仿真訓(xùn)練訓(xùn)練系統(tǒng)后,訓(xùn)練效率比傳統(tǒng)方式提高10~20倍,而且可以實(shí)現(xiàn)故障重現(xiàn)、進(jìn)行特情處理訓(xùn)練,使訓(xùn)練效果又上了一個(gè)新臺(tái)階。利用虛擬現(xiàn)實(shí)技術(shù)實(shí)現(xiàn)航空發(fā)動(dòng)機(jī)機(jī)務(wù)訓(xùn)練,需要對(duì)飛機(jī)座艙中發(fā)動(dòng)機(jī)的中大量的儀器面板的行為,如開關(guān)的操作、指針的擺動(dòng)、指示燈的閃爍、旋鈕的轉(zhuǎn)動(dòng)、油門桿的推收等進(jìn)行仿真。發(fā)動(dòng)機(jī)儀表面板的功能、結(jié)構(gòu)復(fù)雜,利用傳統(tǒng)的建模工具,如3DMax、UG等,建模工作量大,效率低,難度大。為此,引進(jìn)了一種新型的建模工具—GLStudio。GLStudio是一個(gè)與操作系統(tǒng)無關(guān)的快速的易用的原型工具,用來創(chuàng)建實(shí)時(shí)的、照片級(jí)別的、可交互的圖形界面,可以創(chuàng)建發(fā)動(dòng)機(jī)的儀表面板。GLStudio編輯器允許一個(gè)圖形藝術(shù)家(美工)迅速而且容易地繪制美觀的圖形界面,并且能快速地建立模型,從而大大降低了建模難度,減小了工作量,提高了效率,而且建模效果非常逼真,可以達(dá)到照片級(jí)的效果。GLStudio還可以生成VisualC++直接可用的代碼,可與程序員熟悉的MFC混合編程。由于其簡(jiǎn)潔高效的開發(fā)方式,GLStudio被譽(yù)為“真實(shí)儀器面板的選擇”。
  1利用GLStudio開發(fā)儀表面板
  GLStudio是由分布式交互仿真技術(shù)公司(DistributedSimulationTechnologyInc.)開發(fā)的,用于建立實(shí)時(shí)的、三維的、照片級(jí)的交互圖形顯示界面。它能與HLA/DIS(HighLevelArchitecture/DistributedInteractiveSimulation)仿真應(yīng)用相連;生成C++和OpenGL源代碼,并且這些源代碼可以單獨(dú)運(yùn)行,也可以嵌入其它應(yīng)用中。
  GLStudio代碼生成器把GLStudio編輯器創(chuàng)建的文件生成C++、Java、涉及安全的C++和OpenGL源代碼。任何可由GLStudio編輯器繪制出的圖形對(duì)象都能生成C++、Java和涉及安全的C++源代碼。代碼生成器允許把對(duì)象組生成為定制的C++類,這些C++類能被輕松集成到用戶的各種應(yīng)用程序中。
  1.1設(shè)計(jì)交互式三維圖形
  在GLStudio中設(shè)計(jì)交互式三維圖形,一般可以分為如下4個(gè)步驟:
  (1)設(shè)計(jì)圖形界面。GLStudio設(shè)計(jì)器是一個(gè)經(jīng)過長(zhǎng)時(shí)間實(shí)踐驗(yàn)證的三維所見即所得的繪制工具。設(shè)計(jì)器有一個(gè)現(xiàn)代的、直觀的用戶圖形界面,包括了用戶所期望的所有現(xiàn)代用戶圖形界面的元素。
  (2)生成代碼。GLStudio代碼生成器把GLStudio編輯器創(chuàng)建的文件生成C++、Java、涉及安全的C++和OpenGL源代碼。任何可由GLStudio編輯器繪制出的圖形對(duì)象都能生成C++、Java和涉及安全的C++源代碼。代碼生成器允許把對(duì)象組生成為定制的C++類,這些C++類能被輕松集成到用戶的各種應(yīng)用程序中。
  (3)將生成的代碼添加到自己的應(yīng)用程序中。代碼生成器允許把對(duì)象組生成為定制的C++類,這些C++類能被輕松集成到仿真應(yīng)用程序中。
  (4)編譯、連接、運(yùn)行,生成可執(zhí)行文件。
  GLStudio設(shè)計(jì)器包括兩個(gè)主要的控制窗口和一個(gè)或多個(gè)編輯窗口。除了眾多圖形應(yīng)用程序提供的畫布外,GLStudio設(shè)計(jì)器也包含了結(jié)構(gòu)視圖,它顯示了所有設(shè)計(jì)中的對(duì)象的列表,用一個(gè)可折疊的樹狀結(jié)構(gòu)來顯示。
  GLStudio支持照片級(jí)紋理的應(yīng)用。一切多邊形對(duì)象都可以貼紋理。紋理工具可以讓你使用大多數(shù)格式的紋理,如PNG、TIFF、JPEG、SGI、BMP等。紋理能輕松地在對(duì)象上縮放、旋轉(zhuǎn)和平鋪,以達(dá)到所期望的效果。
  在圖形界面中,最為重要的元素就是“輸入設(shè)備”(InputDevice)。它是組(group)的一個(gè)子類,包含了組的所有屬性,還有一些額外的特性。輸入設(shè)備是能夠根據(jù)用戶輸入或程序輸入改變狀態(tài)(state)的一組對(duì)象,即輸入設(shè)備可以與用戶交互,例如,把指示燈定制為一個(gè)輸入設(shè)備,則可以定義鼠標(biāo)點(diǎn)擊(事件發(fā)生)時(shí)點(diǎn)亮或熄滅。開發(fā)人員需要為輸入設(shè)備添加事件處理的C++代碼,以處理事件或改變狀態(tài)。這些代碼放在“對(duì)象屬性/輸入設(shè)備”(ObjectProperties/InputDevice)標(biāo)簽的“回調(diào)定義”(CallbackDefinition)域中,有一些預(yù)定義的宏函數(shù)可以利用。回調(diào)函數(shù)將包含在生成的源文件中,用戶在自己編寫的應(yīng)用程序中調(diào)用它們,以響應(yīng)事件,包括鍵盤和鼠標(biāo)事件。
  代碼生成器對(duì)話框控制著GLStudio生成代碼的設(shè)置,包括頭文件名、源文件名、代碼輸出路徑、派生類名、實(shí)例名等,這些都要加到用戶的應(yīng)用程序中。應(yīng)用類型(ApplicationType)包括Standalone、glxComponent和wglComponent3種,分別用于將GLStudio代碼獨(dú)立運(yùn)行、加入U(xiǎn)NIX系統(tǒng)已有程序和加入MicrosoftWindows系統(tǒng)已有程序中。在與MFC混合編程時(shí),新建工程向?qū)ё詣?dòng)將所需要的程序文件(如頭文件等)加入到用戶的工程中。
  1.2使用GLStudio生成的代碼編程
  如上所述,GLStudio生成的代碼有3種類型,由于大多數(shù)的開發(fā)人員使用VisualC++的MFC編程,這里重點(diǎn)介紹GLStudio生成的代碼與MFC的混合編程方法。
  (1)GLStudio代碼生成器應(yīng)生成Wglcomponent類型的代碼。
  (2)用戶要建立一個(gè)MFCEXE程序,然后將GLStudio生成的頭文件和源文件(包含完整的路徑名)加入工程中。
  (3)在自己的應(yīng)用程序中,生成GLStudio生成類的一個(gè)實(shí)例,并使用該類的Draw函數(shù)在窗口中繪制圖形。
  (4)在GLStudio中,根據(jù)面板儀表的功能,設(shè)計(jì)輸入/輸出屬性,從而響應(yīng)交互和顯示。在響應(yīng)用戶事件(如鼠標(biāo)事件)時(shí),需要將鼠標(biāo)位置坐標(biāo)傳遞給GLStudio所生成的類,將Windows坐標(biāo)轉(zhuǎn)換為GLStudio下的坐標(biāo)。GLStudio的坐標(biāo)原點(diǎn)在左下角,與Windows的左上角不同。另外,GLStudio與Windows事件消息在種類和描述上都有所不同。
  3GLStudio在發(fā)動(dòng)機(jī)仿真中具體應(yīng)用
  3.1建模和貼圖處理
  建模的基本方法為采用二維儀表技術(shù)來實(shí)現(xiàn)大多數(shù)虛擬儀表,在降低系統(tǒng)資源占用的同時(shí),使其依然具有三維效果。所有的開關(guān)、旋鈕、按鈕、指示燈、表頭、多功能顯示器(MFD)等,都采用二維技術(shù)實(shí)現(xiàn)。對(duì)于油門桿、駕駛桿等,只能采用三維的建模方法實(shí)現(xiàn)。三維模型采用層次結(jié)構(gòu)OpenFlight格式。OpenFlight格式是虛擬現(xiàn)實(shí)技術(shù)標(biāo)準(zhǔn)的數(shù)據(jù)格式,以數(shù)據(jù)庫的結(jié)構(gòu)方式對(duì)模型進(jìn)行后期處理、顯示。圖1就是利用二維技術(shù)實(shí)現(xiàn)的開關(guān)、轉(zhuǎn)速表模型,雖然模型是二維的,但是加上陰影等處理后,顯示效果明顯具有立體感。當(dāng)然,在后期GLStudio處理中要注意Z-Buffer的設(shè)置。
  為了提高調(diào)入和渲染速度,貼圖大小要求滿足OpenGL對(duì)圖形圖像驅(qū)動(dòng)的要求,即大小為2m×2n。例如有一幅圖像大小為30×40,則最終處理時(shí)大小應(yīng)為32×64。貼圖的大小盡量不要超過1024×1024。
  為了方便改變貼圖的透明度,圖片采用了PNG的格式。
                               t1.jpg
                                                                                       圖1開關(guān)、轉(zhuǎn)速表的模型
  
  3.2創(chuàng)建工程
  在VC或VC.Net中生成GLStudio工程。注意VC中的GLStudio工程分為Standalone和Component,為了便于調(diào)試,最初制作時(shí)應(yīng)生成Standalone。在完成基本設(shè)計(jì)之后,根據(jù)需要,后期可以打包生成Component工程,從而生成.dll控件,方便集成后插入其它程序環(huán)境中。
  3.3代碼設(shè)計(jì)
  對(duì)于不同的面板儀表功能,將其劃分如表1所示幾類。
                                                                    表1虛擬儀表設(shè)計(jì)分類

                                      b1.jpg
  例如對(duì)于開關(guān),只需要把其DetenVal值傳出即可。但是對(duì)于多位開關(guān),GLStudio自動(dòng)對(duì)其DtentVal進(jìn)行編號(hào),這種編號(hào)有可能不是我們想要的,而且由于多位開關(guān)的動(dòng)作也是與DtentVal一致的,由GLStudio自動(dòng)編號(hào),所以如果直接用GLStudio中的GlsSwitch來制作有可能達(dá)不到要求,此時(shí)可以把要作的元件轉(zhuǎn)化成基本的InputDevice,通過代碼實(shí)現(xiàn)開關(guān)的動(dòng)作及屬性值的外傳。
  在客戶程序中,要把事件消息(例如鼠標(biāo)按下)傳遞給GLStudio生成的代碼,GLStudio的“InputDevice”接收到這個(gè)消息(通常是鼠標(biāo)擊中、鍵盤按下等),才能響應(yīng)用戶的操作,實(shí)現(xiàn)預(yù)先定義的功能。
  以鼠標(biāo)左鍵按下為例,在InputDevice的回調(diào)函數(shù)中定義:
  ON-MOUSE-DOWN(MOUSE-LBUTTON)
  {
  ……
  }
  其中,ON-MOUSE-DOWN(MOUSE-LBUTTON)是GLStudio預(yù)定義的宏,表示鼠標(biāo)左鍵按下。
  以下是一個(gè)具體的開發(fā)實(shí)例的部分代碼,具體功能為響應(yīng)鼠標(biāo)點(diǎn)擊、拖動(dòng),STICK_1實(shí)現(xiàn)轉(zhuǎn)動(dòng)。
  intstick_1Class::moveStick_Class_Cb(InputDevice*self,DisplayEvent*ev)
  {
  MouseEvent*mev=(MouseEvent*)ev;
  stick_1Class*frame=(stick_1Class*)self->Parent();
  ……
  ON_MOUSE_DOWN(MOUSE_RBUTTON)
  {
  lastx=mev->lx;
  lasty=mev->ly;
  ……
  }
  ……
  if(ev->eventSubtype==MOUSE_DRAG)
  {
  x=mev->lx;
  y=mev->ly;
  ……
  STICK_1->DynamicRotate(dx,Y_AXIS);
  STICK_1->DynamicRotate(-dy,X_AXIS);
  }
  return1;
  }
  其中,stick_1是一個(gè)MFCEXE工程;moveStick_Class是GLStudio的一個(gè)派生實(shí)例;moveStick_Class_Cb是GLStudio中定義的一個(gè)InputDevice。值得注意的是,在響應(yīng)用戶事件(如鼠標(biāo)事件)時(shí),需要將Windows坐標(biāo)轉(zhuǎn)換為GLStudio下的坐標(biāo)。
  GLStudio的坐標(biāo)原點(diǎn)在左下角,與Windows的左上角不同。在用戶程序中可以這樣轉(zhuǎn)換:
  CRectrect;
  GetClientRect(&rect);
  mouse.y=rect.bottom2rect.top2point.y;
  mouse.x=point.x;
  mouse.ly=rect.bottom2rect.top2point.y;
  mouse.lx=point.x;
  mouse.lz=0;
  另外,Windows與GLStudio對(duì)事件消息的描述不一樣,例如,鼠標(biāo)左鍵按下事件,在MFC消息映射時(shí),用OnLButtonDown就可以描述了,但在GLStudio中要描述如下:
  MouseEventmouse;
  mouse.eventType=EVENT-MOUSE;
  mouse.buttonMask=MOUSE-LBUTTON;
  mouse.eventSubtype=MOUSE-DOWN;
  再者,GLStudio與Windows定義的事件消息種類不同,如GLStudio中有MouseDrag事件,可以直接拖動(dòng)對(duì)象,而Windows中沒有這個(gè)事件,必須通過MouseMove或其他方式來實(shí)現(xiàn)。
  3.4系統(tǒng)集成
  將建立的發(fā)動(dòng)機(jī)儀表面板發(fā)布成Component,在VC的開發(fā)環(huán)境中進(jìn)行集成。集成后,建立了一個(gè)發(fā)動(dòng)機(jī)操作顯示的座艙環(huán)境。編制發(fā)動(dòng)機(jī)操作邏輯代碼,接受處理虛擬儀表的輸出屬性值,向響應(yīng)儀表輸入屬性進(jìn)行顯示驅(qū)動(dòng),實(shí)現(xiàn)發(fā)動(dòng)機(jī)的訓(xùn)練功能。
  4結(jié)束語
  在航空發(fā)動(dòng)機(jī)虛擬訓(xùn)練系統(tǒng)中利用GLStudio開發(fā)發(fā)動(dòng)機(jī)面板儀表,建立了仿真度高、易用的。利用GLStudio進(jìn)行面板儀表開發(fā),建模形象逼真、速度快、效率高,生成代碼可讀性好,確實(shí)是儀表面板仿真的開發(fā)利器。
  參考文獻(xiàn):
  [1]DistributedSimulationTechnologyInc.GLStudioUsersManual.2004.
  [2]DistributedSimulationTechnologyInc.GLStudioReleaseNotes.2004.
  [3]樊世友,邸彥強(qiáng),朱元昌,GLStudio軟件在視景仿真建模中的應(yīng)用,軍械工程學(xué)院,2001.3.
  [4]黃柯棣.系統(tǒng)仿真技術(shù)[M].長(zhǎng)沙:國(guó)防科技大學(xué)出版社,1998
  

文章標(biāo)題:GL Studio在航空發(fā)動(dòng)機(jī)仿真中的應(yīng)用

轉(zhuǎn)載請(qǐng)注明來自:http://www.anghan.cn/fblw/ligong/jixie/3102.html

相關(guān)問題解答

SCI服務(wù)

搜論文知識(shí)網(wǎng) 冀ICP備15021333號(hào)-3

主站蜘蛛池模板: 成人在线激情网 | 又黄又爽的成人免费视频播放 | 91久久亚洲精品一区二区 | 欧美一级特黄aa大片婷婷 | 成 人 黄 色 大 片 | 91亚洲区国产区精品区 | 草逼免费看| 妞干网手机免费视频 | 你懂的成人 | 啪啪国产 | 亚洲国产91在线 | 一级做性色a爱片久久片 | 综合色图 | 求毛片网站 | 国产福利合集 | 成人涩 | 成年女人毛片免费观看不卡 | 综合色中色 | 婷婷久久激情综合啪啪 | 亚洲成人黄色片 | 久久久久777777人人人视频 | 欧美性黑人巨大gaysex | 手机黄色小视频 | 久久精品国产99久久香蕉 | 亚洲欧美一区二区三区久久 | 亚洲无线| 亚洲一区二区三区中文字幕5566 | 亚洲精品久久久久久下一站 | 精品无人区一区二区三区 | 婷婷啪啪| 日本免费va毛片在线 | 国产特级毛片aaaaaa毛片 | 亚洲精品入口一区二区在线观看 | 免费看成人国产一区二区三区 | 欧美影院天天5g天天爽 | 国产人成精品综合欧美成人 | 桃色婷婷 | 善良的后裔完整视频在线观看 | 欧美黄色高清视频 | 亚洲一区有码 | 女人高清性色生活片 |