面向遠(yuǎn)程應(yīng)用的真三維可視化仿真及其實(shí)現(xiàn)技術(shù)
隨著數(shù)據(jù)庫(kù)技術(shù)、多媒體技術(shù)、可視化技術(shù)以及虛擬現(xiàn)實(shí)技術(shù)的發(fā)展[1],特別是傳統(tǒng)互聯(lián)網(wǎng)應(yīng)用的普及和新一代互聯(lián)網(wǎng)技術(shù)的到來,Web技術(shù)從僅能夠提供文字與靜態(tài)圖片瀏覽,逐漸發(fā)展成為可以支持豐富的影音數(shù)據(jù)流、海量的數(shù)據(jù)挖掘、遠(yuǎn)程實(shí)時(shí)交互的監(jiān)控等功能,基于Web的三維可視化技術(shù)正在成為工程系統(tǒng)三維仿真技術(shù)的發(fā)展方向之一。本文構(gòu)建了一種基于Web結(jié)構(gòu)和J2EE平臺(tái)的工程系統(tǒng)三維可視化仿真框架,以JOGL為手段,給出了相應(yīng)的三維仿真及其實(shí)現(xiàn)技術(shù),并運(yùn)用工程數(shù)據(jù)予以檢驗(yàn)。
1 基于J2EE的真三維可視化仿真框架
工程系統(tǒng)(如地礦工程系統(tǒng))大多具有空間屬性,其仿真技術(shù)需要表現(xiàn)系統(tǒng)的空間屬性及其空間關(guān)系。Web技術(shù)的發(fā)展,使得工程系統(tǒng)的遠(yuǎn)程真三維仿真成為可能。為此,本研究設(shè)計(jì)了一種基于J2EE平臺(tái)的三維可視化仿真系統(tǒng)框架,如圖1所示。
根據(jù)J2EE定義的服務(wù)和規(guī)范,本研究將三維可視化仿真系統(tǒng)分為客戶層、中間層(Web層、業(yè)務(wù)層)和數(shù)據(jù)層,以實(shí)現(xiàn)工程系統(tǒng)的三維可視化仿真功能;以JOGL作為三維圖形的顯示工具,用點(diǎn)、線、面、體來表達(dá)三維工程系統(tǒng);以Applet作為用戶與三維圖形的交互手段,用AWT、Swing等來響應(yīng)鍵盤、鼠標(biāo)和其他外圍設(shè)備的事件;以JRE和JVM作為客戶層Applet組件的容器和Java運(yùn)行環(huán)境,用插件等方式運(yùn)行在瀏覽器中;以權(quán)限驗(yàn)證方式作為系統(tǒng)信息安全手段,用基于角色授權(quán)方式進(jìn)行系統(tǒng)訪問安全控制;以JSP作為應(yīng)用系統(tǒng)基本展示工具,用動(dòng)態(tài)生成的Web頁(yè)面來進(jìn)行業(yè)務(wù)數(shù)據(jù)的發(fā)布和查詢;以Struts作為系統(tǒng)邏輯處理,用XML進(jìn)行業(yè)務(wù)邏輯配置來控制訪問內(nèi)容;以EJB和JavaBean等作為業(yè)務(wù)模型,用面向?qū)ο蠹夹g(shù)中的類來表示對(duì)象工程系統(tǒng)的三維模型。在此基礎(chǔ)上結(jié)合數(shù)據(jù)庫(kù)技術(shù),給出了工程系統(tǒng)的三維可視化仿真技術(shù)。
2 基于J2EE的真三維可視化仿真技術(shù)
2.1 平臺(tái)構(gòu)建的J2EE技術(shù)
J2EE是一個(gè)基于組件——容器模型的系統(tǒng)平臺(tái),以靈活性、擴(kuò)展性、模塊化、跨平臺(tái)和跨數(shù)據(jù)庫(kù)等優(yōu)勢(shì)成為系統(tǒng)建設(shè)和開發(fā)的主流。
本研究中,組件主要包括在客戶端運(yùn)行的Applet組件和在服務(wù)器端運(yùn)行的Web組件及EJB組件;容器主要為這三類組件提供運(yùn)行環(huán)境的JRE、JVM和Web Server等。
(1)基于J2EE的系統(tǒng)流程。根據(jù)J2EE平臺(tái)的規(guī)范,J2EE系統(tǒng)流程包括的主要步驟:①用戶在客戶端啟動(dòng)瀏覽器后,從Web服務(wù)器上下載由JSP動(dòng)態(tài)生成的HTML頁(yè)面,通過與頁(yè)面中嵌入的Applet程序交互,實(shí)現(xiàn)系統(tǒng)的瀏覽、查詢等功能;②Web層的Web Server容器在接收到來自客戶端的用戶請(qǐng)求后,解析相應(yīng)的JSP或Servlet組件生成HTML頁(yè)面,供客戶端使用;③業(yè)務(wù)層容器接收到Web層中的業(yè)務(wù)請(qǐng)求后,將信息提供給EJB組件和數(shù)據(jù)庫(kù)適配器組件,并通過這兩種組件所構(gòu)建的業(yè)務(wù)領(lǐng)域代碼來完成對(duì)Web層組件的支持;④數(shù)據(jù)層中的數(shù)據(jù)庫(kù)服務(wù)器在為業(yè)務(wù)層中的組件提供所需的數(shù)據(jù)支持,同時(shí)也為地礦工程系統(tǒng)的各類工程數(shù)據(jù)提供管理和維護(hù)。
(2)基于J2EE的系統(tǒng)設(shè)計(jì)。在客戶層中,系統(tǒng)采用JRE作為Java的插件嵌入到瀏覽器中作為Applet客戶端運(yùn)行環(huán)境,使用Applet實(shí)現(xiàn)人與系統(tǒng)的交互,并運(yùn)用JOGL實(shí)現(xiàn)基于Web的工程系統(tǒng)的三維可視化。在Web層中,采用Struts實(shí)現(xiàn)業(yè)務(wù)邏輯控制功能,利用JSP組件動(dòng)態(tài)生成頁(yè)面,使用Web服務(wù)器Tomcat為Web層組件提供服務(wù)。在業(yè)務(wù)層中,采用EJB技術(shù)和JavaBean等實(shí)現(xiàn)類的構(gòu)造和工程系統(tǒng)模型的建立。
在實(shí)際研究中,考慮到工程系統(tǒng)存在采樣數(shù)據(jù)處理和數(shù)據(jù)規(guī)范化處理等大量數(shù)值運(yùn)算和圖形數(shù)據(jù)處理等海量數(shù)據(jù)吞吐等因素,采用驅(qū)動(dòng)程序接口技術(shù)進(jìn)行數(shù)據(jù)庫(kù)操作,以應(yīng)對(duì)較高的數(shù)據(jù)庫(kù)存取速度需求。
2.2 用戶交互的Applet技術(shù)
Applet是由Java語言編寫的應(yīng)用程序,可嵌入瀏覽器中獲取鼠標(biāo)、鍵盤等外設(shè)信息,并對(duì)事件做出響應(yīng)。Applet的生命周期包括初始化、開始、運(yùn)行和結(jié)束四個(gè)階段,在此過程中始終需要Java運(yùn)行環(huán)境的支持。
(1)Applet技術(shù)特征。在Web瀏覽器環(huán)境中,HTML文件通過Web服務(wù)裝載Applet程序及相關(guān)資源,在該文件創(chuàng)建時(shí)其內(nèi)部嵌入的Applet程序便開始進(jìn)入運(yùn)行狀態(tài),并隨著文件的關(guān)閉,Applet程序也相應(yīng)結(jié)束運(yùn)行。Applet程序不僅可以使用窗口環(huán)境開發(fā)工具建立標(biāo)準(zhǔn)圖形界面,實(shí)現(xiàn)人機(jī)交互、系統(tǒng)查詢等功能,還可以支持JOGL等技術(shù)進(jìn)行三維圖形的顯示及變換。由于Applet程序基于網(wǎng)絡(luò)進(jìn)行訪問,故具有潛在的安全風(fēng)險(xiǎn)。
(2)Applet系統(tǒng)設(shè)計(jì)。在實(shí)際設(shè)計(jì)過程中,采用Applet類的子類JApplet類來完成Applet的功能,使用戶能通過點(diǎn)擊鼠標(biāo)、敲擊鍵盤等活動(dòng)與系統(tǒng)進(jìn)行會(huì)話。使用JOGL類庫(kù)中的GLCanvas類設(shè)置JOGL圖形顯示參數(shù),并處理JApplet所獲取的用戶事件,實(shí)現(xiàn)JOGL與JApplet的結(jié)合。利用JOGL類庫(kù)中的CG、GL等類繪制工程系統(tǒng)的三維圖形,并通過接口程序?qū)崿F(xiàn)圖形的旋轉(zhuǎn)、平移、裁減和光照設(shè)定等操作。在安全方面,采用JDK1.2的數(shù)字簽名工具設(shè)定Applet程序的安全性,通過比對(duì)網(wǎng)絡(luò)所裝載的數(shù)字簽名和客戶端所持的數(shù)字證書實(shí)現(xiàn)程序的安全。
2.3 三維繪制的JOGL技術(shù)
目前,比較流行的基于Web瀏覽器的三維可視化工具包括VRML、X3D及基于Java語言的Java3D和JOGL等。盡管VRML、X3D均可產(chǎn)生交互式的虛擬現(xiàn)實(shí)場(chǎng)景,但兩者在本質(zhì)上仍屬于數(shù)據(jù)文件,缺乏對(duì)可視化算法的直接支持?;贘ava的Java3D、JOGL不僅能夠像VRML、X3D一樣支持視景圖形處理,還能夠支持更高層次的圖形處理。
(1)JOGL圖形繪制技術(shù)。JOGL是一種建立在OpenGL公共圖形接口基礎(chǔ)上的技術(shù),是一個(gè)被認(rèn)可的Java對(duì)OpenGL的綁定,并得到Java創(chuàng)建者SUN公司和OpenGL創(chuàng)建者SGI公司的共同支持[2]。這就使采用Java開發(fā)的工程系統(tǒng)的三維仿真模型在集成了AWT和Swing等窗口界面的同時(shí),能夠在硬件直接支持下獲得強(qiáng)大的3D圖形繪制功能。
(2)基于JOGL的系統(tǒng)設(shè)計(jì)。本研究選擇了JOGL作為基于B/S結(jié)構(gòu)的工程系統(tǒng)的三維可視化仿真技術(shù)的實(shí)現(xiàn)手段,其核心工作過程包括:調(diào)用GLDrawablefactory類創(chuàng)建GLDrawable對(duì)象;使用GLDrawable類中createGLCanvas()方法來創(chuàng)建GLCanvas對(duì)象;調(diào)用GLCanvas相應(yīng)方法產(chǎn)生GL對(duì)象;調(diào)用GL的相應(yīng)方法和設(shè)置屬性進(jìn)行三維顯示的設(shè)置和繪制等;對(duì)GLCanvas添加事件監(jiān)聽接口,以實(shí)現(xiàn)用戶對(duì)于GLCanvas對(duì)象動(dòng)作的響應(yīng),并對(duì)相應(yīng)的方法進(jìn)行重載,實(shí)現(xiàn)對(duì)鼠標(biāo)和鍵盤的控制,從而進(jìn)行人機(jī)交互。
3 基于J2EE的真三維可視化仿真實(shí)現(xiàn)
本研究以某地下礦山的工程數(shù)據(jù)為例,運(yùn)用上述的系統(tǒng)框架和技術(shù)方法,實(shí)現(xiàn)了基于B/S結(jié)構(gòu)和J2EE平臺(tái)的地礦工程的真三維可視化仿真系統(tǒng),包括地表地形、礦體、井巷工程等三維可視化仿真,如圖2所示。
本文深入地研究了基于J2EE平臺(tái)和B/S結(jié)構(gòu)的工程系統(tǒng)的真三維可視化仿真技術(shù),構(gòu)建了基于Web的工程系統(tǒng)的真三維可視化仿真系統(tǒng)框架,并運(yùn)用JOGL手段,以某地下礦山的工程系統(tǒng)為例,實(shí)現(xiàn)了基于Web的工程系統(tǒng)的真三維可視化仿真,開辟了真三維可視化仿真技術(shù)的遠(yuǎn)程應(yīng)用的途徑。
參考文獻(xiàn)
[1] 唐澤圣.三維數(shù)據(jù)場(chǎng)可視化[M].北京:清華大學(xué)出版社,2000.
[2] DAVIS G. Learning Java bindings for OpenGL(JOGL)[M]. Bloomington, Indiana: AuthorHouse, 2004.
[3] 黃文靜,唐龍,唐澤圣.體繪制及三維交互技術(shù)在地質(zhì)數(shù)據(jù)可視化中的應(yīng)用[J].工程圖學(xué)學(xué)報(bào),1998(3):60-64.