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