張 勇
【摘要】虛擬現(xiàn)實導(dǎo)覽系統(tǒng)除了能實現(xiàn)實時交互、順暢瀏覽外,還應(yīng)具備場景內(nèi)空間對象的信息查詢功能。探討了采用 VRML 技術(shù)構(gòu)建綜合型虛擬實驗室的一般流程、空間對象的場景數(shù)據(jù)組織、空間網(wǎng)格對場景的分割方法以及瀏覽時的場景分割與優(yōu)化。 以綜合型虛擬實驗室為例,實現(xiàn)了基于空間網(wǎng)格分割的信息雙向查詢,并給出了具體實現(xiàn)結(jié)果。
【關(guān)鍵詞】虛擬實驗室;導(dǎo)覽系統(tǒng);場景分割;信息查詢
【中圖分類號】G40-057 【文獻標識碼】B 【論文編號】1009—8097(2009)01—0129—04
引言
隨著虛擬現(xiàn)實技術(shù)的發(fā)展,虛擬實驗室在實驗教學(xué)中得 到了越來越多的應(yīng)用[1][2]。如何讓更多的學(xué)習(xí)者了解和應(yīng)用虛 擬實驗室,已成為虛擬實驗導(dǎo)覽系統(tǒng)建設(shè)中的重要環(huán)節(jié)。為 了豐富和完善導(dǎo)覽系統(tǒng)的功能,我們開始了綜合虛擬實驗室 實時導(dǎo)覽系統(tǒng)的研發(fā),設(shè)計并實現(xiàn)了虛擬實驗室實時導(dǎo)覽系 統(tǒng)原型。21 世紀信息最具代表性和發(fā)展前景的三種新技術(shù)是 多媒體、網(wǎng)絡(luò)和虛擬現(xiàn)實,而這種技術(shù)的交叉點是虛擬現(xiàn)實 建模語言 VRML(VirtualRealityModelingLanguage)[3]。 VRML 是第二代 Web 上的關(guān)鍵技術(shù),是一種三維場景的描述 性語言,也是在 Internet 網(wǎng)上實現(xiàn)虛擬現(xiàn)實的關(guān)鍵性技術(shù)。其 基本原理是用文本信息描述三維場景,在 Internet 網(wǎng)上傳輸, 經(jīng)由本地機上的 VRML 瀏覽器解釋生成三維場景,解釋生成 的標準規(guī)范即是 VRML 規(guī)范。正是這種思想,使得在 Internet 上通過傳輸很少的數(shù)據(jù)就可瀏覽三維虛擬場景成為可能[4]。
可交互的實時瀏覽和信息查詢是虛擬導(dǎo)覽系統(tǒng)的基本功 能??v觀現(xiàn)有的虛擬現(xiàn)實導(dǎo)覽系統(tǒng),雖然不乏優(yōu)秀的范例, 但均不同程度的存在著瀏覽的順暢性及導(dǎo)覽功能不強等問 題,特別是場景中空間對象的信息雙向查詢功能,未能引起 足夠的關(guān)注和重視?;诙S電子地圖的信息查詢雖然也能 實現(xiàn)導(dǎo)覽功能,但距人們所期望的自然、習(xí)慣的查詢方式尚 有差距。一個綜合型虛擬實驗室系統(tǒng)包含眾多的對象,如何有 序地組織場景對象的空間數(shù)據(jù)?如何在保證繪制真實的前提 下實現(xiàn)實時順暢瀏覽?如何實現(xiàn)空間對象的信息雙向查詢? 本文以綜合型實驗室的導(dǎo)覽系統(tǒng)為范本,重點探討中大型虛 擬場景的空間網(wǎng)格分割、場景調(diào)度以及信息雙向查詢等問題。
一 總體設(shè)計
設(shè)計和開發(fā)綜合型實驗室導(dǎo)覽系統(tǒng),需要完成場景建模、場景優(yōu)化、場景及對象的交互設(shè)置,以及場景的網(wǎng)上發(fā)布,可以借助 AutoCAD、3DS Max、VRML 等開發(fā)工具和技術(shù)來 完成。開發(fā)流程如圖 1 所示。其中,開發(fā)的關(guān)鍵環(huán)節(jié)是場景 網(wǎng)格分割、場景數(shù)據(jù)的空間組織、交互式空間屬性信息查詢 以及瀏覽時的場景調(diào)度。
二 場景組織與分割
對于大中型的虛擬場景,若用單個 VRML 文件來組織, 則將導(dǎo)致文件量偏大,易造成下載時間冗長,解釋繪制、漫 游、交互及信息查詢比較困難。在具體的創(chuàng)建過程中,可采 用編組節(jié)點創(chuàng)建嵌套層次、按實際空間關(guān)系組織 VRML 文件、 使用內(nèi)聯(lián)節(jié)點及創(chuàng)建嵌套內(nèi)聯(lián)等方法實現(xiàn)對場景 VRML 文件 的有序及合理組織以加速繪制;采用代碼重用(DEF/ USE)、 原型(PROTO)封裝以及 LOD 技術(shù)以減少文件量。
為了便于瀏覽時的場景調(diào)度、減少信息查詢時的計算復(fù) 雜度,采用空間網(wǎng)格的方法,即將場景分割為 M×N 的空間 網(wǎng)格,每個空間網(wǎng)格的大小為:X 方向,50 個 VRML 單位; Z 方向,20 個 VRML 單位;Y 方向則與攝像機的 Y 方向高度 相同。采用相同大小的空間網(wǎng)格來劃分場景,優(yōu)點是能保證 瀏覽器每次調(diào)入和退出的場景區(qū)域大小相同。缺陷是空間網(wǎng)格的文件量大小不完全一樣,因為每個空間網(wǎng)格所包含的對 象數(shù)量及復(fù)雜度不同。
三 虛擬實驗室的空間數(shù)據(jù)庫組織
綜合型虛擬實驗室是一個規(guī)模較大的三維場景,導(dǎo)覽系 統(tǒng)的設(shè)計目標,旨在為用戶提供可交互的、實時的場景漫游, 以及對各個不同實驗室的相關(guān)信息查詢,目的是通過網(wǎng)絡(luò)展 示和宣傳實驗室的建設(shè)成就和整體風(fēng)貌(本文以浙江師范大 學(xué)現(xiàn)代教育技術(shù)實驗中心為例)??紤]到真實反映實驗中心的 實際情況,對實驗中心內(nèi)的各個對象進行建模,包括實驗大 樓的外觀及內(nèi)部的走廊、門窗,以及實驗室內(nèi)部的實驗臺、 相關(guān)實驗設(shè)備、多媒體教室、演播廳等等。通過對這些對象 的建模構(gòu)建出虛擬實驗室的框架。
為了便于場景數(shù)據(jù)的調(diào)用及減少查詢計算時的遍歷次 數(shù),虛擬實驗室空間數(shù)據(jù)庫的邏輯組織結(jié)構(gòu)通常根據(jù)場景 對象的實際空間關(guān)系來組織。圖 2 為虛擬實驗室場景的邏 輯框圖,也是空間數(shù)據(jù)庫的邏輯組織框圖。圖中有幾點須 加以說明:
(1) 虛擬實驗室主場景是指進入實驗大樓門廳的場景, 也是整個瀏覽的初始場景。
(2) 特效(Effect)是指場景中的 Sound節(jié)點、Light 節(jié)點、Fog 節(jié)點等;感知器(Sensor)是指因場景交互需要, 設(shè)計時安排 在場景中的 TouchSensor 、 CylinderSensor 、 TimeSensor 、 PositionInterpolator 、 ProximitySensor 以及 VisibilitySensor 等節(jié)點。這些特效和感知器用于豐富場景的表 現(xiàn)、實現(xiàn)場景的交互設(shè)定,它們與場景中由 Group 或 Transform 節(jié)點組織起來的每個樓層(包括走廊及門窗)造型、單個實 驗室造型,實驗室內(nèi)部的實驗臺、座椅、相關(guān)實驗設(shè)備等等, 共同構(gòu)成了一個完整的虛擬實驗室場景。
(3) “支持實驗室對象的底層信息”是指與各個實驗 室對應(yīng)的屬性信息。這些信息包括實驗室名稱、實驗室負責(zé) 人、實驗項目、服務(wù)對象等等。
空間數(shù)據(jù)庫的兩個重要特征是拓撲關(guān)系和復(fù)雜對象,而拓撲關(guān)系和復(fù)雜對象的表達要求層次結(jié)構(gòu)和對象嵌套,并且涉及一對多的關(guān)系。如,VRML 中用于創(chuàng)建三維對象的造型 Shape 節(jié)點、Group 節(jié)點、Transform 節(jié)點等等。這種一對多 的對象嵌套關(guān)系,顯然不能用關(guān)系數(shù)據(jù)模型直接表達,因為用關(guān)系方法處理空間數(shù)據(jù)效率是不高的。目前,大部分商用 的虛擬現(xiàn)實系統(tǒng)都將空間數(shù)據(jù)直接用文件方式表達和管理。 我們在虛擬實驗室的應(yīng)用開發(fā)中也采用這一方法。
四 空間對象的信息雙向查詢
在本系統(tǒng)中,我們將顯示于虛擬世界中的每一個實體都 看作對象,一個復(fù)雜的實體對象可抽象地分解為若干個相對簡 單對象,換言之,若干個相對簡單的實體對象能組合成為一個 更高層次的復(fù)雜對象,每一個對象都有其自身的性質(zhì)和相對應(yīng) 的功能,以及區(qū)別于其他對象的標識(OID)。這樣,系統(tǒng)在進 行查詢時,根據(jù)用戶所提出的查詢條件,通過 OID 搜索管理器 搜索滿足條件的對象的 OID。一旦獲得了某個復(fù)雜對象的 OID, 就等于得到了與此對象相對應(yīng)實體的全部信息。
1三維對象的捕捉
利用面向?qū)ο髷?shù)據(jù)結(jié)構(gòu)對空間實體對象進行三維模型重建,經(jīng)過幾何、投影變換、確定光照模型、紋理映射等一系 列步驟后,即可實現(xiàn)三維透視圖的顯示。三維對象的捕捉是 在計算機屏幕上實施的,而計算機屏幕是二維的,在二維計 算機屏幕上點選圖形,選取對應(yīng)的空間實體對象,則是三維 圖形顯示的逆過程。要在三維透視圖上捕捉空間對象,首先 要根據(jù)投影變換的原理解算鼠標所選取的屏幕點所對應(yīng)空間 點的空間坐標,其實質(zhì)就是透視投影成像的逆過程。即從該 屏幕像點出發(fā),逆向投影光線得出對象點(第一個交點)的空間 位置坐標[5]。
根據(jù)計算機三維圖形學(xué)的知識,某—空間對象點 P(X, Y, Z)經(jīng)過幾何和投影變換后顯示在計算機二維屏幕上所對應(yīng)的 平面點 p′(x,y)除了具有平面坐標(x,y),還包含一個重 要的信息,那就是深度值 z_buffer,所以平面點應(yīng)表示為 p′(x, y,z_buffer)。只要我們獲取平面點的 z_buffer 值和圖形顯示時 的幾何和投影變換逆矩陣,就可通過逆矩陣的作用,根據(jù)計算 機屏幕坐標系上鼠標點擊處的二維坐標 p′(x,y,z_buffer), 求出對應(yīng)的三維空間坐標 P(X, Y, Z)[6]。
2建立網(wǎng)格索引表
在三維場景中進行信息的查詢和分析,需在交互方式下,利用鼠標點擊需要揀取的對象,根據(jù)三維透視投影變換關(guān)系, 將鼠標的屏幕坐標解算為空間坐標,從而根據(jù)坐標匹配揀取 出所要查詢的對象。在場景比較大、場景中數(shù)據(jù)較多時,如 果遍歷數(shù)據(jù)庫中所有對象數(shù)據(jù)以揀取所要查詢的對象,則將 耗費較長時間,減慢信息查詢的速度。因而查詢系統(tǒng)需建立 場景的索引表,以提高對象檢索速度。在此將整個場景劃分 為一個 m 行 n 列的矩形格網(wǎng),每一格網(wǎng)對應(yīng)著區(qū)域檢索表的 一行(如圖 3 所示)。
因為每一格網(wǎng)所包含的場景對象的個數(shù)是不確定的,如果區(qū)域索引表的每一行長度是固定的,則每一行設(shè)置長度過 長,必然有大量的單元空置無用,造成內(nèi)存空間的浪費;如 果設(shè)置長度過短,當一個格網(wǎng)區(qū)域中的場景對象較多時就容 納不下。
分配 m×n 個存儲單元對應(yīng) m 行 n列格網(wǎng),每個存儲單元存儲該格網(wǎng)內(nèi)的第一個對象的指針, 而在系統(tǒng)讀取其他對象的數(shù)據(jù)時,除了為每個對象數(shù)據(jù)分配 存儲空間,同時為該對象設(shè)置一個后向指針,該指針指向同 一格網(wǎng)內(nèi)的下—個對象,從而將一個格網(wǎng)內(nèi)的所有場景對象 按指針鏈接起來。
在建立起場景對象數(shù)據(jù)的區(qū)域索引表后,如果要查詢某 個對象的信息,只需在一個小區(qū)域內(nèi)搜索該對象,避免了遍 歷整個場景對象數(shù)據(jù)而造成的時間損耗。當然,索引表的建 立也消耗了一定的存儲空間,另外區(qū)域格網(wǎng)大小的劃分要根 據(jù)場景對象數(shù)據(jù)的具體情況而定。如果每個格網(wǎng)區(qū)域劃分過 大,則失去建立索引表的優(yōu)越性;如果每個格網(wǎng)區(qū)域劃分過 小,又會出現(xiàn)一個較大對象占據(jù)過多格網(wǎng)區(qū)域的情況,造成 存儲空間的浪費。這里以真實的實驗室作為網(wǎng)格的劃分依據(jù)。
3確立空間對象外接盒
一個復(fù)雜空間對象通常是由若干簡單空間對象所構(gòu)成,每個相對簡單的空間對象又是由若干三角面構(gòu)成的,每個三 角面包含三個頂點。如果要選取場景中的空間對象,一般是 根據(jù)鼠標點選的坐標與數(shù)據(jù)庫中對應(yīng)分塊區(qū)域所有空間對象 的坐標進行匹配;如果鼠標點選的坐標包含于某一空間對象 的坐標點集,則認為選中的是該空間對象。
由于復(fù)雜的空間對象是由相當多的三角面構(gòu)成,因而構(gòu) 成它的頂點是非常多的,如果將每個空間對象的所有頂點都 與鼠標點擊坐標進行匹配,這會造成過多的計算量,從而影 響對象選取和信息查詢的速度。為此,我們?yōu)槊總€實驗室對 象建立空間外接盒(如圖 4 所示),這種外接盒設(shè)計為一個長 方體,各個面與實驗室的相應(yīng)各面相切。在選取空間對象時, 只需判斷鼠標點選的坐標是否位于實驗室對象的空間外接盒 內(nèi),從而決定是否選中對象。
4屬性數(shù)據(jù)向空間數(shù)據(jù)的查詢
在完成場景分割和空間外接盒等工作后,就可實現(xiàn)屬性數(shù)據(jù)向空間數(shù)據(jù)的查詢了。首先,給出一定的查詢條件,通 過 SQL查詢操作在屬性數(shù)據(jù)庫記錄中搜索出滿足條件的記 錄,然后通過 OID 與空間數(shù)據(jù)庫中的空間對象關(guān)聯(lián),以一定 的與其他對象相區(qū)別的顯示方式將這些滿足條件的對象顯 示。查詢流程如圖 5 所示。
5空間數(shù)據(jù)向?qū)傩詳?shù)據(jù)的查詢
用戶通過鼠標等交互工具選取三維場景中的實體對象,通過 ODBC 引擎搜索空間數(shù)據(jù)庫,提取所選擇對象的 OID,然后 根據(jù) OID 查找屬性庫中該對象的屬性記錄,并將該記錄輸出顯 示,使用戶獲得所感興趣的信息。查詢流程如圖 6 所示。
五 實現(xiàn)結(jié)果
根據(jù)上述討論的相關(guān)技術(shù)及方法,實現(xiàn)了虛擬實驗室三 維場景中對目標對象的實時信息雙向查詢。具體如下:
1由屬性信息查詢空間位置
在查詢輸入框中選擇實驗室名稱,如圖 7 所示。
單擊“查詢”確認后,系統(tǒng)根據(jù)屬性信息用內(nèi)聯(lián)節(jié)點(Inline)調(diào)出查詢結(jié)果,界面就被切換到被查詢實驗室的內(nèi) 景,給出如圖 8 所示的場景顯示。
2由空間位置查詢屬性信息
當鼠標落在計算機網(wǎng)絡(luò)實驗室所在區(qū)域并單擊右鍵時,實驗室的屬性信息,如實驗室名稱、實驗室負責(zé)人、實驗項 目、服務(wù)對象等,將在彈出的對話框中顯示,如圖 9 所示。
實驗室內(nèi)部瀏覽,只要單擊門上的任意位置,門打開后即可進入室內(nèi)瀏覽。
六 結(jié)束語
真三維的圖形顯示能給用戶的感觀帶來全新的體驗。我 們所設(shè)計的虛擬實驗室導(dǎo)覽系統(tǒng),除了實現(xiàn)視點的前進、后 退、左右水平旋轉(zhuǎn)、仰視、俯視,以及背景音樂開關(guān)控制等 漫游的基本功能外,還實現(xiàn)了屬性數(shù)據(jù)與空間數(shù)據(jù)之間的雙 向查詢,使得導(dǎo)覽系統(tǒng)具有更好的交互性和友善性,也使得 虛擬實驗室的使用變得更加簡單、直觀和方便。下一步的工 作,將在現(xiàn)有工作的基礎(chǔ)上,進一步改善瀏覽的順暢性問題, 使綜合型虛擬實驗室更好地為廣大師生和不同層次的學(xué)習(xí)者 服務(wù)。筆者所采用的設(shè)計和開發(fā)方法,希望能為同類實驗室 和學(xué)習(xí)系統(tǒng)的開發(fā)提供一種新的思路和啟迪,籍此共同促進 實驗教學(xué)的改革。
參考文獻
[1] Rajkumar Buyya, KimBranson, Jon Giddy and David Abramson. The Virtual Laboratory: a toolset to enable distributedmolecularmodelingfordrugdesignonthe World-Wide Grid [J]. Concurrency Computer: Pract. Exper.2003, (15): 1-25.
[2] Chen Yao-chon,Naughton J M.An undergraduate laboratory platform for control system design[J].IEEE Control Systems Magazine,2000:12-20.
[3] 黃鐵軍, 柳健譯.VRML 國際標準與應(yīng)用指南[M].北京:電 子工業(yè)出版社, 1999:1-10.
[4] Sandy Ressler. Using VRML to Access Manufacturiag data[EB/OL]
[5] 徐青.地形三維可視化技術(shù)[M].北京:測繪出版社, 2000.
[6] 陳國華. 三維連續(xù)圖形變換的一類算法與實現(xiàn)[J]. 中國圖 像圖形學(xué)報, 2001,6 (12): 1240-1243.