風(fēng)洞模型表面壓力分布三維顯示技術(shù)
摘要:風(fēng)洞模型表面壓力分布三維圖形顯示系統(tǒng)采用Visual STudio 軟件開發(fā),通過讀取X 格式的模型文件,設(shè)置模型表面壓力孔分布點位置,導(dǎo)入試驗中測量壓力的原始數(shù)據(jù),對數(shù)據(jù)范圍進行顏色設(shè)置,并對模型表面壓力進行圖形繪制著色處理。該系統(tǒng)能夠較好地展示出模型表面壓力數(shù)據(jù)分布,使用人員能夠直觀觀察出模型表面壓力的大小。
關(guān)鍵詞:壓力分布;三維顯示;顏色渲染
0 引言
在風(fēng)洞試驗的測壓試驗中,測試人員在試驗吹風(fēng)后可得到模型表面原始壓力值數(shù)據(jù),通過計算得二維曲線圖像。由于不能直觀觀察出模型表面的壓力,只能對模型構(gòu)造進行大體的判斷。為了使型號單位參試人員在得到測壓數(shù)據(jù)的同時又能進行直觀觀察,對模型表面壓力分布三維圖形顯示進行研究。
1 應(yīng)用程序接口DirectXDirectX
由很多API 組成,按照性質(zhì)分類,可以分為顯示、聲音、輸入和網(wǎng)絡(luò)4 部分。顯示部分擔(dān)任圖形處理的關(guān)鍵,分為DirectDraw(DDraw)和Direct3D(D3D),前者主要負責(zé)2D 圖像加速,后者則主要負責(zé)3D 效果的顯示。根據(jù)實際情況,主要使用Direct3D(D3D)技術(shù)。Direct 3D 是基于微軟的通用對象模式(CommON Object Mode,COM)的3D 圖形API,是由微軟樹立的3D API 規(guī)范,其所有的語法定義包含在程序開發(fā)組件的源代碼中。
2 實現(xiàn)過程
使用Visual Studio 軟件創(chuàng)建模型顯示窗口(如圖1)、壓力數(shù)據(jù)顯示窗口和顯示設(shè)置窗口(如圖2),并添加按鈕。主界面按鈕包括“打開”、“保存”、“復(fù)位”、“平移”、“自旋”、“顯示設(shè)置”、“刪除”和“導(dǎo)入數(shù)據(jù)”等。顯示設(shè)置界面按鈕包括“法線”、“顏色孔半徑”、“顏色溶解”、“顏色對照表”等。每個窗口和按鈕都添加對應(yīng)的執(zhí)行代碼和關(guān)聯(lián)代碼。
通過初始化Direct3D 創(chuàng)建模型顯示窗口。包括4 個步驟:
1) 獲得一個IDirect3D9 接口指針。該接口用于獲得物理設(shè)備的信息和創(chuàng)建一個IDirect3D 接口,是一個代表顯示3D 圖形的物理設(shè)備的C++對象。
2) 檢查設(shè)備的技術(shù)特性(D3DCAPS9),主顯卡是否支持硬件頂點處理。如能支持,就能創(chuàng)建IDirect3DDevice9 接口。
3) 初始化一個D3DPRESENT_PARAMEteRS結(jié)構(gòu)實例,該結(jié)構(gòu)包含了許多數(shù)據(jù)成員允許指定將要創(chuàng)建的IDirect3DDevice9 接口的特性。
4) 創(chuàng)建一個基于已初始化好的D3dpresentparameters 結(jié)構(gòu)的IDirect3DDevice9 對象。它是一個代表顯示3D 圖形的物理設(shè)備的C++對象。
模型顯示窗口和設(shè)置窗口分別如圖1、圖2。
在模型上選取壓力孔,并給出分組號與編號。
導(dǎo)入壓力數(shù)據(jù)文件,模型顯示窗口旁壓力數(shù)據(jù)會按照組、編號、壓力值顯示,如圖3。在顯示設(shè)置里給出數(shù)值范圍的顏色、法線,以及顏色孔半徑范圍。
模型的顏色要經(jīng)過顏色表現(xiàn)確認、頂點緩沖區(qū)填充和著色模式的選擇3 個步驟渲染。在Direct3D中顏色使用RGB 表示,需要指定紅、綠、藍三原色的值,這3 個分量的混合顏色就是最終顏色。使用D3DCOLOR 類型結(jié)構(gòu)表示RGB 數(shù)據(jù)。該類型被分成4 個8-bit 的部分,分別用于存儲顏色的分量。
每種顏色分量都使用1 個字節(jié)表示,所以每種顏色分量的亮度范圍為0~255。正確地填寫D3DCOLOR結(jié)構(gòu)中的各個分量需要進行位操作。D3D 提供了一個宏D3DCOLOR_ARGB,每個分量需要在0~255。
D3Dcolor brightRed = D3DCOLOR_ARGB(255, 255, 0, 0);D3Dcolorsome Color = D3DCOLOR_ARGB(255, 144, 87,201);幾何體的顏色由其頂點的顏色決定,必須向頂點數(shù)據(jù)結(jié)構(gòu)中添加顏色成員。因為Direct3D 使用32-bit 的整型數(shù)表示顏色。另外,當(dāng)使用頂點著色器(Vertex Shader)時,將會使用四元向量描述頂點顏色,這是一個128-bit 的顏色。
在光柵化和通過頂點顏色計算像素顏色時將著色。在平滑模式下,頂點的顏色以線形插值方式渲染表面。在Direct3D 中可使用如下設(shè)置著色模式:
Device->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT);Device->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD);通過讀取X 格式的模型文件,設(shè)置模型表面壓力孔分布點位置,導(dǎo)入測壓原始數(shù)據(jù),對數(shù)據(jù)范圍進行顏色設(shè)置,能觀察模型表面的壓力大小。基于顏色渲染的壓力分步顯示如圖4、圖5。圖中的綠色表示0~0.09 的數(shù)值,黃色表示0.09~0.11 的數(shù)值,藍色表示0.11~0.15 的數(shù)值,紅色表示0.15~0.24的數(shù)值,棕色表示0.24~0.99 的數(shù)值。壓力孔之間的顏色溶解可以選擇是否顯示。垂直模型表面的紅色長線為壓力值的法線。壓力值越大,法線越長。
3 結(jié)束語
試驗證明,該系統(tǒng)能夠較好地直觀展示出模型表面壓力數(shù)值分布,使用人員能直觀地觀察出模型表面壓力大小。該系統(tǒng)提高了分析數(shù)據(jù)的效率,為進一步分析數(shù)據(jù)提供了方向。