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





