束家熠
【摘 要】本文介紹了利用三維建模軟件建立渦扇發(fā)動(dòng)機(jī)模型的方法,使用旋轉(zhuǎn)、復(fù)制、平移等指令,安照發(fā)動(dòng)機(jī)結(jié)構(gòu)圖紙或照片構(gòu)建發(fā)動(dòng)機(jī)三維模型。通過編程調(diào)用發(fā)動(dòng)機(jī)三維模型,實(shí)現(xiàn)了渦扇發(fā)動(dòng)機(jī)三維視景仿真程序,同時(shí)在前臺(tái)對(duì)話框顯示發(fā)動(dòng)機(jī)動(dòng)態(tài)模型輸出的發(fā)動(dòng)機(jī)工作參數(shù)。在發(fā)動(dòng)機(jī)模型中預(yù)留特效貼圖并通過程序的靈活調(diào)用,對(duì)發(fā)動(dòng)機(jī)內(nèi)部的氣流特效和燃燒室與加力燃燒室的燃燒特效提出了新的實(shí)現(xiàn)方法。
【關(guān)鍵詞】三維建模;渦扇發(fā)動(dòng)機(jī);視景仿真
0 引言
相較于傳統(tǒng)的數(shù)值顯示和數(shù)據(jù)曲線,使用三維視景仿真技術(shù)對(duì)航空發(fā)動(dòng)機(jī)的工作狀態(tài)進(jìn)行模擬,可以更為直觀地顯示發(fā)動(dòng)機(jī)在不同工況下的內(nèi)部氣流流速、溫度等重要特征。
Creator和Vega Prime分別是美國(guó)MultiGen公司開發(fā)的商用三維仿真建模軟件和實(shí)時(shí)三維應(yīng)用開發(fā)環(huán)境,Creator生成的三維模型可通過Vega Prime配置生成三維視景仿真應(yīng)用,是種高效、便捷、靈活的三維視景仿真系統(tǒng)開發(fā)手段,同時(shí)提供了逼真的仿真效果和聲、光以及視覺特效。
本文基于上述兩種軟件,開發(fā)航空發(fā)動(dòng)機(jī)三維工作演示系統(tǒng),可應(yīng)用于科研教學(xué)、企業(yè)產(chǎn)品演示等。
1 航空發(fā)動(dòng)機(jī)模型的建立
與3DMAX等主流建模軟件相比,Creator的特點(diǎn)是采用了針對(duì)實(shí)時(shí)應(yīng)用優(yōu)化的OpenFlight數(shù)據(jù)格式,這是一種通過劃分層次來描述視景信息的邏輯化數(shù)據(jù)庫(kù),由眾多不同等級(jí)的節(jié)點(diǎn)所構(gòu)成的[1]。
在現(xiàn)實(shí)世界中,一個(gè)封閉的幾何物體的構(gòu)成要素可分為體、面、線、點(diǎn)。相對(duì)應(yīng)的,在典型的OpenFlight模型數(shù)據(jù)庫(kù)中,構(gòu)成一個(gè)物體的節(jié)點(diǎn)從結(jié)構(gòu)層次上依次為體節(jié)點(diǎn)、面節(jié)點(diǎn)、線節(jié)點(diǎn)和點(diǎn)節(jié)點(diǎn),另外任意多個(gè)節(jié)點(diǎn)還可以組合成一個(gè)組節(jié)點(diǎn)以便于管理。從功能角度來說,上述體、面、線等節(jié)點(diǎn)可用于描述三維模型的幾何特征以及顏色、反光度和紋理等特征信息,而組節(jié)點(diǎn)可用于集中管理不同節(jié)點(diǎn)之間的層次關(guān)系[2]。
以典型的雙轉(zhuǎn)子大涵道比渦扇發(fā)動(dòng)機(jī)為例,其主要結(jié)構(gòu)部件包括風(fēng)扇、壓氣機(jī)、燃燒室、高低壓渦輪、尾噴管、機(jī)匣和附件等。
航空發(fā)動(dòng)機(jī)內(nèi)的大部分部件均為旋轉(zhuǎn)件,如高低壓轉(zhuǎn)子,機(jī)匣和燃燒室等。對(duì)于這一類部件,可以直接通過描點(diǎn)(polygon)指令按照發(fā)動(dòng)機(jī)圖紙或照片描繪出發(fā)動(dòng)機(jī)的橫截面,然后通過滾動(dòng)指令將橫截面圍繞發(fā)動(dòng)機(jī)中軸線一圈并生成旋轉(zhuǎn)部件的封閉實(shí)體。最后,為了節(jié)省仿真程序運(yùn)行時(shí)的計(jì)算機(jī)資源,可將實(shí)體封閉后觀察不到的多余面節(jié)點(diǎn)刪除。
發(fā)動(dòng)機(jī)葉片可視為扭轉(zhuǎn)的拉伸實(shí)體,因此可先利用描點(diǎn)指令(polygon)描繪出葉片的截面形狀,然后通過復(fù)制、平移(Translate)、旋轉(zhuǎn)(Rotate about edge)等指令將葉片截面移至不同高度,并隨高度增加扭轉(zhuǎn)一定角度,最后通過連接(Loft)指令將這些截面連接為一個(gè)完整的葉片。對(duì)于渦輪或比較短小的壓氣機(jī)葉片,可以直接將葉片截面通過拉伸(Wall)指令生成無扭轉(zhuǎn)的葉片。最后將生成的葉片安裝到發(fā)動(dòng)機(jī)上,使用復(fù)制和旋轉(zhuǎn)指令圍繞發(fā)動(dòng)機(jī)中軸線生成一圈完整的發(fā)動(dòng)機(jī)葉片。
除了上述體、面等節(jié)點(diǎn)外,Creator還提供了一些特殊節(jié)點(diǎn),這些節(jié)點(diǎn)與組節(jié)點(diǎn)的級(jí)別相同,但并不包含模型的幾何特征信息,其作用是為下屬的子節(jié)點(diǎn)提供特殊效果。在建立本文中的航空發(fā)動(dòng)機(jī)模型的過程中,主要涉及到兩種特殊節(jié)點(diǎn),其一是自由度節(jié)點(diǎn)(DOF),該節(jié)點(diǎn)的作用是賦予模型中的任意體節(jié)點(diǎn)一個(gè)子坐標(biāo)系,以上級(jí)節(jié)點(diǎn)的坐標(biāo)系為母坐標(biāo)系,在DOF節(jié)點(diǎn)下的體節(jié)點(diǎn)可以以子坐標(biāo)系的原點(diǎn)為中心,在母坐標(biāo)系的運(yùn)動(dòng)基礎(chǔ)上做六自由度的相對(duì)運(yùn)動(dòng),結(jié)合編譯語(yǔ)言的運(yùn)用,可以靈活的展現(xiàn)模型的動(dòng)態(tài)特性。例如本文將發(fā)動(dòng)機(jī)高低壓轉(zhuǎn)子分別置于DOF節(jié)點(diǎn)下,并將DOF坐標(biāo)系原點(diǎn)設(shè)在發(fā)動(dòng)機(jī)中軸線上,后續(xù)便可通過程序控制高低壓轉(zhuǎn)子圍繞發(fā)動(dòng)機(jī)中軸線旋轉(zhuǎn)。另一個(gè)特殊節(jié)點(diǎn)是選擇節(jié)點(diǎn)(switch node),使用該節(jié)點(diǎn)可以對(duì)下級(jí)節(jié)點(diǎn)進(jìn)行顯示或隱藏控制。
通過上述方法,分別建立了大(圖1)、小涵道比渦扇發(fā)動(dòng)機(jī)。
2 VigaPrime與Visual Studio的聯(lián)合編程的實(shí)現(xiàn)
Vega Prime可直接讀取由Creator開發(fā)的OpenFlight格式模型,通過將三維視景仿真程序的底層代碼封裝、固化并增加向?qū)J?,便于開發(fā)者對(duì)視景仿真程序進(jìn)行快速配置。通過圖形化的人機(jī)界面,開發(fā)者可以很方便地在虛擬世界中加入各種地景、模型、天空、氣候、云層、水面以及煙霧、爆炸和火光等特效,并自定義觀察者的運(yùn)動(dòng)方式。完成仿真環(huán)境的配置并輸出后,可由VS(Visual Studio) C++調(diào)用配置文件,完成應(yīng)用程序的開發(fā)。
本文利用VS中MFC自帶的多媒體定時(shí)器設(shè)置仿真周期,每隔16ms刷新Vega Prime仿真程序的顯示畫面,利用定時(shí)器可以較為精確地控制仿真周期,實(shí)現(xiàn)Vega Prime程序的運(yùn)行。
2.1 程序設(shè)計(jì)與界面
本文的仿真程序主要包括三個(gè)自定義類:
1)顯示控制對(duì)話框類(圖2),此類為仿真應(yīng)用程序的主要類,有兩個(gè)主要作用:首先,該類下建立并調(diào)用了Vega Prime仿真對(duì)象和發(fā)動(dòng)機(jī)動(dòng)態(tài)模型對(duì)象,通過對(duì)發(fā)動(dòng)機(jī)模型的后臺(tái)調(diào)用獲取下一仿真周期中發(fā)動(dòng)機(jī)工作狀態(tài)參數(shù),并將這些參數(shù)傳遞給Vega Prime對(duì)象用以在前臺(tái)實(shí)時(shí)刷新仿真窗口,將發(fā)動(dòng)機(jī)的高低壓軸轉(zhuǎn)速、氣流狀態(tài)、燃燒室火焰等狀態(tài)變化以三維視景仿真的形式呈現(xiàn)。其二是數(shù)據(jù)的顯示和輸入,該類可通過儀表等控件將后臺(tái)的發(fā)動(dòng)機(jī)工作狀態(tài)參數(shù)直觀地呈現(xiàn)給用戶,并提供如油門臺(tái)推力桿角度等發(fā)動(dòng)機(jī)控制參數(shù)和高度、溫度等環(huán)境參數(shù)的輸入功能,并將輸入的參數(shù)傳遞給發(fā)動(dòng)機(jī)模型。
2)發(fā)動(dòng)機(jī)動(dòng)態(tài)模型類,該類通過動(dòng)態(tài)鏈接庫(kù)(DLL)調(diào)用獨(dú)立的發(fā)動(dòng)機(jī)動(dòng)態(tài)模型,接收來自監(jiān)視對(duì)話框類的發(fā)動(dòng)機(jī)控制參數(shù)和環(huán)境參數(shù),計(jì)算出下一仿真周期的發(fā)動(dòng)機(jī)工作參數(shù),并將該參數(shù)傳遞給監(jiān)視對(duì)話框類;
3)VigaPrime仿真實(shí)現(xiàn)類(圖3),負(fù)責(zé)定義并初始化視景仿真窗口,調(diào)用發(fā)動(dòng)機(jī)三維模型,并根據(jù)從監(jiān)視對(duì)話框類中接收的參數(shù)實(shí)時(shí)刷新顯示界面。此外,發(fā)動(dòng)機(jī)視景仿真程序中的火焰和氣流特效也是通過該類中的成員函數(shù)實(shí)現(xiàn)的。
2.2 發(fā)動(dòng)機(jī)部件自由度節(jié)點(diǎn)設(shè)計(jì)
本程序所用的發(fā)動(dòng)機(jī)模型主要擁有高、低壓軸兩個(gè)旋轉(zhuǎn)部件以及小涵道比發(fā)動(dòng)機(jī)特有的可調(diào)節(jié)尾噴管,上述部件的旋轉(zhuǎn)運(yùn)動(dòng)以Rotate(double p,double y,double r,true)函數(shù)實(shí)現(xiàn),其中p,y,r分別代表了DOF下屬節(jié)點(diǎn)的俯仰,偏航和滾轉(zhuǎn)角度。
3 發(fā)動(dòng)機(jī)動(dòng)態(tài)特效的實(shí)現(xiàn)
發(fā)動(dòng)機(jī)的動(dòng)態(tài)工作特效主要有氣流在發(fā)動(dòng)機(jī)流道內(nèi)的流動(dòng)特效、燃燒室的動(dòng)態(tài)燃燒特效和加力燃燒特效等。很明顯,這些特效的實(shí)現(xiàn)較為復(fù)雜,無法僅通過Creator建模實(shí)現(xiàn),而Vega Prime雖然提供了一些簡(jiǎn)單的效果函數(shù),但仍無法滿足航空發(fā)動(dòng)機(jī)工作時(shí)動(dòng)態(tài)特效的要求。例如燃燒室的火焰效果,Vega Prime內(nèi)置的火焰特效無法表現(xiàn)燃燒室內(nèi)的高速燃燒視景效果。因此,運(yùn)用Creator中的特效節(jié)點(diǎn)和Vega Prime特效函數(shù),并通過仿真程序靈活調(diào)用是展現(xiàn)這些特效的關(guān)鍵。
3.1 氣流特效
發(fā)動(dòng)機(jī)內(nèi)外涵道內(nèi)的氣流速度、溫度是表征發(fā)動(dòng)機(jī)工作狀態(tài)的重要特征,由于發(fā)動(dòng)機(jī)內(nèi)部流道較為復(fù)雜,而Vega Prime自帶的粒子特效只帶有簡(jiǎn)單的方向和速度指令,無法沿復(fù)雜路徑移動(dòng),不利于展示發(fā)動(dòng)機(jī)內(nèi)的氣流特性。而粒子本身又是不透明的,很容易遮擋發(fā)動(dòng)機(jī)內(nèi)部結(jié)構(gòu),妨礙觀察。本文采用動(dòng)態(tài)透明貼圖的方式,既直觀的展現(xiàn)發(fā)動(dòng)機(jī)內(nèi)部氣流流向、速度和溫度,同時(shí)避免占用過多系統(tǒng)資源。具體方法是:首先在Creator中建立兩個(gè)形狀與發(fā)動(dòng)機(jī)流道相同的面節(jié)點(diǎn),其中一個(gè)面節(jié)點(diǎn)貼上表征發(fā)動(dòng)機(jī)內(nèi)部溫度的半透明貼圖,另一個(gè)面上貼上一層白色半透明靜態(tài)氣流貼圖作為氣流指示,通過TextureAnimation()函數(shù),命令靜態(tài)氣流貼圖以指定的速度沿發(fā)動(dòng)機(jī)進(jìn)氣道向尾噴管移動(dòng),通過調(diào)節(jié)括號(hào)內(nèi)參數(shù)的大小,可以調(diào)節(jié)指示氣流的速度,以配合表現(xiàn)發(fā)動(dòng)機(jī)不同工況。由于動(dòng)態(tài)貼圖只會(huì)在與流道截面形狀一致的面節(jié)點(diǎn)上移動(dòng),所以對(duì)觀察者而言,氣流只會(huì)在發(fā)動(dòng)機(jī)內(nèi)外涵流道內(nèi)運(yùn)動(dòng),同時(shí)由于采用了半透明的貼圖,氣流的流動(dòng)演示不會(huì)阻擋發(fā)動(dòng)機(jī)內(nèi)部結(jié)構(gòu),不妨礙對(duì)發(fā)動(dòng)機(jī)結(jié)構(gòu)的觀察。
3.2 燃燒室火焰特效
如上文所言,Vega Prime雖然自帶了常規(guī)火焰效果,但不足以模擬航空發(fā)動(dòng)機(jī)燃燒室內(nèi)的劇烈燃燒場(chǎng)景。為解決上述問題,本文使用了貼圖切換的方式,首先在Creator中建立兩個(gè)和燃燒室截面相同的面節(jié)點(diǎn),分別貼上兩張大小略有差異的火焰貼圖,并使之處于同一個(gè)Switch節(jié)點(diǎn)之下,確認(rèn)該Switch節(jié)點(diǎn)的狀態(tài)1和狀態(tài)2分別對(duì)應(yīng)其中一張火焰貼圖,便可在MFC中通過調(diào)用setActiveMask()函數(shù)選擇當(dāng)前顯示的火焰貼圖,隨著幀數(shù)刷新不停切換大小兩張貼圖,如此便通過兩張不同大小的靜態(tài)火焰貼圖的高速轉(zhuǎn)換,配合Vega Prime中動(dòng)態(tài)添加的照明效果,可以模擬燃燒室內(nèi)的火焰的閃爍、燃燒效果。
3.3 加力火焰特效
對(duì)于小涵道比渦扇發(fā)動(dòng)機(jī),其低壓渦輪后通常帶有加力燃燒室,當(dāng)加力接通時(shí),高速燃?xì)鈴奈矅姽車姵?,形成加力火焰。為模擬加力火焰的動(dòng)態(tài)效果,本文通過疊加多個(gè)Vega Prime提供的vpFxParticleSystem粒子特效類[5],實(shí)現(xiàn)加力火焰的模擬。通過調(diào)用vpFxParticleSystem類的函數(shù),可設(shè)置一組粒子群,并自定義其流動(dòng)速度、方向、數(shù)量和顏色。建立加力火焰特效的具體方法為:首先對(duì)vpFxParticleSystem類對(duì)象調(diào)用setScale()函數(shù)和setMaxNumParticles()函數(shù),對(duì)粒子群的形狀重新定義,并增加粒子密度,使其具備加力火焰的外型特征。由于同一個(gè)vpFxParticleSystem類的對(duì)象只能設(shè)置一種顏色,為了更真實(shí)地展示加力火焰的紅色外焰和白色內(nèi)焰特征,本文建立了3個(gè)大小不同的pFxParticleSystem類對(duì)象,其中最大和最小的粒子群分別設(shè)為紅色和白色,中間以黃色過渡,形成逼真的動(dòng)態(tài)加力火焰特效。
4 結(jié)束語(yǔ)
本文使用Creator建立了OpenFlight格式的航空發(fā)動(dòng)機(jī)三維模型,通過Vega Prime與MFC的聯(lián)合編程實(shí)現(xiàn)了發(fā)動(dòng)機(jī)工作狀態(tài)的動(dòng)態(tài)視景仿真。并結(jié)合模型特殊節(jié)點(diǎn)設(shè)計(jì)和MFC程序調(diào)用,對(duì)發(fā)動(dòng)機(jī)內(nèi)的氣流特效、燃燒室火焰特效和加力火焰特效提出了新的視景仿真實(shí)現(xiàn)方法。
【參考文獻(xiàn)】
[1]趙琳.航空發(fā)動(dòng)機(jī)教學(xué)實(shí)驗(yàn)視景仿真系統(tǒng)[D].西安:西北工業(yè)大學(xué),2007.
[2]陳慕春,張衛(wèi),李洪棟.基于Creator 的虛擬航空儀表建模技術(shù)[J].航空計(jì)算技術(shù),2011(7):75-77.
[3]胡鋅楠,于勁松.基于MFC編程框架的Vega Prime軟件集成技術(shù)的研究[J]. 系統(tǒng)仿真學(xué)報(bào),2009,21(14):4291-4294.
[4]Vega Prime Programmers Guide. Version 2.2.1.MultGen-Paradigm Inc.2008[Z].
[5]Vega Prime Special Effect Guide. Version 2.2.1.MultGen-Paradigm Inc.2008[Z].
[責(zé)任編輯:楊玉潔]