陳亞霖
(河南工業(yè)大學(xué) 網(wǎng)絡(luò)教育管理中心,河南 鄭州 450001)
糧情監(jiān)控系統(tǒng)是利用現(xiàn)代電子和計(jì)算機(jī)技術(shù),在糧食儲(chǔ)藏過(guò)程中實(shí)現(xiàn)對(duì)糧情的實(shí)時(shí)檢測(cè),將檢測(cè)數(shù)據(jù)保存到數(shù)據(jù)庫(kù)系統(tǒng)中,進(jìn)行分析處理,目前主要包括:糧堆溫度、濕度、蟲(chóng)害、氣體成分等指標(biāo)的全面監(jiān)控.從計(jì)算機(jī)技術(shù)的范疇來(lái)分析,糧情監(jiān)控系統(tǒng)[1]分為硬件部分和軟件部分.在保障糧食安全的迫切需求下,全國(guó)60%以上的中央、省級(jí)地方糧庫(kù)已經(jīng)配備了自動(dòng)化的糧情監(jiān)控系統(tǒng),中央儲(chǔ)備糧庫(kù)已經(jīng)全部配備了糧情監(jiān)控系統(tǒng).而當(dāng)前糧情監(jiān)控系統(tǒng)的軟件都是采用傳統(tǒng)的菜單、表格和統(tǒng)計(jì)圖形界面,作者主要探討虛擬現(xiàn)實(shí)技術(shù)中的一種用仿3D效果的2D圖形技術(shù)[2]在糧情監(jiān)控軟件中的應(yīng)用和實(shí)現(xiàn),從而在計(jì)算機(jī)上更加真實(shí)地呈現(xiàn)糧情監(jiān)控信息.
虛擬現(xiàn)實(shí)技術(shù)(Virtual Reality,VR)是一種可以創(chuàng)建和體驗(yàn)虛擬世界的計(jì)算機(jī)系統(tǒng).建立一種新的用戶(hù)界面,用戶(hù)可以置身于計(jì)算機(jī)構(gòu)建的三維環(huán)境中,并可以通過(guò)眼、手、耳或特殊的空間三維裝置在這個(gè)環(huán)境中漫游.虛擬現(xiàn)實(shí)將用戶(hù)和計(jì)算機(jī)視為一個(gè)整體,通過(guò)各種直觀(guān)的工具將信息進(jìn)行可視化,形成一個(gè)逼真的環(huán)境,用戶(hù)可置身于這種三維的信息空間中自由地使用各種信息,并由此控制計(jì)算機(jī)[3].本文采用2D圖形技術(shù)實(shí)現(xiàn)3D效果是虛擬現(xiàn)實(shí)技術(shù)的一種具體實(shí)現(xiàn).
2D圖形技術(shù)也叫二維圖形技術(shù).2D圖形內(nèi)容有水平的X軸向與垂直的Y軸向.最顯著的特征是所有圖形元素是以平面圖片的形式制作,這些圖形元素最終都以復(fù)雜的聯(lián)系方式在軟件中進(jìn)行調(diào)用而實(shí)現(xiàn)虛擬世界中豐富的內(nèi)容.
3D圖形技術(shù)也叫三維圖形技術(shù).3D圖形內(nèi)容有水平的X軸向與垂直的Y軸向,還有進(jìn)深的Z軸向.與二維的區(qū)別是三維圖形可以從各個(gè)角度去表現(xiàn)模型,虛擬世界中的每個(gè)物體被看作立體的對(duì)象,由若干個(gè)幾何多邊體構(gòu)成.理論上,三維圖形的立體感、光影效果要比二維平面圖形要好.
Windows API(Application Programming Interface,應(yīng)用程序編程接口)是用來(lái)控制Windows的各個(gè)部件的外觀(guān)和行為的一些預(yù)先定義的函數(shù),目的是供應(yīng)用程序與開(kāi)發(fā)人員基于某軟件或硬件的以訪(fǎng)問(wèn)一組例程的能力,而無(wú)需訪(fǎng)問(wèn)資源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié).凡是在Windows工作環(huán)境下執(zhí)行的程序,都可以調(diào)用Windows API[4].API函數(shù)大致分為6類(lèi):基礎(chǔ)服務(wù)類(lèi)、公共控件庫(kù)、圖形設(shè)備接口、網(wǎng)絡(luò)服務(wù)、用戶(hù)界面、Windows Shell函數(shù).本文論述的虛擬現(xiàn)實(shí)技術(shù)在具體程序?qū)崿F(xiàn)過(guò)程中除了文中提及的幾個(gè)核心的關(guān)于圖形和文字處理的API函數(shù)外,還應(yīng)用到了大量其他的API函數(shù).API函數(shù)與計(jì)算機(jī)操作系統(tǒng)和硬件系統(tǒng)的邏輯關(guān)系見(jiàn)圖1.
圖1 API函數(shù)與計(jì)算機(jī)系統(tǒng)的邏輯關(guān)系
在具體的圖形呈現(xiàn)中,為了能夠使用二維的圖形技術(shù)實(shí)現(xiàn)三維的效果,經(jīng)歷以下5個(gè)步驟.
圖2 3D MAX制作生成3D立筒倉(cāng)模型
為實(shí)現(xiàn)逼真的三維效果,首先構(gòu)建糧倉(cāng)的3D模型,向糧庫(kù)或者糧庫(kù)設(shè)計(jì)院收集建筑單體及規(guī)劃的工程圖紙,沒(méi)有工程圖紙的可以根據(jù)大比例尺航攝相片、地形圖文件,將單個(gè)建筑物的輪廓線(xiàn)從攝取照片中提取.使用AutoCAD對(duì)資料進(jìn)行校正,用3D MAX制作生成3D糧倉(cāng)模型[5],如圖2所示.為增加模型的逼真效果,把取自實(shí)際環(huán)境的數(shù)碼照片作為紋理,要作為紋理的圖片長(zhǎng)度和寬度像素值均設(shè)為2的整數(shù)次冪,以保證模型在漫游中紋理不發(fā)生扭曲變形.
確定場(chǎng)景角度,使用3D MAX軟件,對(duì)生成的3D模型進(jìn)行抓拍圖片,圖片的背景顏色進(jìn)行統(tǒng)一處理,使得背景顏色是一個(gè)唯一的顏色值.制作成合適大小的圖標(biāo).本文的糧倉(cāng)圖標(biāo)大小為20×30(像素),背景圖標(biāo)大小為20×20,辦公樓圖標(biāo)的大小為20×20,保存為bmp格式的文件,載入資源文件,供編程調(diào)用.
構(gòu)建糧庫(kù)場(chǎng)景的配置信息文件Buildings.ini.該文件是對(duì)糧庫(kù)庫(kù)區(qū)內(nèi)所有主要建筑物單體的配置文件,包括一個(gè)糧庫(kù)庫(kù)區(qū)里面的種類(lèi)數(shù)量,不同建筑物的圖形參數(shù)配置.每個(gè)建筑的相關(guān)文字描述,需要的圖形資源的資源號(hào)等信息等都包含在配置文件中,該配置文件在初始化糧庫(kù)場(chǎng)景資源時(shí)被調(diào)用.在一個(gè)糧庫(kù)庫(kù)區(qū)內(nèi),一般主要包括小公園、辦公樓、糧倉(cāng)(立筒倉(cāng)、淺圓倉(cāng)、平房倉(cāng))等建筑物.
單體建筑物的相關(guān)信息在糧情監(jiān)控軟件中將被很多地方調(diào)用,因而使用面向?qū)ο蟮姆椒?,用cBuilding類(lèi)封裝單體建筑的屬性值是一個(gè)最佳選擇,該類(lèi)還有效地實(shí)現(xiàn)了糧倉(cāng)建筑信息和屏幕顯示資源、鼠標(biāo)等計(jì)算機(jī)資源的聯(lián)系.cBuilding類(lèi)的屬性值主要包括建筑物的主鍵值、名稱(chēng)、類(lèi)型、文字描述,生成的建筑物圖形在屏幕上顯示的鼠標(biāo)信息和坐標(biāo)位置信息等.
構(gòu)建 Render()函數(shù)用來(lái)實(shí)現(xiàn)糧庫(kù)的圖形場(chǎng)景.當(dāng)建筑物在顯示屏幕的坐標(biāo)范圍以?xún)?nèi)時(shí),依據(jù)系統(tǒng)坐標(biāo)繪制系統(tǒng)建筑,如果某個(gè)建筑被鼠標(biāo)選中,繪制鼠標(biāo)覆蓋時(shí)的效果,繪制建筑物相關(guān)屏幕提示信息.在屏幕坐標(biāo)系統(tǒng)中繪制糧庫(kù)圖形場(chǎng)景,主要用到了BitBlt函數(shù)、TransparentBlt函數(shù)、和TextOut函數(shù)等Windows Api函數(shù).
在生成背景圖案和單體建筑物時(shí),用到BitBlt函數(shù).這個(gè)函數(shù)對(duì)指定的源設(shè)備環(huán)境區(qū)域中的像素進(jìn)行位塊(bit_block)轉(zhuǎn)換,以傳送到目標(biāo)設(shè)備環(huán)境.
當(dāng)某個(gè)建筑物被鼠標(biāo)選中,實(shí)現(xiàn)不同顯示效果時(shí),用到TransparentBlt函數(shù).這個(gè)函數(shù)對(duì)指定的源設(shè)備環(huán)境中的矩形區(qū)域像素的顏色數(shù)據(jù)進(jìn)行位塊(bit_block)轉(zhuǎn)換,并將結(jié)果置于目標(biāo)設(shè)備環(huán)境.
在圖形環(huán)境中所有的靜態(tài)和動(dòng)態(tài)的文字描述信息都調(diào)用TextOut函數(shù).這個(gè)函數(shù)用當(dāng)前選擇的字體、背景顏色和正文顏色將一個(gè)字符串寫(xiě)到屏幕上指定的位置.
Render()函數(shù)的程序流程如圖3所示.
圖3 實(shí)現(xiàn)場(chǎng)景顯示的程序流程
圖4 是一個(gè)淺圓倉(cāng)的庫(kù)區(qū)圖形,有道路、辦公樓和8個(gè)淺圓倉(cāng).當(dāng)鼠標(biāo)移動(dòng)到淺圓倉(cāng)上時(shí),有藍(lán)色光標(biāo)覆蓋在被選定的淺圓倉(cāng),鼠標(biāo)單擊該淺圓倉(cāng),彈出該倉(cāng)的基本信息和糧情檢測(cè)信息.
圖4 庫(kù)區(qū)場(chǎng)景軟件界面
本文在虛擬現(xiàn)實(shí)技術(shù)實(shí)現(xiàn)方面做出了有益的探索,論述應(yīng)用2D圖像技術(shù)實(shí)現(xiàn)3D效果的方法,已經(jīng)在糧情軟件的開(kāi)發(fā)中得到了實(shí)現(xiàn),并且投入到實(shí)際使用當(dāng)中.糧情監(jiān)控軟件開(kāi)發(fā)中用到該技術(shù),將極大提高軟件的視覺(jué)效果,為提升糧情監(jiān)控軟件的整個(gè)庫(kù)區(qū)的呈現(xiàn)提供一種有效的方法.
[1] 王立根,王貴甫.糧情測(cè)控技術(shù)及其發(fā)展[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(5):152-154.
[2] 徐志強(qiáng).2D技術(shù)在圖形編輯中的應(yīng)用[J].華東冶金學(xué)院學(xué)報(bào),2000,17(1):46-49.
[3] 祝玉華.三維糧庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].華北水利水電學(xué)院學(xué)報(bào),2011(4):140-142.
[4] 劉炳文.Visual Basic 6.0 Win32 API[M].北京:清華大學(xué)出版社,2001.
[5] 張強(qiáng),陳亞霖.三維設(shè)計(jì)應(yīng)用教程[M].鄭州:鄭州大學(xué)出版社,2008.