本站小編為你精心準備了虛擬倉庫系統參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
1虛擬現實技術及其相關技術簡介
隨著計算機技術的迅速發展,虛擬現實與人們的日常生活13益密切,已成為當今計算機界廣泛關注的一個熱點。虛擬現實技術是一項涉及計算機圖形學、人機交互、人工智能等學科的綜合技術,它的目的是用計算機來生成一個逼真的三維感覺世界,給觀眾以如同真實世界的體驗。利用這一技術,我們可以足不出戶游覽風景勝地,可以漫游虛擬博物館欣賞文物,可以游覽虛擬校園欣賞校園景致等。
Delphi是全新的可視化編程環境,采用了彈性可重復利用的完整的面向對象程序語言(Object—OrientedLanguage),是當今世界上最快的編輯器和最為領先的數據庫技術。Delphi不但為OpenGL渲染函數的調用提供了一個高性能的繼承化開發環境IDE(IntegratedDevelopmentEnvironment).而且通過ADO方式連接SQLServer2000數據庫作為后臺數據庫進行數據調用。
MicrosoftSQLServer是一個關系數據庫管理系統(RDBMS),可應用于各種專業組織及專業數據庫和政府用開發環境巾。SQLServer2000在本軟件中是作為后臺數據庫存放貨物倉庫的各種規格參數以備調用,Delphi是通過ADO(ActiveXDataObjects)方式與數據庫進行連接的,這種連接方式易于使用、高速度、低內存支出和占用磁盤空間較少。
OpenGL是OpenGraphicsLibrary的縮寫,它是SG1公司開發的一套高性能的圖形處理系統,是圖形硬件的軟件接口,意為開放的圖形庫。OpenGL不是編程語言,它是在Delphi平臺上的一組繪圖命令的AP1集合。基于OpenGL的三維可視化具有建模方便、實時的三維可視化和高度真實感顯示的優越性。
2程序的實現
2.1設計思想
虛擬倉庫系統以Delphi7.0為程序設計平臺,以OpenGL函數庫為工具進行圖像渲染,通過ADO方式連接SQLServer2000數據庫作為后臺數據庫進行倉庫規格參數的動態調用,在一個三維可視化的空問中進行貨物倉庫的立體模擬,用戶可以通過操作鍵盤和鼠標以第一視角在這個場景中漫游,還可以查看每垛貨物箱的各種規格參數。
2.2體系結構
本系統在結構上可分為3個模塊:Delphi平臺模塊、數據庫調用模塊、OpenGL實現模塊。其中OpenGL實現模塊又可分為5個子模塊:貨物倉庫庫體渲染子模塊,貨物箱的渲染與紋理貼圖子模塊,燈管的渲染與光照、材質的處理子模塊,貨物箱規格參數的中文輸出子模塊,鼠標和鍵盤響應(漫游實現)子模塊。虛擬倉庫系統的工作流程見圖1。
2.3ADO連接
系統是通過ADO(ActiveXDataObjects)方式與SQLServer2000數據庫進行連接的,主要用到Delphi的ADO組件頁的ADOConnection組件和ADOQuery組件。我們通過ADOConnection組件連接數據庫,通過ADOQuery組件進行SQL編程來調用數據庫巾的關于貨物倉庫的各種參數。
我們用下面的語句調用貨物倉庫的參數存放到變量a中,其中a是用HuowuStorage定義的記錄類型。
a[i].name:=DataModule1.ADOQuery1.fieldByName(‘貨物名稱’).asString;a[i].boxuint:=DataModule1.ADOQuery1.fieldByName(‘單箱發數’).aslnteger;IdI.]_boxwidth:=DataModule1.ADOQuery1.fieldByName(‘包裝箱寬’).aslnteger;a[j].boxheight:=DataModule1.ADOQuery1fieldByName(‘包裝箱高’).aslnteger;a[j].boxleng【b:=DataModule1.ADOQueryI.fieldByName(‘包裝箱長’).aslnteger。
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個四邊形組成的,要對每個四邊形進行紋理貼圖。當然在渲染每一垛貨物箱時,隱藏在里面的那些表面就不用渲染了,這樣可以節省很多時間,提高效率。
由于要實現每垛貨物箱的精確數量,所以使用多重FOR循環來進行渲染。先繪制整層的貨物箱,再繪制一次剩余后整行的貨物箱,最后再繪制二次剩余的幾個貨物箱。
為了便于說明問題,我們舉個簡單的例子:若有一垛的箱子數量為238個,箱子的長寬高分別為4,8,4(簡化后),根據倉庫的參數設置可以推算出這一垛每列箱子數為9個,共有整層6層.余下22個在第7層,在該層上又有整2行,一次剩余標志為l,最后還剩4個貨物箱在第7層的第3行,二次剩余標志為l。
2.5漫游的實現
倉庫漫游的實現是通過鼠標和鍵盤的響應來改變相應的參數,進行視圖模型矩陣轉換,通過坐標系的變換來調整觀察點的位置或是所渲染模型的位置。可利用下面的函數來實現。
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)單位長度。漫游實現的基本原理見圖2。
3結語
本文利用OpenGL強大的圖形功能在貨物倉庫模擬方面進行了有益嘗試,在實踐中取得了很好的效果,通過鼠標鍵盤進行人機交互,最終實現了貨物倉庫的動態可視化。虛擬現實技術的研究和應用具有極其廣闊的前景,在某種意義上說它將改變人們的思維和生活方式,給人類世界帶來難以想象的變化。