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