本站小編為你精心準備了虛擬倉庫系統(tǒng)參考范文,愿這些范文能點燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。

1虛擬現(xiàn)實技術及其相關技術簡介
隨著計算機技術的迅速發(fā)展,虛擬現(xiàn)實與人們的日常生活13益密切,已成為當今計算機界廣泛關注的一個熱點。虛擬現(xiàn)實技術是一項涉及計算機圖形學、人機交互、人工智能等學科的綜合技術,它的目的是用計算機來生成一個逼真的三維感覺世界,給觀眾以如同真實世界的體驗。利用這一技術,我們可以足不出戶游覽風景勝地,可以漫游虛擬博物館欣賞文物,可以游覽虛擬校園欣賞校園景致等。
Delphi是全新的可視化編程環(huán)境,采用了彈性可重復利用的完整的面向對象程序語言(Object—OrientedLanguage),是當今世界上最快的編輯器和最為領先的數(shù)據(jù)庫技術。Delphi不但為OpenGL渲染函數(shù)的調(diào)用提供了一個高性能的繼承化開發(fā)環(huán)境IDE(IntegratedDevelopmentEnvironment).而且通過ADO方式連接SQLServer2000數(shù)據(jù)庫作為后臺數(shù)據(jù)庫進行數(shù)據(jù)調(diào)用。
MicrosoftSQLServer是一個關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),可應用于各種專業(yè)組織及專業(yè)數(shù)據(jù)庫和政府用開發(fā)環(huán)境巾。SQLServer2000在本軟件中是作為后臺數(shù)據(jù)庫存放貨物倉庫的各種規(guī)格參數(shù)以備調(diào)用,Delphi是通過ADO(ActiveXDataObjects)方式與數(shù)據(jù)庫進行連接的,這種連接方式易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。
OpenGL是OpenGraphicsLibrary的縮寫,它是SG1公司開發(fā)的一套高性能的圖形處理系統(tǒng),是圖形硬件的軟件接口,意為開放的圖形庫。OpenGL不是編程語言,它是在Delphi平臺上的一組繪圖命令的AP1集合?;贠penGL的三維可視化具有建模方便、實時的三維可視化和高度真實感顯示的優(yōu)越性。
2程序的實現(xiàn)
2.1設計思想
虛擬倉庫系統(tǒng)以Delphi7.0為程序設計平臺,以OpenGL函數(shù)庫為工具進行圖像渲染,通過ADO方式連接SQLServer2000數(shù)據(jù)庫作為后臺數(shù)據(jù)庫進行倉庫規(guī)格參數(shù)的動態(tài)調(diào)用,在一個三維可視化的空問中進行貨物倉庫的立體模擬,用戶可以通過操作鍵盤和鼠標以第一視角在這個場景中漫游,還可以查看每垛貨物箱的各種規(guī)格參數(shù)。
2.2體系結構
本系統(tǒng)在結構上可分為3個模塊:Delphi平臺模塊、數(shù)據(jù)庫調(diào)用模塊、OpenGL實現(xiàn)模塊。其中OpenGL實現(xiàn)模塊又可分為5個子模塊:貨物倉庫庫體渲染子模塊,貨物箱的渲染與紋理貼圖子模塊,燈管的渲染與光照、材質的處理子模塊,貨物箱規(guī)格參數(shù)的中文輸出子模塊,鼠標和鍵盤響應(漫游實現(xiàn))子模塊。虛擬倉庫系統(tǒng)的工作流程見圖1。
2.3ADO連接
系統(tǒng)是通過ADO(ActiveXDataObjects)方式與SQLServer2000數(shù)據(jù)庫進行連接的,主要用到Delphi的ADO組件頁的ADOConnection組件和ADOQuery組件。我們通過ADOConnection組件連接數(shù)據(jù)庫,通過ADOQuery組件進行SQL編程來調(diào)用數(shù)據(jù)庫巾的關于貨物倉庫的各種參數(shù)。
我們用下面的語句調(diào)用貨物倉庫的參數(shù)存放到變量a中,其中a是用HuowuStorage定義的記錄類型。
a[i].name:=DataModule1.ADOQuery1.fieldByName(‘貨物名稱’).a(chǎn)sString;a[i].boxuint:=DataModule1.ADOQuery1.fieldByName(‘單箱發(fā)數(shù)’).a(chǎn)slnteger;IdI.]_boxwidth:=DataModule1.ADOQuery1.fieldByName(‘包裝箱寬’).a(chǎn)slnteger;a[j].boxheight:=DataModule1.ADOQuery1fieldByName(‘包裝箱高’).a(chǎn)slnteger;a[j].boxleng【b:=DataModule1.ADOQueryI.fieldByName(‘包裝箱長’).a(chǎn)slnteger。
2.4三維模型的構建
倉庫庫體是由若干個四邊形組成的,包括墻壁、頂部、地板和若干標準線。倉庫的頂部切面是折線梯形,是由一個個四邊形疊上去的。以下是繪制庫體頂部最上端部分的程序段。
glBegin(GL_QUADS):
glNormal3f(O.0,一1.0,0.O);,般置法線方向glTexCoord2f(0,O);,/紋理坐標左下
glVertex3f(一sw/8,sh+sh,一(i-1)*sYscale);,,左前glTexCoord2f(1,0):,/,紋理坐標右下
glVertex3f(一sw/8,sh+sh,一i*sYseale)://右前glTexCoord2f(1,1)://紋理坐標右上
glVertex3f(sw/8,sh+sh,一i*sl/scale);//右后glTexCoord2f(0,1);,,紋理坐標左上
glVertex3f(sw/8,sh+sh,-(i-1)sl/scale);//左后glEnd();
再進行透視投影:gluPerspective(45.0,Width/Height,1,10000.0)接著我們進行貨物箱的設置,每個貨物箱是由6個四邊形組成的,要對每個四邊形進行紋理貼圖。當然在渲染每一垛貨物箱時,隱藏在里面的那些表面就不用渲染了,這樣可以節(jié)省很多時間,提高效率。
由于要實現(xiàn)每垛貨物箱的精確數(shù)量,所以使用多重FOR循環(huán)來進行渲染。先繪制整層的貨物箱,再繪制一次剩余后整行的貨物箱,最后再繪制二次剩余的幾個貨物箱。
為了便于說明問題,我們舉個簡單的例子:若有一垛的箱子數(shù)量為238個,箱子的長寬高分別為4,8,4(簡化后),根據(jù)倉庫的參數(shù)設置可以推算出這一垛每列箱子數(shù)為9個,共有整層6層.余下22個在第7層,在該層上又有整2行,一次剩余標志為l,最后還剩4個貨物箱在第7層的第3行,二次剩余標志為l。
2.5漫游的實現(xiàn)
倉庫漫游的實現(xiàn)是通過鼠標和鍵盤的響應來改變相應的參數(shù),進行視圖模型矩陣轉換,通過坐標系的變換來調(diào)整觀察點的位置或是所渲染模型的位置??衫孟旅娴暮瘮?shù)來實現(xiàn)。
glRotate(’l’ilt,1,0,0);//圍繞軸順時針旋轉Tilt度
glRotate(Heading,0,1,0);//圍繞y軸順時針旋轉
Heading度glTranslatef(,一0.5+HeadMovement,Z);/船軸正方向前進(X)單位長度,沿y軸正方向前進(~0.5+HeadMovement)單位長度,沿z軸正方向前進(z)單位長度。漫游實現(xiàn)的基本原理見圖2。
3結語
本文利用OpenGL強大的圖形功能在貨物倉庫模擬方面進行了有益嘗試,在實踐中取得了很好的效果,通過鼠標鍵盤進行人機交互,最終實現(xiàn)了貨物倉庫的動態(tài)可視化。虛擬現(xiàn)實技術的研究和應用具有極其廣闊的前景,在某種意義上說它將改變?nèi)藗兊乃季S和生活方式,給人類世界帶來難以想象的變化。