AVS/Express平臺(tái)三維可視化系統(tǒng)的應(yīng)用研究
時(shí)間:2009-02-11 02:13:00
來源:UltraLAB圖形工作站方案網(wǎng)站
人氣:9781
作者:admin
一.概述
開發(fā)氣象模式三維可視化系統(tǒng)的目的就在于要將三維可視化技術(shù)應(yīng)用于氣象模式數(shù)據(jù),實(shí)現(xiàn)氣象模式數(shù)據(jù)的三維可視化顯示,為國家氣象中心乃至氣象領(lǐng)域的氣象預(yù)報(bào)工作者提供一個(gè)直觀的模式數(shù)據(jù)可視化分析環(huán)境,即運(yùn)用圖形、色彩和動(dòng)畫來表示數(shù)值預(yù)報(bào)的結(jié)果(氣象產(chǎn)品數(shù)據(jù))。
基于上述原則,我們選擇AVS/Express作為開發(fā)平臺(tái),結(jié)合國家氣象中心的實(shí)際需求,針對(duì)業(yè)務(wù)和科研的發(fā)展,建立一套滿足氣象工作者要求的實(shí)用系統(tǒng)。目前國家氣象中心的數(shù)值天氣預(yù)報(bào)模式主要有:T106L19,HLAFS和MM5(中尺度數(shù)值預(yù)報(bào))等。其中,MM5模式不僅應(yīng)用于北京地區(qū),還有天津、河北,以及整個(gè)華北地區(qū),尤其在1999年“澳門回歸”特殊氣象保證期間,提供了北京、澳門短期(36小時(shí))數(shù)值預(yù)報(bào)。為此我們確定可視化應(yīng)用系統(tǒng)以運(yùn)行于神威巨型機(jī)上的MM5為研究對(duì)象,針對(duì)MM5模式的數(shù)據(jù)結(jié)構(gòu)和特點(diǎn),采用三維可視化開發(fā)工具AVS/Express,在Windows平臺(tái)上開發(fā)建立“氣象模式數(shù)據(jù)三維可視化系統(tǒng)”,實(shí)現(xiàn)數(shù)據(jù)的三維及二維可視化顯示。
該系統(tǒng)可以將收集來的大量數(shù)據(jù)進(jìn)行有效的處理和圖形顯示,使氣象預(yù)報(bào)工作者能夠明晰數(shù)據(jù)結(jié)構(gòu),并有效地利用這些氣象數(shù)據(jù)。除此之外,還具有對(duì)可視化數(shù)據(jù)進(jìn)行分析的功能,既將數(shù)據(jù)變化的過程用圖形、色彩、動(dòng)畫等方式表現(xiàn)出來,這正是與目前氣象預(yù)報(bào)員使用的“MICAPS圖形圖像系統(tǒng)”最主要的區(qū)別。
基于AVS/Express開發(fā)的應(yīng)用系統(tǒng)的優(yōu)越之處就在于不僅能夠?yàn)闅庀蠊ぷ髡咛峁┯^察數(shù)據(jù)發(fā)生演變過程的手段和數(shù)值分析工具,及時(shí)跟蹤和評(píng)估重要天氣情況;還能夠?yàn)闅庀蠊ぷ髡咛峁┮环N檢驗(yàn)方法,以檢驗(yàn)數(shù)值天氣預(yù)報(bào)的準(zhǔn)確度。
二.“MM5模式三維可視化系統(tǒng)”開發(fā)研究中所采用的技術(shù)
1. 采用面向?qū)ο蟮拈_發(fā)技術(shù):
AVS/Express是一個(gè)面向?qū)ο蟮摹⒖梢暬_發(fā)工具,它的核心就是面向?qū)ο蠹夹g(shù),支持?jǐn)?shù)據(jù)和方法在類中的封裝;支持類的繼承、模板和實(shí)例;支持對(duì)象的分層結(jié)構(gòu)以及類的多態(tài)性等特性。利用它能夠建立可重復(fù)使用的對(duì)象、應(yīng)用程序組件以及數(shù)據(jù)可視化應(yīng)用程序,通過對(duì)象或組件的靈活組合,定制數(shù)據(jù)的三維及二維可視化顯示方式。
在AVS/Express所提供的庫中,從最底層到最高層,所有的應(yīng)用程序組件都采用對(duì)象的方式開發(fā)。
2. 開發(fā)工作采用AVS/Express提供的網(wǎng)絡(luò)編輯器(Network Editor)方式:
AVS/Express的網(wǎng)絡(luò)編輯器是一個(gè)可視化的開發(fā)環(huán)境,通過鼠標(biāo)驅(qū)動(dòng)操作就可實(shí)現(xiàn)連接、定義、裝配和管理對(duì)象等一系列開發(fā)操作,為開發(fā)者提供隨意定制、修改應(yīng)用系統(tǒng)的開發(fā)環(huán)境。
3. 利用AVS/Express提供的大量的預(yù)制功能模塊:
AVS/Express提供的預(yù)制功能模塊能夠?qū)崿F(xiàn)與可視化相關(guān)的大量功能,在這些功能模塊的基礎(chǔ)上,根據(jù)實(shí)際需要進(jìn)行各模塊的擴(kuò)充、連接以及裝配等工作,就可快速建立應(yīng)用系統(tǒng)。
4. 應(yīng)用程序及多媒體產(chǎn)品的分發(fā)技術(shù):
AVS/Express開發(fā)工具中提供關(guān)于應(yīng)用程序以及定制的多媒體產(chǎn)品的分發(fā)功能,實(shí)現(xiàn)應(yīng)用系統(tǒng)在脫離AVS/Express開發(fā)平臺(tái)獨(dú)立運(yùn)行和使用,以及多媒體產(chǎn)品的制作與分發(fā)。
三.開發(fā)中的關(guān)鍵技術(shù)
1. MM5數(shù)據(jù)格式和AVS/Express數(shù)據(jù)格式的轉(zhuǎn)換
AVS/Express的數(shù)據(jù)管理采用被稱為“Field Data”的數(shù)據(jù)結(jié)構(gòu),F(xiàn)ield Data數(shù)據(jù)結(jié)構(gòu)中包括Mesh和Data;其中Mesh是關(guān)于D ata域之間的關(guān)系描述,Mesh由grid組成,grid定義數(shù)據(jù)節(jié)點(diǎn)的位置;而Data是某一節(jié)點(diǎn)位置的矢量或標(biāo)量值。
AVS/Express支持的Mesh格式有四種:
(1)Unstructured Mesh
(2)Structured Mesh
(3)rectilinear Mesh
(4)Uniform Mesh
MM5的數(shù)據(jù)屬于Uniform Mesh格式,它的數(shù)據(jù)節(jié)點(diǎn)分布均勻,節(jié)點(diǎn)間距一致,因此只需給出數(shù)據(jù)點(diǎn)坐標(biāo)的最大值、最小值及維數(shù)即可。 MM5模式運(yùn)算的結(jié)果數(shù)據(jù),是一種無格式數(shù)據(jù),AVS/Express無法識(shí)別這種格式,所以,首先就要根據(jù)AVS/Express對(duì)數(shù)據(jù)格式的需要對(duì)MM5模式的運(yùn)算結(jié)果進(jìn)行提取和轉(zhuǎn)換,提取出所需的氣象要素?cái)?shù)據(jù),并且按照經(jīng)緯度和Segma層的順序依次輸出,轉(zhuǎn)換成AVS/Express可識(shí)別的有格式數(shù)據(jù),然后,再在此基礎(chǔ)上編寫數(shù)據(jù)壓縮程序?qū)?shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)格式進(jìn)行存儲(chǔ),減小數(shù)據(jù)文件的大小。 #p#page_title#e#
2.AVS/Express的.fld文件的建立
除了要將數(shù)據(jù)轉(zhuǎn)換為AVS/Express可識(shí)別的格式,還要定義AVS/Express需要的.fld文件,在.fld文件中定義數(shù)據(jù)的維數(shù)、格式、層數(shù)、數(shù)據(jù)類型以及偏移量等信息。
AVS/Express根據(jù).fld文件中定義的信息從數(shù)據(jù)文件中逐層提取數(shù)據(jù)。
3.AVS/Express開發(fā)技術(shù)分析
使用AVS/Express開發(fā)應(yīng)用有三種方法:
(1)網(wǎng)絡(luò)編輯器(Network Editor)的流程圖方式;
(2)VCP和V腳本語言開發(fā)方式;
(3)API編程方式。
在本專題開發(fā)中,我們使用網(wǎng)絡(luò)編輯器的流程圖方式。它使我們能利用AVS/Express提供的功能模塊,以類似“搭積木”的方式進(jìn)行應(yīng)用程序開發(fā)。
網(wǎng)絡(luò)編輯器(Network Editor)的主界面包括菜單、模板庫和用戶編程庫。 模板庫主要包括數(shù)百個(gè)預(yù)制的功能模塊,這些模塊可在網(wǎng)絡(luò)編輯器中非常方便的使用。AVS/Express中共提供以下幾個(gè)軟件包:
① 圖形顯示軟件包(GDK);
② 數(shù)據(jù)可視化軟件包(DVK);
③ 圖象處理軟件包(AGK);
④ 數(shù)據(jù)庫軟件包(DBK);
⑤ 用戶接口軟件包(UIK)。
網(wǎng)絡(luò)編輯器是AVS/Express軟件和用戶之間的主要接口。我們?cè)诰W(wǎng)絡(luò)編輯器中利用軟件包中提供的技術(shù),選取我們需要的模塊連接、裝配對(duì)象和應(yīng)用程序組件控制數(shù)據(jù),并對(duì)它們進(jìn)行處理和顯示。
(1) UI:產(chǎn)生系統(tǒng)的主界面,(2) 包括窗口、標(biāo)(3) 題條、下拉菜單等等;為用戶使用該系統(tǒng)提供一個(gè)接口,(4) 用戶可以選擇數(shù)據(jù)文件、控制面板和退出應(yīng)用程序,(5) 以及3D、2D顯示的放大、縮小、旋轉(zhuǎn)等
(7) Process_UI:分別建立地形、溫度、雨量、云量和風(fēng)場(chǎng)的顯示界面;包括對(duì)話框、標(biāo)(8) 題、顯示內(nèi)容信息和顯示界面范圍等。
(9) ControlParam:是group對(duì)象,(10) 主要用來與其它模塊建立參數(shù)之間的聯(lián)系。
(11) OptParam:也是group對(duì)象,(12) 主要負(fù)責(zé)進(jìn)行參數(shù)傳遞。
(13) Process_Display:包含ground_display(地形)、temp_display(溫度)、rain_display(雨量)、cloud_display(云量)、wind_display(風(fēng)場(chǎng))、bound_display(坐標(biāo)(14) )和time_loop(時(shí)間)對(duì)象,(15) 通過處理地形、溫度、雨量、云量、風(fēng)場(chǎng)數(shù)據(jù)進(jìn)行3D或2D的顯示;用time_loop完成對(duì)溫度、雨量、云量、風(fēng)場(chǎng)的隨時(shí)間場(chǎng)變化而(16) 產(chǎn)生連續(xù)運(yùn)動(dòng);在bound_display中采用Dvscale、Axis3D等模塊完成三維網(wǎng)格坐標(biāo)(17) 的范圍顯示和數(shù)值顯示等。
(18) Viewer:定義可視化應(yīng)用程序顯示部分的各種要素,(19) 由一個(gè)缺省的圖形窗口和一組用戶編輯界面組成,(20) 用戶可以控制對(duì)象的顯示。
在UI、Process_UI、Process_Display和Viewer對(duì)象中有多級(jí)對(duì)象層次,有些對(duì)象是其它對(duì)象的組合,而這些對(duì)象中的許多本身也是對(duì)象的組合,也就有了父對(duì)象或子對(duì)象的概念。如Process_UI對(duì)象由groundopt、rainopt、tempopt、cloudopt、cloudopt 5個(gè)子對(duì)象組成,而在groundopt中又包含了field、option和image等子對(duì)象。通過對(duì)對(duì)象的輸入端口和輸出端口的連接,數(shù)據(jù)引用、封裝、繼承及參數(shù)設(shè)置,完成該應(yīng)用系統(tǒng)內(nèi)部的數(shù)據(jù)流動(dòng),執(zhí)行順序和功能實(shí)現(xiàn)。對(duì)象之間的連接線表明一個(gè)對(duì)象可以引用另一個(gè)對(duì)象,這種連接不僅定義了一個(gè)對(duì)象怎樣獲取它的數(shù)據(jù),而且也驅(qū)動(dòng)應(yīng)用程序的執(zhí)行。當(dāng)數(shù)據(jù)變化時(shí),所有引用這個(gè)數(shù)據(jù)的對(duì)象也被告知這種變化,并導(dǎo)致對(duì)象的執(zhí)行。
當(dāng)用戶通過系統(tǒng)界面讀入新的數(shù)據(jù)文件和需求后,Process_Display根據(jù)它接收的最新數(shù)據(jù)執(zhí)行相應(yīng)的操作。
4.開發(fā)實(shí)例說明
(1)云量數(shù)據(jù)可視化化過程
云量數(shù)據(jù)的可視化方式包括等值面顯示和體視化顯示兩種方式。
兩種方式均由isosurface模塊來實(shí)現(xiàn),不同之處在于體視化要使用volume render模塊進(jìn)行邊緣的虛化,下面重點(diǎn)進(jìn)行介紹。
體視化只能處理數(shù)據(jù)為均勻網(wǎng)格,數(shù)據(jù)類型為字節(jié)型(byte)或短整型(short int)。首先要將云量的數(shù)據(jù)類型由浮點(diǎn)型(float)轉(zhuǎn)換成字節(jié)型,定義比例因子。云量體視化開發(fā)中使用的主要模塊說明如下: #p#page_title#e#
data_math模塊用于進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,與Dvreadfield相連,data_math模塊根據(jù)讀入的云量數(shù)據(jù)計(jì)算讀入數(shù)據(jù)最小值(min)和讀入數(shù)據(jù)最大值(max);按照計(jì)算公式255/(max-min)計(jì)算比例因子(scale),再按照計(jì)算出的比例因子將讀入的云量數(shù)據(jù)類型轉(zhuǎn)換為字節(jié)型,進(jìn)行云量體視化顯示。
volume_render模塊可以直接展示三維體數(shù)據(jù),可以使用BTF(硬件方式)或者光線跟蹤(軟件方式)的體視化模式。當(dāng)體視化的方式被激活,它可以支持體積和幾何學(xué)的混合顯示。這個(gè)模塊通過它相對(duì)應(yīng)的面板,提供一個(gè)非常便于使用的操作界面。該控制面板包含圖形顯示工具箱界面,體模式和數(shù)據(jù)圖的算法成分。這些控制是體視化模塊中最普通的使用特征,通過它們可以輕松的對(duì)該模塊進(jìn)行控制。本課題采用BTF方式,精度差一些,但是顯示速度比使用軟件方式快。
我們使用volume_render模塊來將轉(zhuǎn)換后的體數(shù)據(jù)進(jìn)行體視化顯示。體視化模塊用三維紋理映射合成體數(shù)據(jù)中的斷層面,以便幾何顯示器進(jìn)行顯示,下圖為體視化顯示。
幾何顯示器模塊(Uviewer3D模塊)定義了一個(gè)圖形應(yīng)用顯示組件的所有必要成分。它是一個(gè)高級(jí)的應(yīng)用程序?qū)ο?,其中包含了許多其他較低級(jí)別的對(duì)象。
幾何顯示器模塊含有一個(gè)默認(rèn)的圖形窗口和用戶界面編輯器。通過它使用者能夠控制相關(guān)對(duì)象的顯示。一個(gè)圖形的處理僅僅對(duì)應(yīng)一個(gè)單一的幾何顯示器模塊。但是我們可以使用顯示編輯面板來增加額外的圖形窗口,從而通過多個(gè)顯示圖形窗口來觀察被顯示的對(duì)象。幾何顯示器模塊包含“屏幕”(Scene),“屏幕選擇器”(Scene Selector),“屏幕編輯器”(Scene Editor)。
“屏幕”定義一個(gè)最高層次的數(shù)據(jù)對(duì)象(Top),其下可以包含許多子對(duì)象。Top對(duì)象屬性的任何改動(dòng)都可能傳遞給其下面的子對(duì)象,從而可對(duì)整個(gè)對(duì)象層次進(jìn)行統(tǒng)一處理。
在“屏幕選擇器”中,我們可以選擇當(dāng)前屏幕并把該屏幕的顯示圖像進(jìn)行編輯處理。“屏幕編輯器”定義了一些相關(guān)工具欄,允許用鼠標(biāo)對(duì)顯示圖像進(jìn)行交互處理,例如重新設(shè)置圖像的屬性,使圖像規(guī)一化等等。
“屏幕編輯器”提供了一整套編輯面板,比如光線編輯、照相機(jī)編輯、顏色映射編輯等等,實(shí)現(xiàn)對(duì)顯示圖像的后期處理,以達(dá)到滿意的效果。
(2)風(fēng)場(chǎng)數(shù)據(jù)可視化過程
風(fēng)場(chǎng)數(shù)據(jù)包括經(jīng)向(U)和緯向(V)兩個(gè)方向的數(shù)據(jù),首先,要對(duì)兩個(gè)方向的數(shù)據(jù)進(jìn)行矢量合成,合成由Combine vect模塊完成,再按照合成后的數(shù)據(jù)繪制風(fēng)的流場(chǎng)圖。
風(fēng)場(chǎng)顯示設(shè)置用戶界面,通過“瀏覽”按鈕選擇要輸入的風(fēng)場(chǎng)數(shù)據(jù)文件。
顯示剖面的方向有三個(gè)選擇:0-X軸方向剖面;1-Y軸方向剖面;2-Z軸方向剖面;X/Y方向分辨率:分別定義風(fēng)場(chǎng)流場(chǎng)線的疏密程度,windopt.downsize:實(shí)現(xiàn)X/Y方向分辨率的改變。
風(fēng)場(chǎng)數(shù)據(jù)的流場(chǎng)顯示由Parical Advector模塊實(shí)現(xiàn)的,Parical Advector模塊中的Advector模塊包括AdvectUI、Advect、UIshell等模塊,Uishell將用戶的輸入傳遞給AdvectUI中的相應(yīng)參數(shù),再由AdvectParam傳遞到Advect模塊進(jìn)行風(fēng)場(chǎng)數(shù)據(jù)的流場(chǎng)顯示。
(3)多媒體產(chǎn)品的定制和分發(fā)
我們使用動(dòng)畫生成器模塊(animator模塊)和圖象捕捉模塊(image capture模塊)生成多媒體產(chǎn)品。動(dòng)畫生成器模塊的主要功能是利用對(duì)象屬性的關(guān)鍵幀進(jìn)行差值,產(chǎn)生動(dòng)畫。并且可以將差值產(chǎn)生的動(dòng)畫在幾何顯示器模塊中進(jìn)行回放。圖象捕捉模塊的功能是抓取正在回放動(dòng)畫的圖片,并將抓取的動(dòng)畫生成AVI圖象文件并進(jìn)行存盤。這樣,我們就可以利用其它多媒體播放軟件播放該文件,再現(xiàn)動(dòng)畫的過程。
開發(fā)氣象模式三維可視化系統(tǒng)的目的就在于要將三維可視化技術(shù)應(yīng)用于氣象模式數(shù)據(jù),實(shí)現(xiàn)氣象模式數(shù)據(jù)的三維可視化顯示,為國家氣象中心乃至氣象領(lǐng)域的氣象預(yù)報(bào)工作者提供一個(gè)直觀的模式數(shù)據(jù)可視化分析環(huán)境,即運(yùn)用圖形、色彩和動(dòng)畫來表示數(shù)值預(yù)報(bào)的結(jié)果(氣象產(chǎn)品數(shù)據(jù))。
基于上述原則,我們選擇AVS/Express作為開發(fā)平臺(tái),結(jié)合國家氣象中心的實(shí)際需求,針對(duì)業(yè)務(wù)和科研的發(fā)展,建立一套滿足氣象工作者要求的實(shí)用系統(tǒng)。目前國家氣象中心的數(shù)值天氣預(yù)報(bào)模式主要有:T106L19,HLAFS和MM5(中尺度數(shù)值預(yù)報(bào))等。其中,MM5模式不僅應(yīng)用于北京地區(qū),還有天津、河北,以及整個(gè)華北地區(qū),尤其在1999年“澳門回歸”特殊氣象保證期間,提供了北京、澳門短期(36小時(shí))數(shù)值預(yù)報(bào)。為此我們確定可視化應(yīng)用系統(tǒng)以運(yùn)行于神威巨型機(jī)上的MM5為研究對(duì)象,針對(duì)MM5模式的數(shù)據(jù)結(jié)構(gòu)和特點(diǎn),采用三維可視化開發(fā)工具AVS/Express,在Windows平臺(tái)上開發(fā)建立“氣象模式數(shù)據(jù)三維可視化系統(tǒng)”,實(shí)現(xiàn)數(shù)據(jù)的三維及二維可視化顯示。
該系統(tǒng)可以將收集來的大量數(shù)據(jù)進(jìn)行有效的處理和圖形顯示,使氣象預(yù)報(bào)工作者能夠明晰數(shù)據(jù)結(jié)構(gòu),并有效地利用這些氣象數(shù)據(jù)。除此之外,還具有對(duì)可視化數(shù)據(jù)進(jìn)行分析的功能,既將數(shù)據(jù)變化的過程用圖形、色彩、動(dòng)畫等方式表現(xiàn)出來,這正是與目前氣象預(yù)報(bào)員使用的“MICAPS圖形圖像系統(tǒng)”最主要的區(qū)別。
基于AVS/Express開發(fā)的應(yīng)用系統(tǒng)的優(yōu)越之處就在于不僅能夠?yàn)闅庀蠊ぷ髡咛峁┯^察數(shù)據(jù)發(fā)生演變過程的手段和數(shù)值分析工具,及時(shí)跟蹤和評(píng)估重要天氣情況;還能夠?yàn)闅庀蠊ぷ髡咛峁┮环N檢驗(yàn)方法,以檢驗(yàn)數(shù)值天氣預(yù)報(bào)的準(zhǔn)確度。
二.“MM5模式三維可視化系統(tǒng)”開發(fā)研究中所采用的技術(shù)
1. 采用面向?qū)ο蟮拈_發(fā)技術(shù):
AVS/Express是一個(gè)面向?qū)ο蟮摹⒖梢暬_發(fā)工具,它的核心就是面向?qū)ο蠹夹g(shù),支持?jǐn)?shù)據(jù)和方法在類中的封裝;支持類的繼承、模板和實(shí)例;支持對(duì)象的分層結(jié)構(gòu)以及類的多態(tài)性等特性。利用它能夠建立可重復(fù)使用的對(duì)象、應(yīng)用程序組件以及數(shù)據(jù)可視化應(yīng)用程序,通過對(duì)象或組件的靈活組合,定制數(shù)據(jù)的三維及二維可視化顯示方式。
在AVS/Express所提供的庫中,從最底層到最高層,所有的應(yīng)用程序組件都采用對(duì)象的方式開發(fā)。
2. 開發(fā)工作采用AVS/Express提供的網(wǎng)絡(luò)編輯器(Network Editor)方式:
AVS/Express的網(wǎng)絡(luò)編輯器是一個(gè)可視化的開發(fā)環(huán)境,通過鼠標(biāo)驅(qū)動(dòng)操作就可實(shí)現(xiàn)連接、定義、裝配和管理對(duì)象等一系列開發(fā)操作,為開發(fā)者提供隨意定制、修改應(yīng)用系統(tǒng)的開發(fā)環(huán)境。
3. 利用AVS/Express提供的大量的預(yù)制功能模塊:
AVS/Express提供的預(yù)制功能模塊能夠?qū)崿F(xiàn)與可視化相關(guān)的大量功能,在這些功能模塊的基礎(chǔ)上,根據(jù)實(shí)際需要進(jìn)行各模塊的擴(kuò)充、連接以及裝配等工作,就可快速建立應(yīng)用系統(tǒng)。
4. 應(yīng)用程序及多媒體產(chǎn)品的分發(fā)技術(shù):
AVS/Express開發(fā)工具中提供關(guān)于應(yīng)用程序以及定制的多媒體產(chǎn)品的分發(fā)功能,實(shí)現(xiàn)應(yīng)用系統(tǒng)在脫離AVS/Express開發(fā)平臺(tái)獨(dú)立運(yùn)行和使用,以及多媒體產(chǎn)品的制作與分發(fā)。
三.開發(fā)中的關(guān)鍵技術(shù)
1. MM5數(shù)據(jù)格式和AVS/Express數(shù)據(jù)格式的轉(zhuǎn)換
AVS/Express的數(shù)據(jù)管理采用被稱為“Field Data”的數(shù)據(jù)結(jié)構(gòu),F(xiàn)ield Data數(shù)據(jù)結(jié)構(gòu)中包括Mesh和Data;其中Mesh是關(guān)于D ata域之間的關(guān)系描述,Mesh由grid組成,grid定義數(shù)據(jù)節(jié)點(diǎn)的位置;而Data是某一節(jié)點(diǎn)位置的矢量或標(biāo)量值。
AVS/Express支持的Mesh格式有四種:
(1)Unstructured Mesh
(2)Structured Mesh
(3)rectilinear Mesh
(4)Uniform Mesh
MM5的數(shù)據(jù)屬于Uniform Mesh格式,它的數(shù)據(jù)節(jié)點(diǎn)分布均勻,節(jié)點(diǎn)間距一致,因此只需給出數(shù)據(jù)點(diǎn)坐標(biāo)的最大值、最小值及維數(shù)即可。 MM5模式運(yùn)算的結(jié)果數(shù)據(jù),是一種無格式數(shù)據(jù),AVS/Express無法識(shí)別這種格式,所以,首先就要根據(jù)AVS/Express對(duì)數(shù)據(jù)格式的需要對(duì)MM5模式的運(yùn)算結(jié)果進(jìn)行提取和轉(zhuǎn)換,提取出所需的氣象要素?cái)?shù)據(jù),并且按照經(jīng)緯度和Segma層的順序依次輸出,轉(zhuǎn)換成AVS/Express可識(shí)別的有格式數(shù)據(jù),然后,再在此基礎(chǔ)上編寫數(shù)據(jù)壓縮程序?qū)?shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)格式進(jìn)行存儲(chǔ),減小數(shù)據(jù)文件的大小。 #p#page_title#e#
2.AVS/Express的.fld文件的建立
除了要將數(shù)據(jù)轉(zhuǎn)換為AVS/Express可識(shí)別的格式,還要定義AVS/Express需要的.fld文件,在.fld文件中定義數(shù)據(jù)的維數(shù)、格式、層數(shù)、數(shù)據(jù)類型以及偏移量等信息。
AVS/Express根據(jù).fld文件中定義的信息從數(shù)據(jù)文件中逐層提取數(shù)據(jù)。
3.AVS/Express開發(fā)技術(shù)分析
使用AVS/Express開發(fā)應(yīng)用有三種方法:
(1)網(wǎng)絡(luò)編輯器(Network Editor)的流程圖方式;
(2)VCP和V腳本語言開發(fā)方式;
(3)API編程方式。
在本專題開發(fā)中,我們使用網(wǎng)絡(luò)編輯器的流程圖方式。它使我們能利用AVS/Express提供的功能模塊,以類似“搭積木”的方式進(jìn)行應(yīng)用程序開發(fā)。
網(wǎng)絡(luò)編輯器(Network Editor)的主界面包括菜單、模板庫和用戶編程庫。 模板庫主要包括數(shù)百個(gè)預(yù)制的功能模塊,這些模塊可在網(wǎng)絡(luò)編輯器中非常方便的使用。AVS/Express中共提供以下幾個(gè)軟件包:
① 圖形顯示軟件包(GDK);
② 數(shù)據(jù)可視化軟件包(DVK);
③ 圖象處理軟件包(AGK);
④ 數(shù)據(jù)庫軟件包(DBK);
⑤ 用戶接口軟件包(UIK)。
網(wǎng)絡(luò)編輯器是AVS/Express軟件和用戶之間的主要接口。我們?cè)诰W(wǎng)絡(luò)編輯器中利用軟件包中提供的技術(shù),選取我們需要的模塊連接、裝配對(duì)象和應(yīng)用程序組件控制數(shù)據(jù),并對(duì)它們進(jìn)行處理和顯示。
(1) UI:產(chǎn)生系統(tǒng)的主界面,(2) 包括窗口、標(biāo)(3) 題條、下拉菜單等等;為用戶使用該系統(tǒng)提供一個(gè)接口,(4) 用戶可以選擇數(shù)據(jù)文件、控制面板和退出應(yīng)用程序,(5) 以及3D、2D顯示的放大、縮小、旋轉(zhuǎn)等
(7) Process_UI:分別建立地形、溫度、雨量、云量和風(fēng)場(chǎng)的顯示界面;包括對(duì)話框、標(biāo)(8) 題、顯示內(nèi)容信息和顯示界面范圍等。
(9) ControlParam:是group對(duì)象,(10) 主要用來與其它模塊建立參數(shù)之間的聯(lián)系。
(11) OptParam:也是group對(duì)象,(12) 主要負(fù)責(zé)進(jìn)行參數(shù)傳遞。
(13) Process_Display:包含ground_display(地形)、temp_display(溫度)、rain_display(雨量)、cloud_display(云量)、wind_display(風(fēng)場(chǎng))、bound_display(坐標(biāo)(14) )和time_loop(時(shí)間)對(duì)象,(15) 通過處理地形、溫度、雨量、云量、風(fēng)場(chǎng)數(shù)據(jù)進(jìn)行3D或2D的顯示;用time_loop完成對(duì)溫度、雨量、云量、風(fēng)場(chǎng)的隨時(shí)間場(chǎng)變化而(16) 產(chǎn)生連續(xù)運(yùn)動(dòng);在bound_display中采用Dvscale、Axis3D等模塊完成三維網(wǎng)格坐標(biāo)(17) 的范圍顯示和數(shù)值顯示等。
(18) Viewer:定義可視化應(yīng)用程序顯示部分的各種要素,(19) 由一個(gè)缺省的圖形窗口和一組用戶編輯界面組成,(20) 用戶可以控制對(duì)象的顯示。
在UI、Process_UI、Process_Display和Viewer對(duì)象中有多級(jí)對(duì)象層次,有些對(duì)象是其它對(duì)象的組合,而這些對(duì)象中的許多本身也是對(duì)象的組合,也就有了父對(duì)象或子對(duì)象的概念。如Process_UI對(duì)象由groundopt、rainopt、tempopt、cloudopt、cloudopt 5個(gè)子對(duì)象組成,而在groundopt中又包含了field、option和image等子對(duì)象。通過對(duì)對(duì)象的輸入端口和輸出端口的連接,數(shù)據(jù)引用、封裝、繼承及參數(shù)設(shè)置,完成該應(yīng)用系統(tǒng)內(nèi)部的數(shù)據(jù)流動(dòng),執(zhí)行順序和功能實(shí)現(xiàn)。對(duì)象之間的連接線表明一個(gè)對(duì)象可以引用另一個(gè)對(duì)象,這種連接不僅定義了一個(gè)對(duì)象怎樣獲取它的數(shù)據(jù),而且也驅(qū)動(dòng)應(yīng)用程序的執(zhí)行。當(dāng)數(shù)據(jù)變化時(shí),所有引用這個(gè)數(shù)據(jù)的對(duì)象也被告知這種變化,并導(dǎo)致對(duì)象的執(zhí)行。
當(dāng)用戶通過系統(tǒng)界面讀入新的數(shù)據(jù)文件和需求后,Process_Display根據(jù)它接收的最新數(shù)據(jù)執(zhí)行相應(yīng)的操作。
4.開發(fā)實(shí)例說明
(1)云量數(shù)據(jù)可視化化過程
云量數(shù)據(jù)的可視化方式包括等值面顯示和體視化顯示兩種方式。
兩種方式均由isosurface模塊來實(shí)現(xiàn),不同之處在于體視化要使用volume render模塊進(jìn)行邊緣的虛化,下面重點(diǎn)進(jìn)行介紹。
體視化只能處理數(shù)據(jù)為均勻網(wǎng)格,數(shù)據(jù)類型為字節(jié)型(byte)或短整型(short int)。首先要將云量的數(shù)據(jù)類型由浮點(diǎn)型(float)轉(zhuǎn)換成字節(jié)型,定義比例因子。云量體視化開發(fā)中使用的主要模塊說明如下: #p#page_title#e#
data_math模塊用于進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,與Dvreadfield相連,data_math模塊根據(jù)讀入的云量數(shù)據(jù)計(jì)算讀入數(shù)據(jù)最小值(min)和讀入數(shù)據(jù)最大值(max);按照計(jì)算公式255/(max-min)計(jì)算比例因子(scale),再按照計(jì)算出的比例因子將讀入的云量數(shù)據(jù)類型轉(zhuǎn)換為字節(jié)型,進(jìn)行云量體視化顯示。
volume_render模塊可以直接展示三維體數(shù)據(jù),可以使用BTF(硬件方式)或者光線跟蹤(軟件方式)的體視化模式。當(dāng)體視化的方式被激活,它可以支持體積和幾何學(xué)的混合顯示。這個(gè)模塊通過它相對(duì)應(yīng)的面板,提供一個(gè)非常便于使用的操作界面。該控制面板包含圖形顯示工具箱界面,體模式和數(shù)據(jù)圖的算法成分。這些控制是體視化模塊中最普通的使用特征,通過它們可以輕松的對(duì)該模塊進(jìn)行控制。本課題采用BTF方式,精度差一些,但是顯示速度比使用軟件方式快。
我們使用volume_render模塊來將轉(zhuǎn)換后的體數(shù)據(jù)進(jìn)行體視化顯示。體視化模塊用三維紋理映射合成體數(shù)據(jù)中的斷層面,以便幾何顯示器進(jìn)行顯示,下圖為體視化顯示。
幾何顯示器模塊(Uviewer3D模塊)定義了一個(gè)圖形應(yīng)用顯示組件的所有必要成分。它是一個(gè)高級(jí)的應(yīng)用程序?qū)ο?,其中包含了許多其他較低級(jí)別的對(duì)象。
幾何顯示器模塊含有一個(gè)默認(rèn)的圖形窗口和用戶界面編輯器。通過它使用者能夠控制相關(guān)對(duì)象的顯示。一個(gè)圖形的處理僅僅對(duì)應(yīng)一個(gè)單一的幾何顯示器模塊。但是我們可以使用顯示編輯面板來增加額外的圖形窗口,從而通過多個(gè)顯示圖形窗口來觀察被顯示的對(duì)象。幾何顯示器模塊包含“屏幕”(Scene),“屏幕選擇器”(Scene Selector),“屏幕編輯器”(Scene Editor)。
“屏幕”定義一個(gè)最高層次的數(shù)據(jù)對(duì)象(Top),其下可以包含許多子對(duì)象。Top對(duì)象屬性的任何改動(dòng)都可能傳遞給其下面的子對(duì)象,從而可對(duì)整個(gè)對(duì)象層次進(jìn)行統(tǒng)一處理。
在“屏幕選擇器”中,我們可以選擇當(dāng)前屏幕并把該屏幕的顯示圖像進(jìn)行編輯處理。“屏幕編輯器”定義了一些相關(guān)工具欄,允許用鼠標(biāo)對(duì)顯示圖像進(jìn)行交互處理,例如重新設(shè)置圖像的屬性,使圖像規(guī)一化等等。
“屏幕編輯器”提供了一整套編輯面板,比如光線編輯、照相機(jī)編輯、顏色映射編輯等等,實(shí)現(xiàn)對(duì)顯示圖像的后期處理,以達(dá)到滿意的效果。
(2)風(fēng)場(chǎng)數(shù)據(jù)可視化過程
風(fēng)場(chǎng)數(shù)據(jù)包括經(jīng)向(U)和緯向(V)兩個(gè)方向的數(shù)據(jù),首先,要對(duì)兩個(gè)方向的數(shù)據(jù)進(jìn)行矢量合成,合成由Combine vect模塊完成,再按照合成后的數(shù)據(jù)繪制風(fēng)的流場(chǎng)圖。
風(fēng)場(chǎng)顯示設(shè)置用戶界面,通過“瀏覽”按鈕選擇要輸入的風(fēng)場(chǎng)數(shù)據(jù)文件。
顯示剖面的方向有三個(gè)選擇:0-X軸方向剖面;1-Y軸方向剖面;2-Z軸方向剖面;X/Y方向分辨率:分別定義風(fēng)場(chǎng)流場(chǎng)線的疏密程度,windopt.downsize:實(shí)現(xiàn)X/Y方向分辨率的改變。
風(fēng)場(chǎng)數(shù)據(jù)的流場(chǎng)顯示由Parical Advector模塊實(shí)現(xiàn)的,Parical Advector模塊中的Advector模塊包括AdvectUI、Advect、UIshell等模塊,Uishell將用戶的輸入傳遞給AdvectUI中的相應(yīng)參數(shù),再由AdvectParam傳遞到Advect模塊進(jìn)行風(fēng)場(chǎng)數(shù)據(jù)的流場(chǎng)顯示。
(3)多媒體產(chǎn)品的定制和分發(fā)
我們使用動(dòng)畫生成器模塊(animator模塊)和圖象捕捉模塊(image capture模塊)生成多媒體產(chǎn)品。動(dòng)畫生成器模塊的主要功能是利用對(duì)象屬性的關(guān)鍵幀進(jìn)行差值,產(chǎn)生動(dòng)畫。并且可以將差值產(chǎn)生的動(dòng)畫在幾何顯示器模塊中進(jìn)行回放。圖象捕捉模塊的功能是抓取正在回放動(dòng)畫的圖片,并將抓取的動(dòng)畫生成AVI圖象文件并進(jìn)行存盤。這樣,我們就可以利用其它多媒體播放軟件播放該文件,再現(xiàn)動(dòng)畫的過程。