李博,寧濤
(大連交通大學(xué) 軟件學(xué)院,遼寧 大連 116052)*
虛擬現(xiàn)實(shí)(Virtual Reality,簡(jiǎn)稱(chēng)VR)技術(shù)正在社會(huì)各領(lǐng)域得到廣泛應(yīng)用,虛擬校園是虛擬現(xiàn)實(shí)技術(shù)在數(shù)字化校園中的具體應(yīng)用,它是利用計(jì)算機(jī)為用戶(hù)提供模擬現(xiàn)實(shí)場(chǎng)景的虛擬操作環(huán)境,使人們對(duì)研究環(huán)境產(chǎn)生身臨其境的感覺(jué).虛擬現(xiàn)實(shí)技術(shù)最本質(zhì)的特點(diǎn)是沉浸感(Immersion)、交互性(Interaction)和思維構(gòu)想性(Imagination)[1-3].國(guó)內(nèi)多所高校(天津大學(xué)、清華大學(xué)、北京航空航天大學(xué)等)進(jìn)行了虛擬校園的建設(shè),但是以提供單一瀏覽功能為主[4-7],本文實(shí)現(xiàn)的大連海事大學(xué)西山校區(qū)虛擬校園建設(shè),不僅可以提供基本的瀏覽功能,還可以提供交互功能以獲取更多信息.借助于Multigen-Creator場(chǎng)景建模軟件和VC++開(kāi)發(fā)平臺(tái)下OpenGVS的虛擬校園漫游和查詢(xún)系統(tǒng)基于這種背景和需求進(jìn)行了開(kāi)發(fā).
虛擬校園導(dǎo)引系統(tǒng)結(jié)合虛擬現(xiàn)實(shí)和可視化技術(shù),主要設(shè)計(jì)包括自主漫游和按既定線(xiàn)路自動(dòng)漫游、查詢(xún)定位、自動(dòng)量算和樓宇機(jī)構(gòu)介紹四個(gè)功能模塊,其中查詢(xún)模塊主要根據(jù)用戶(hù)輸入的目的地自動(dòng)生成導(dǎo)引路徑和定位鳥(niǎo)瞰圖,自動(dòng)量算模塊為用戶(hù)提供位置坐標(biāo)、目的地距離以及所需時(shí)間.系統(tǒng)開(kāi)發(fā)總體分為場(chǎng)景三維建模和繪制、模型的驅(qū)動(dòng)漫游、樓宇查詢(xún)導(dǎo)引和介紹幾部分,如圖1所示.
圖1 系統(tǒng)總體設(shè)計(jì)
數(shù)據(jù)準(zhǔn)備主要包括數(shù)據(jù)收集和數(shù)據(jù)處理.對(duì)收集的原始數(shù)據(jù),根據(jù)建設(shè)中對(duì)樓宇環(huán)境不同場(chǎng)景的要求,選擇不同精度的圖片進(jìn)行數(shù)據(jù)處理.
(1)校園底圖數(shù)據(jù)收集處理.從相關(guān)管理部門(mén)獲取校園規(guī)劃的CAD工程底圖文件和航攝相片數(shù)據(jù)比例尺.利用AutoCAD對(duì)底圖文件進(jìn)行修改處理并導(dǎo)入到Multigen Creator中,為節(jié)省導(dǎo)入時(shí)間和文件所占空間,分離出需要使用的部分并將其保存為獨(dú)立的flt文件;
(2)建模數(shù)據(jù)收集處理.建模數(shù)據(jù)包括校園樓宇的尺寸、比例以及外墻、甬道等的圖片數(shù)據(jù).這些數(shù)據(jù)可利用數(shù)碼相機(jī)、攝像機(jī)通過(guò)靜態(tài)拍照、動(dòng)態(tài)攝像、掃描或航拍等手段采集;
(3)校內(nèi)樓宇機(jī)構(gòu)分布數(shù)據(jù).使用數(shù)據(jù)庫(kù)或者數(shù)據(jù)表將建筑數(shù)據(jù)與底圖數(shù)據(jù)進(jìn)行對(duì)應(yīng)統(tǒng)一,作為漫游路線(xiàn)和生成路徑的參照和基礎(chǔ);同時(shí),將相應(yīng)主要樓宇機(jī)構(gòu)、道路導(dǎo)引等介紹信息保存為文本和影音格式文件.
當(dāng)前主流的三維模型格式中,主要有max、3ds、flt、obj、dxf、dwg、dem.虛擬環(huán)境的建模工具有AutoCAD、3DSMax、Multigen Creator等軟件工具.我們選擇Creator工具,因?yàn)榕c前兩種軟件比較,Creator軟件具有簡(jiǎn)單、直觀、運(yùn)行于實(shí)時(shí)環(huán)境中的特點(diǎn),除了具有一個(gè)共同的用戶(hù)接口,每種實(shí)現(xiàn)還具有一個(gè)適應(yīng)特定平臺(tái)的子系統(tǒng);而且Creator建立的模型尺寸小,不占用過(guò)大內(nèi)存,不會(huì)影響環(huán)境的實(shí)時(shí)性能.這種設(shè)計(jì)可以方便利用特定擴(kuò)展工具將一個(gè)基本的建模程序改造成適合于某個(gè)特殊應(yīng)用,從而能夠完成圖像數(shù)據(jù)量較大的虛擬空間環(huán)境構(gòu)建.該軟件另一個(gè)突出優(yōu)點(diǎn)是其構(gòu)造的場(chǎng)景數(shù)據(jù)庫(kù)采用樹(shù)狀層次結(jié)構(gòu)來(lái)組織和管理模型,可以方便地進(jìn)行實(shí)體模型的組織和管理.
選擇了建模工具后,開(kāi)始進(jìn)行模型的建立.模型主要分為甬道模型和樓宇模型.模型建立的精細(xì)度決定了三維場(chǎng)景漫游效果的逼真度,而伴隨模型高精細(xì)度的是大量的時(shí)間消耗和高端的機(jī)器性能,因此我們?cè)诰?xì)度和繪制速度間進(jìn)行平衡,既保證一定的繪制精度,又保證繪制速度.
(1)甬道模型.甬道模型由OpenGVS的幾何繪圖命令來(lái)構(gòu)建,其建模過(guò)程是用OpenGVS的幾何元素構(gòu)造每一小段道路,然后將所有的路段拼接起來(lái)構(gòu)成完整的道路.如果將各個(gè)路段的長(zhǎng)度取得足夠小,則相對(duì)整條道路,各路段的長(zhǎng)度就趨近于零,從而可認(rèn)為每條路段即代表路線(xiàn)上的各個(gè)點(diǎn).因此原本離散變化的視線(xiàn)方向也就可以滿(mǎn)足視覺(jué)連續(xù)過(guò)程.
(2)樓宇模型.Creator用樹(shù)狀層次結(jié)構(gòu)來(lái)組織和管理模型,方便進(jìn)行實(shí)體模型的組織和管理.通過(guò)校園規(guī)劃底圖及全校航拍圖來(lái)獲得數(shù)字化地圖數(shù)據(jù).紋理數(shù)據(jù)對(duì)用來(lái)增加虛擬世界的真實(shí)感有重要的作用,可以彌補(bǔ)細(xì)節(jié)的不足.建模過(guò)程中按照校園地貌特性分布情況,對(duì)場(chǎng)景進(jìn)行了區(qū)域分割.在各分割地帶,所包括的特征場(chǎng)景按層次由高到低、由粗到細(xì)地完成模型的場(chǎng)景構(gòu)造過(guò)程,如圖2所示.整個(gè)過(guò)程分為幾何建模、形象建模(也稱(chēng)物理建模)和視景生成3個(gè)過(guò)程.
圖2 大連海事大學(xué)西山校區(qū)鳥(niǎo)瞰圖
三維模型建立好后要進(jìn)行紋理繪制(Rendering),紋理繪制能夠增強(qiáng)模型的視覺(jué)效果和逼真度,繪制工作主要包括模型的材質(zhì)和光照.本系統(tǒng)使用Photoshop軟件對(duì)采集的圖片進(jìn)行編輯處理,使紋理符合模型不同色調(diào)要求,草地、甬道等的紋理則是對(duì)面對(duì)象重復(fù)貼圖獲得.在繪制過(guò)程中為避免瀏覽時(shí)出現(xiàn)像素閃爍現(xiàn)象,對(duì)紋理壓蓋進(jìn)行了處理,繪制效果如圖3所示.
圖3 繪制后效果圖
經(jīng)過(guò)建立和繪制的模型還僅是靜態(tài)的,無(wú)法達(dá)到漫游瀏覽和生成路徑的目的.從漫游者的運(yùn)行方式、起始位置、觀察視角等幾個(gè)方面進(jìn)行參數(shù)設(shè)置,對(duì)模型進(jìn)行自動(dòng)或自主驅(qū)動(dòng),使漫游者在驅(qū)動(dòng)的場(chǎng)景中產(chǎn)生沉浸感.
目前流行的實(shí)時(shí)場(chǎng)景引擎工具有 Vega、VTree、Vrmap和OSG等.本系統(tǒng)從需求和功能出發(fā),選擇了 VC++開(kāi)發(fā)平臺(tái)結(jié)合 OpenGVS.OpenGVS直接架構(gòu)于OpenGL、Glide和Direct3D上,既封裝了底層圖形驅(qū)動(dòng)函數(shù),又保持了良好的可移植性.
導(dǎo)引系統(tǒng)主要包含模型驅(qū)動(dòng)模塊、速度調(diào)節(jié)模塊和視線(xiàn)高度調(diào)節(jié)模塊.
驅(qū)動(dòng)模塊是漫游系統(tǒng)的核心程序段,主要包括場(chǎng)景選擇、自動(dòng)自主控制和碰撞檢測(cè)等部分.系統(tǒng)啟動(dòng)時(shí),初始視點(diǎn)設(shè)置為校區(qū)正門(mén)與人視線(xiàn)同高平視位置,漫游者可通過(guò)輸入設(shè)備自主改變視點(diǎn)位置和實(shí)現(xiàn)角度.自主漫游模式還提供了使用混合包圍盒的碰撞檢測(cè)功能.
考慮到不同漫游者由于年齡、身高和性別等生理差異,其行走速度也不同.本系統(tǒng)通過(guò)控制調(diào)節(jié)漫游的步長(zhǎng)來(lái)達(dá)到區(qū)分行走速度的目的.解決方法為:初始化的步長(zhǎng)(行走速度)設(shè)為正常人行走的步長(zhǎng),在程序中依照模型的比例設(shè)為0.5 cm,步長(zhǎng)的調(diào)節(jié)單位為0.25 cm.用戶(hù)可通過(guò)“+”和“-”功能鍵自主調(diào)節(jié)速度.
本系統(tǒng)通過(guò)調(diào)節(jié)照相機(jī)Y軸坐標(biāo)實(shí)現(xiàn)模擬調(diào)節(jié)視線(xiàn)高度.解決方法為:初始化的視線(xiàn)高度設(shè)為屏幕中央(window_size.y/2),高度調(diào)節(jié)的單位為0.2 cm,通過(guò)“H”和“L”功能鍵來(lái)實(shí)現(xiàn)高、低不同方向的遞變完成修改視線(xiàn)高度.
虛擬校園導(dǎo)引系統(tǒng)不僅提供漫游瀏覽功能,還提供按目的地自動(dòng)生成漫游路徑的導(dǎo)引功能和漫游者定位功能.
通過(guò)數(shù)學(xué)建模將校園不同機(jī)構(gòu)抽象為多對(duì)多的關(guān)系數(shù)據(jù)庫(kù)中的節(jié)點(diǎn),則自動(dòng)生成漫游路徑問(wèn)題便可轉(zhuǎn)化為求目標(biāo)節(jié)點(diǎn)的最短路徑問(wèn)題.首先用標(biāo)記位置信息的節(jié)點(diǎn)表示待查詢(xún)機(jī)構(gòu)樓宇,用帶權(quán)弧表示校內(nèi)甬道(權(quán)值表示道路長(zhǎng)度),并分別保存到不同數(shù)據(jù)表中.系統(tǒng)通過(guò)計(jì)算視點(diǎn)坐標(biāo)值獲取距離漫游者當(dāng)前位置最近的節(jié)點(diǎn)信息.然后通過(guò)帶權(quán)弧建立數(shù)據(jù)表中節(jié)點(diǎn)的一對(duì)一關(guān)系,將關(guān)系保存到獨(dú)立數(shù)據(jù)表中.最后根據(jù)漫游者當(dāng)前位置和目的地,運(yùn)用Dijkstra算法實(shí)現(xiàn)按目的地自動(dòng)生成漫游路徑功能.
雖然漫游者在導(dǎo)引系統(tǒng)中能順利到達(dá)目的地,但是要從整體對(duì)校園形成直觀的認(rèn)識(shí)還有一定的困難,甚至對(duì)行走過(guò)的路線(xiàn)還比較模糊.為了解決漫游系統(tǒng)的這一問(wèn)題已經(jīng)提出了許多解決方法.
比較有代表性的是:方法1、生成三維地圖,通過(guò)讓用戶(hù)從空中向下以一定角度觀看三維場(chǎng)景,來(lái)獲得空間定位信息[8].方法2、通過(guò)增加一個(gè)通道作為二維地圖通道,原來(lái)的主通道占據(jù)整個(gè)屏幕,二維地圖通道作為子通道占據(jù)少部分屏幕.二維地圖通道中,設(shè)置相機(jī),預(yù)設(shè)光照和觀察體,相機(jī)的鏡頭始終正對(duì)表示二維地圖的模型平面[9].
方法1中當(dāng)以一定角度觀看三維場(chǎng)景,若正面有高大的物體,則會(huì)形成遮擋;方法2當(dāng)漫游者行走于場(chǎng)景模型下方(如樹(shù)冠、涼亭),則無(wú)法準(zhǔn)確定位,而且由于這兩種方法消耗資源偏大,會(huì)造成繪制時(shí)的幀數(shù)下降.
本文采用“畫(huà)中畫(huà)”二維地圖簡(jiǎn)化法.具體方法為:①將場(chǎng)景模型投影到平面生成二維地圖;②從相機(jī)類(lèi)中獲取世界坐標(biāo)系中的水平坐標(biāo),在二維地圖上以紅色的圓點(diǎn)表示,這樣用戶(hù)可以掌握自己的行走軌跡和在校園中的相對(duì)位置.效果如圖4所示.
圖4 簡(jiǎn)化二維地圖
本文綜合使用 Multigen Creator建模和OpenGVS編程,完成了“虛擬校園導(dǎo)引系統(tǒng)”的開(kāi)發(fā).與已有技術(shù)相比較,本文在四方面使用了新方法:①使用的 OpenGVS可以更好地結(jié)合底層OpenGL函數(shù)和頂層接口,并提高了可移植性;②系統(tǒng)漫游過(guò)程使用了混合包圍盒的碰撞檢測(cè)方法,提高了檢測(cè)的效率;③在完成漫游瀏覽功能基礎(chǔ)上,使用求最短路經(jīng)算法完成自動(dòng)生成路徑功能;④使用二維地圖簡(jiǎn)化法進(jìn)行鳥(niǎo)瞰定位避免漫游者“迷失”方向.通過(guò)系統(tǒng)用戶(hù)測(cè)試表明本系統(tǒng)能夠有效對(duì)漫游者進(jìn)行導(dǎo)引,并提供方便直觀的校園樓宇信息查詢(xún)和定位功能.
[1]鮑虎軍.虛擬現(xiàn)實(shí)技術(shù)概論[J].中國(guó)基礎(chǔ)科學(xué),2003,5(3):26-32.
[2]潘志庚,姜曉紅,張明敏,等.分布式虛擬環(huán)境綜述[J].軟件學(xué)報(bào),2000,11(4):35-41.
[3]寧濤,郭晨,張升文.用混合包圍盒優(yōu)化碰撞檢測(cè)方法[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(1):5-7.
[4]郭晨,楊國(guó)勛,孫建波,等.船舶運(yùn)動(dòng)控制虛擬現(xiàn)實(shí)交互式仿真系統(tǒng)[J].系統(tǒng)仿真學(xué)報(bào),2004,16(5):81-83.
[5]寧濤,梁旭.基于虛擬現(xiàn)實(shí)技術(shù)的校園導(dǎo)向標(biāo)識(shí)系統(tǒng)研究[J].工程圖學(xué)學(xué)報(bào),2008,29(2):196-199.
[6]NING TAO,GUO CHEN,WANG LI JUAN.The shortest path optimization method using hybrid genetic algorithm[J].International Journal of Advancements in Computing Technology,2011,3(6):305-311.
[7]畢曉佳,苗放,葉成名.基于數(shù)字地球平臺(tái)的三維虛擬數(shù)字校園建設(shè)[J].地理空間信息,2008,6(3):99-101.
[8]寧濤,霍利.紙面原型設(shè)計(jì)方法在虛擬仿真系統(tǒng)開(kāi)發(fā)的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(20):254-256.
[9]于海鳳,邢桂芬,張凱.虛擬現(xiàn)實(shí)技術(shù)在視景仿真系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(6):1108-1110.