王丹穎
(浙江省交通規(guī)劃設(shè)計研究院)
在網(wǎng)絡(luò)上互動地建立橋梁的三維模型,并能從任意角度觀察這個模型,這是單機版的橋梁虛擬現(xiàn)實平臺的升級。VRML語言具備的script節(jié)點正是來源于javascript,這是vrml能夠與javascript及java接口的先天優(yōu)勢,也正是vrml語言在網(wǎng)絡(luò)功能上區(qū)別于其他虛擬現(xiàn)實語言如openGL的突出特點與優(yōu)勢。本文在VRML建模的基礎(chǔ)上,增加從網(wǎng)頁上輸入橋梁基本數(shù)據(jù)作為參數(shù)來建立橋梁三維虛擬現(xiàn)實模型的功能,從而實現(xiàn)橋梁虛擬現(xiàn)實建模從單機版到網(wǎng)絡(luò)版的提升。
VRML(虛擬現(xiàn)實建模語言)的特點與網(wǎng)絡(luò)緊密相關(guān),比如它創(chuàng)建的三維場景文件容量小,適合網(wǎng)絡(luò)傳輸。還有它的交互性強,支持Java、Javascript語言接口,并有自己專有的vrmlscript腳本語言(javascript的一個子集),通過這些專門的編程設(shè)計語言能產(chǎn)生動態(tài)網(wǎng)頁,在網(wǎng)頁上輸入?yún)?shù)得到不同的虛擬現(xiàn)實模型。當(dāng)然還有它最基本的區(qū)別于其他三維虛擬現(xiàn)實建模軟件的功能,就是能非常方便地在網(wǎng)上運行VRML文件觀看虛擬現(xiàn)實模型。
作者此前已經(jīng)完成了用VRML建立橋梁設(shè)計的三維虛擬現(xiàn)實模型,并發(fā)布到網(wǎng)絡(luò)觀察的工作。在本文中,作者進一步介紹了如何使用VRML的腳本節(jié)點編程語法,結(jié)合多種網(wǎng)頁設(shè)計工具,生成動態(tài)網(wǎng)頁,即在網(wǎng)頁上輸入基本的橋梁尺寸數(shù)據(jù)(參數(shù)化)獲得相應(yīng)的橋梁虛擬現(xiàn)實模型的功能。用網(wǎng)頁設(shè)計工具結(jié)合VRML,實現(xiàn)VRML橋梁虛擬現(xiàn)實模型的網(wǎng)絡(luò)設(shè)計平臺,簡單說就是做一個網(wǎng)絡(luò)平臺輸入?yún)?shù)得到虛擬現(xiàn)實模型。思路是把數(shù)據(jù)封裝進數(shù)據(jù)庫,用asp代碼調(diào)用數(shù)據(jù)庫的接口得到數(shù)據(jù),再通過asp代碼把數(shù)據(jù)通過javascript的腳本語言傳遞到vrml,在vrml中處理建模過程,得到的虛擬現(xiàn)實結(jié)果通過腳本語言傳遞到asp,輸出到橋梁虛擬現(xiàn)實模型的網(wǎng)頁上。
按此思路,接下來要針對平臺特點選擇合適的網(wǎng)頁設(shè)計軟件。
網(wǎng)絡(luò)虛擬現(xiàn)實應(yīng)用中,要考慮兩個問題,一能夠形成虛擬現(xiàn)實要求的沉浸感、交互性與想象力,二能夠?qū)崿F(xiàn)多用戶異地共享的虛擬現(xiàn)實環(huán)境。由于多用戶網(wǎng)絡(luò)系統(tǒng)中,各地用戶所使用的網(wǎng)絡(luò)環(huán)境和帶寬不同,所以必須考慮不同端口的用戶交互產(chǎn)生的延時問題。為解決這個問題,與單機版的虛擬現(xiàn)實不同,必須盡量壓縮在線文件傳輸容量,這就要求虛擬現(xiàn)實的實現(xiàn)工具包必須既能滿足基本的虛擬現(xiàn)實特征,又能滿足網(wǎng)絡(luò)傳輸容量的最小化要求。但是,通常來說,是無法達到所謂的最小化,而只能是在滿足基本虛擬現(xiàn)實特征的基礎(chǔ)上趨近于更小。
因此,本文基于簡潔高效的要求,選擇Dreamweaver設(shè)計網(wǎng)頁,選擇Access進行數(shù)據(jù)庫管理,選擇ASP的javascript代碼與vrml結(jié)合,實現(xiàn)在網(wǎng)頁上參數(shù)化輸入基本橋梁數(shù)據(jù),即獲得橋梁虛擬現(xiàn)實模型的動態(tài)效果。
構(gòu)建本網(wǎng)絡(luò)平臺建模的需求分析應(yīng)注意兩點,一能滿足其他單機版虛擬現(xiàn)實建模平臺能夠?qū)崿F(xiàn)的基本功能,二對于單機版中不適應(yīng)網(wǎng)絡(luò)傳輸?shù)奶卣鞑挥杓{入。本文的研究工作重點突出在線異地共享虛擬現(xiàn)實,以下詳細(xì)闡述如何針對橋梁結(jié)構(gòu)交互設(shè)計的特點建立網(wǎng)絡(luò)協(xié)議與架構(gòu)。
特征一:這是開放的網(wǎng)絡(luò)平臺,可以滿足不同的網(wǎng)絡(luò)端口。
特征二:客戶端不需要安裝專業(yè)的圖形軟件,只需要安裝vrml的相關(guān)瀏覽軟件如cosmoplayer(小軟件,安裝即可用),以便在網(wǎng)頁平臺上運行與使用VRML文件。
根據(jù)以上特點,網(wǎng)絡(luò)平臺構(gòu)架的客戶端必須簡潔,因此采用服務(wù)器計算模式即B/S計算模式。B/S計算模式中,服務(wù)器承擔(dān)了應(yīng)用邏輯以及業(yè)務(wù)處理規(guī)則,客戶端僅僅承擔(dān)輸入與輸出功能,只是Java虛擬機。在本平臺中,客戶端只做兩個動作即輸入設(shè)計參數(shù)與顯示虛擬現(xiàn)實模型結(jié)果,而服務(wù)器負(fù)責(zé)計算運行功能,瀏覽器、網(wǎng)頁、數(shù)據(jù)庫則與平臺無關(guān)。因此原來在單機版中本地機做的計算工作全部由服務(wù)器端承擔(dān),這也是為什么本平臺所選用的軟件都要求簡潔,產(chǎn)生的文件容量小的原因了,因為需要網(wǎng)絡(luò)傳輸,必須考慮網(wǎng)絡(luò)帶寬的現(xiàn)實狀況。
以上所述即為動態(tài)網(wǎng)頁,其實質(zhì)是一個程序,網(wǎng)絡(luò)的具體內(nèi)容存放在數(shù)據(jù)庫,當(dāng)用戶從客戶端向服務(wù)器發(fā)出請求時,動態(tài)網(wǎng)頁從數(shù)據(jù)庫中讀出這個信息,以HTML的形式發(fā)送到客戶端,或更新數(shù)據(jù)庫信息。
由于是服務(wù)器處理計算工作,需要選用服務(wù)器腳本語言,因ASP是微軟開發(fā)的語言,用VBScript和Javascript二腳本語言嵌入在HTML中,具備簡單易用的特點,所以本文采用ASP開發(fā)平臺。采用ASP開發(fā)平臺,勢必要用到微軟主推的IIS服務(wù)器,IIS與WindowsNTServer完全集成在一起,使用戶能夠利用WindowsNTServer和NTFS(NT文件系統(tǒng))內(nèi)置的安全特性,建立強大安全靈活的Internet站點。
進入控制面板,雙擊“添加或刪除程序”,在彈出的對話框中單擊“添加/刪除Windows組件”,在彈出的“Windows組件向?qū)А睂υ捒蛑羞x中“Internet信息服務(wù)(IIS)”,安裝IIS。
接下來創(chuàng)建服務(wù)器。通過“開始——程序——維護人員工具——管理工具——計算機管理——服務(wù)和應(yīng)用程序——Internet信息服務(wù)——網(wǎng)站——默認(rèn)網(wǎng)站”點擊右鍵選擇屬性,在跳出的“屬性”窗口選擇“主目錄”,改變“本地路徑”,“應(yīng)用”。
最后采用Dreamweaver軟件新建一個站點,站點根目錄路徑與前述 IIS屬性設(shè)置的“本地路徑”同。
這樣就可以設(shè)計網(wǎng)頁了,包括輸入橋梁基本數(shù)據(jù)的頁面,以及輸出橋梁虛擬現(xiàn)實模型的頁面。以下根據(jù)前述思路重點講如何設(shè)計動態(tài)網(wǎng)頁。
動態(tài)網(wǎng)頁就是加入代碼使靜態(tài)網(wǎng)頁根據(jù)輸入?yún)?shù)不同而生成不同的頁面,本文采用ASP開發(fā)平臺,使用ASP代碼使輸入的參數(shù)生成動態(tài)的頁面。輸入的參數(shù)被asp程序調(diào)用計算得到需要的結(jié)果數(shù)值并被保存進數(shù)據(jù)庫。
輸入的參數(shù)經(jīng)過asp程序后被轉(zhuǎn)換為橋梁空間結(jié)構(gòu)各控制位置的三維坐標(biāo),為了能夠有序多次使用這些坐標(biāo),需要封裝這些數(shù)值。本文采用Access數(shù)據(jù)庫,使用DLL組件將這些坐標(biāo)封裝進數(shù)據(jù)庫中。封裝的內(nèi)容有建立、刪除數(shù)據(jù)庫和輸入數(shù)據(jù),用VB程序中的ActiveDLL開發(fā)DLL組件并生成.dll文件封裝以上數(shù)據(jù)操作過程,.dll文件就是數(shù)據(jù)操作的接口,由ASP的Server對象的CreatObject調(diào)用這個數(shù)據(jù)操作組件。
封裝虛擬現(xiàn)實建模過程,是為了 asp程序調(diào)用這一虛擬現(xiàn)實建模的結(jié)果以輸出到橋梁虛擬現(xiàn)實模型的頁面上。這就要用到腳本(script)節(jié)點,即包含語言程序設(shè)計的節(jié)點,且該程序能被瀏覽器解釋并運行。
在本平臺中需要用到vrmlscript(javascript的一個子集)的Browser對象,Browser對象允許腳本獲取、設(shè)置瀏覽器信息,并能實現(xiàn)對場景的動態(tài)控制。首先在橋梁虛擬現(xiàn)實wrl文件里建立一個空的script節(jié)點和空的模型節(jié)點并定義之,然后在script腳本語言中構(gòu)造Browser對象,用Browser對象提供的方法處理網(wǎng)頁輸入的參數(shù)改變虛擬現(xiàn)實模型。這里,在VRML建模的基礎(chǔ)上需要增加兩點,一是建模中使用的空間數(shù)據(jù)是調(diào)用 2.3中數(shù)據(jù)庫中的空間坐標(biāo)點,而不是直接輸入,二是網(wǎng)頁中需要輸入的參數(shù)在VRML建模程序中應(yīng)該改成變量。
這樣,就成了在網(wǎng)頁上輸入不同的參數(shù)得到不同的橋梁虛擬現(xiàn)實模型結(jié)果的工作。
本文是vrml的擴展應(yīng)用,充分發(fā)揮了該語言區(qū)別與其他圖像軟件的網(wǎng)絡(luò)特長,以及虛擬現(xiàn)實交互性強的特征。在dreamweaver、javascript等網(wǎng)絡(luò)語言的支撐下,vrml建立的橋梁模型突破了原有單機版的虛擬現(xiàn)實模型的短板,能夠在開放的網(wǎng)絡(luò)環(huán)境中充分發(fā)揮虛擬現(xiàn)實的交互性特點,本文的網(wǎng)絡(luò)平臺使得互動擴大至網(wǎng)絡(luò)的無限空間中,只要能上網(wǎng),下載一個簡單的cosmoplayer,任何人都可以通過輸入設(shè)計參數(shù)獲得自己想要的設(shè)計結(jié)果的虛擬現(xiàn)實模型,從而在網(wǎng)上設(shè)計空間模型,設(shè)計泛平民化由于網(wǎng)絡(luò)科技的發(fā)展成為現(xiàn)實。
[1] 張玉孔.ASP動態(tài)網(wǎng)頁開發(fā)案例教程[M].北京:北京航空航天大學(xué)出版社,2009.
[2] 王愛民,支麗平.Dreamweaver8&ASP動態(tài)網(wǎng)站開發(fā)基礎(chǔ)與實例[M].北京:中國水利水電出版社,2007.
[3] 劉怡,張洪定,崔欣.虛擬現(xiàn)實VRML程序設(shè)計[M].天津:南開大學(xué)出版社,2007.
[4] 朱文偉.軸流泵葉輪網(wǎng)絡(luò)化造型與泵軸虛擬加工的研究[M].成都:西華大學(xué)碩士學(xué)位論文,2008.