吳光生,嚴(yán) 偉,陸后軍
(上海海事大學(xué)物流工程學(xué)院,上海 200135)
數(shù)字校園是指數(shù)字信息化的校園,包括信息的獲取、處理和應(yīng)用。將獲得的校園數(shù)據(jù)應(yīng)用在三維模型中,在計算機系統(tǒng)中重現(xiàn)真實的校園,數(shù)字校園的內(nèi)容包括校園設(shè)施的數(shù)字化、校園漫游智能化、可視化等主要方面,它可以對過去進行反演,對現(xiàn)實進行決策,對未來進行預(yù)測,對整個校園發(fā)展規(guī)劃、校園管理都將發(fā)揮重大作用[1]。數(shù)字校園漫游系統(tǒng)完全采用了虛擬現(xiàn)實技術(shù)作為支撐。虛擬現(xiàn)實 (Virtual Reality,VR)是一種可以創(chuàng)建和體驗虛擬環(huán)境的計算機系統(tǒng),虛擬現(xiàn)實技術(shù)已應(yīng)用在軍事仿真、數(shù)字展館、港口物流、交通橋梁、城市規(guī)劃等方面。虛擬現(xiàn)實是集成了計算機圖形學(xué)、計算機仿真技術(shù)、人工智能、傳感技術(shù)、網(wǎng)絡(luò)并行處理等技術(shù)的發(fā)展成果,是一種由計算機技術(shù)輔助生成的高技術(shù)模擬系統(tǒng)。
萇道方等[2]在數(shù)字校園漫游系統(tǒng)中提出了基于Vega的視點與場景的碰撞檢測算法;陳勇等[3]是基于VRPsdk創(chuàng)建一個方便直觀的信息查詢導(dǎo)航系統(tǒng),可以進行漫游;王富偉[4]提出了基于3d max和VRP-Builder平臺實現(xiàn)了數(shù)字校園虛擬漫游系統(tǒng)。上述文獻(xiàn)對于數(shù)字校園的研究與實現(xiàn)都是基于特定商業(yè)軟件,存在后期信息處理量大、接口擴展困難、開發(fā)成本較高等缺點,OpenSceneGraph(簡稱:OSG)作為開源的渲染引擎已經(jīng)成為虛擬現(xiàn)實系統(tǒng)開發(fā)的主流平臺。從數(shù)字校園的功能需求分析出發(fā),對數(shù)字校園所需三維模型進行構(gòu)建與優(yōu)化,在OSG平臺下實現(xiàn)了特定需求的數(shù)字校園漫游系統(tǒng)的主體功能。
數(shù)字校園三維模型構(gòu)建的完成需要四個過程:數(shù)據(jù)獲取、數(shù)據(jù)處理、建立模型、優(yōu)化模型。以清晰、簡潔、逼真度為方向,采用層次結(jié)構(gòu)方式對校園進行重建仿真模型 (校園三維模型層次結(jié)構(gòu)劃分如圖1所示)。這種模型重建的數(shù)據(jù)結(jié)構(gòu)可以合理的提高系統(tǒng)顯示速度。Creator軟件讀取模型結(jié)構(gòu)數(shù)據(jù)的方式為從上到下、從左到右,而盡量把視點遠(yuǎn)的地物結(jié)構(gòu)數(shù)據(jù)放在數(shù)據(jù)庫的左邊;這樣更能顯示出層次感和立體感。校園三維模型構(gòu)建分為三塊:地形構(gòu)建、建筑物構(gòu)建、地物設(shè)施構(gòu)建。
圖1 校園三維模型層次結(jié)構(gòu)
地形數(shù)據(jù)和紋理信息是通過數(shù)字高程模型(DEM)和數(shù)字正射影像 (DOM)獲得的。然后需要將地理信息系統(tǒng)中的DEM數(shù)據(jù)轉(zhuǎn)化成DED格式數(shù)據(jù),再用PolyTrans軟件,通過設(shè)置參數(shù)轉(zhuǎn)化為Creator的Openflight文件格式 (*.flt)。本文采用四叉樹方法進行LOD的地形建模,先從整個完整的地形出發(fā),再以遞歸方式把地形不斷地分割成相等的四個部分,分割的層次越多,則得到的分辨率越高,但分割的層次不是越多越好,需要結(jié)合一個曲率度量的評價標(biāo)準(zhǔn)來判斷。圖2中一個正方形代表四叉樹的一個節(jié)點,保存的信息有經(jīng)緯度,中心點高度,邊節(jié)點高度等。
圖2 節(jié)點分割圖
建筑物模型分為精細(xì)化建模和粗糙化建模。精細(xì)化建模一般用在具有代表性要求高精度的建筑物,劣勢是占據(jù)著大量的數(shù)據(jù)庫資料和渲染時的內(nèi)存。在數(shù)字校園中,采用三維激光掃描儀獲得建筑物的相關(guān)數(shù)據(jù),再通過粗糙化建??梢詼p少實時繪制的開銷,從而加快系統(tǒng)運行的速度。粗糙化建模是構(gòu)造LOD層次,對于建筑物的復(fù)雜造型主要是用紋理 (透明或者非透明)拼貼或簡單造型來代表復(fù)雜造型。如圖3所示在繪制建筑物樓梯的臺階時,一種是以每一層為對象繪制出階梯,即為正方體的疊加。另一種是以臺階的側(cè)面為對象進行拉升,這種方法簡單且面片數(shù)量比前一種少40%??傮w而言,粗糙化建模所使用的面片數(shù)目只有精細(xì)化建模的10%~20%。在建?;騼?yōu)化模型過程中,應(yīng)該在高度逼真的情況下盡量使用少的面片數(shù)構(gòu)建模型,從而得以優(yōu)化。方法有四種:一是使用合并面工具,以減少文件大小;二是使用LOD菜單下的vsimplyfy插件,vsimplyfy自動多邊形減少工具利用三角化算法優(yōu)化模型;三是建模過程中及時刪除多余的面片;四是對于復(fù)雜模型盡量使用紋理,這種效果十分逼真且簡化,最能達(dá)到理想效果。
圖3 階梯模型簡化
地物設(shè)施包括:路標(biāo)、路燈、電線桿、花草樹木、圍欄等。在數(shù)字校園漫游系統(tǒng)模型的構(gòu)建過程中,存在大量幾何形狀相同的地物設(shè)施,只有位置、大小、方向不一樣。如果對每個物體都進行建模,必然帶來系統(tǒng)資源的大量浪費,影響系統(tǒng)的加載和運行速度??梢酝ㄟ^實例技術(shù)實現(xiàn)對地物設(shè)施的建模。原理是將相同的模型放在一份OpenFlight文件格式中,通過這份模型可以在地形中進行大量復(fù)制、平移、旋轉(zhuǎn)和縮放得到系統(tǒng)中所需的地物設(shè)施,可以減少大量的數(shù)據(jù)庫資源和內(nèi)存空間。
校園的花草樹木和圍欄設(shè)施,應(yīng)該采用Billboard(公告牌)技術(shù)構(gòu)建模型,然后設(shè)置樹木的透明紋理,將透明紋理貼在豎立的面片上,就可以完成樹木模型的構(gòu)建。該技術(shù)原理是以樹木的正面始終圍繞著觀察者的視點旋轉(zhuǎn),實際是通過二維圖像代替三維的實體模型。
在地形模型文件中利用文件菜單下的Extenal Reference導(dǎo)入所有的地物,再處理建筑物與地面之間、設(shè)施與地面之間的融合,協(xié)調(diào)建筑物周圍的綠化帶。為達(dá)到理想的要求,需要求得地形中建筑物地基的幾個關(guān)鍵的三維坐標(biāo),以輸入數(shù)據(jù)進行導(dǎo)入,位置精確化后再實行無縫融合處理。
數(shù)字校園漫游系統(tǒng)是采用了Multigen Creator軟件完成了整個校園模型的構(gòu)建,以及利用OSG技術(shù)進行二次開發(fā)驅(qū)動顯示數(shù)字校園的場景 (圖4為系統(tǒng)結(jié)構(gòu))。
通過數(shù)字高程模型 (DEM)和數(shù)字正射影像(DOM)獲得地形數(shù)據(jù)和紋理數(shù)據(jù),通過三維激光掃描技術(shù)獲取建筑物的建模相關(guān)數(shù)據(jù);通過Poly-Trans軟件轉(zhuǎn)化為OpenFlight格式的數(shù)據(jù)結(jié)構(gòu)文件。OpenFlight以幾何層次結(jié)構(gòu)的方式描述三維物體,這可以保證對物體的點、邊、面進行控制。然后基于OSG技術(shù),在Microsoft Visual Studio.NET2003平臺下開發(fā)的一個基于MFC的演示窗口,實現(xiàn)數(shù)字校園漫游系統(tǒng)。
圖4 系統(tǒng)結(jié)構(gòu)圖
數(shù)字校園漫游系統(tǒng)以南通航運職業(yè)技術(shù)學(xué)院為研究平臺,設(shè)計的功能滿足了校園不同的漫游方式、環(huán)境特效和安全預(yù)防演練等,主要功能如下,如圖5所示。
(1)自動漫游模塊:該模塊是系統(tǒng)設(shè)定了一條路線可以自動進行路徑漫游,也可以在仿真系統(tǒng)人機交互過程中錄制一條線路后自動漫游。
(2)交互漫游模塊:允許用戶手動調(diào)整觀察視點,通過操作鼠標(biāo)和鍵盤來控制漫游路徑。系統(tǒng)具有開啟、關(guān)閉碰撞檢測功能,滿足用戶不同應(yīng)用需求;
(3)視點切換模塊:系統(tǒng)預(yù)設(shè)典型場景的固定視點,方便用戶快速切換虛擬場景;
(4)特效背景模塊:可以通過該模塊添加關(guān)閉背景音樂,汽車駕駛行動,或添加雨水、陽光等環(huán)境天氣特效,令漫游有更完美的視聽效果。
(5)專題模塊:數(shù)字校園的一個重要特征是信息的便捷使用,系統(tǒng)可根據(jù)特定需求定制專題模塊,如校園路徑搜索、突發(fā)事件應(yīng)急決策、安全狀況監(jiān)控等。
(6)擴展接口模塊:允許用戶自建模型的導(dǎo)入與替換,便于隨著地理環(huán)境的變化導(dǎo)致系統(tǒng)升級、更新。
OSG對場景的組織和管理采用了數(shù)據(jù)結(jié)構(gòu)場景圖,這樣可以把各個場景及其屬性組成一棵場景樹;用于校園場景設(shè)計安排和管理,它以樹形結(jié)構(gòu)來表示一個場景制作的所有過程,每一個節(jié)點代表一個單元。
在數(shù)字校園漫游系統(tǒng)中設(shè)計的主要類是osg-Walk,主要用來解決校園的漫游功能。系統(tǒng)演示效果如圖5。下面對這類進行簡單闡述。
{……
boolkeyMovement(intflag); //左右移動
boolkeyGoBackMovement(int flag); //前后移動
Booleyeupdown(int flag) //仰俯變化
voidosgWalk:collisionDetect(constVec3&delta)//碰撞檢測
……
Double velocity;
Double height;
……};
圖5 數(shù)字校園漫游系統(tǒng)
在數(shù)字校園漫游系統(tǒng)中,為了使得場景真實再現(xiàn),采用的是紋理拼貼的方式。通過對紋理信息的獲取,處理,拼貼,實現(xiàn)三維模型的真實再現(xiàn)。在Creator軟件中紋理拼貼的過程中沒有要求,但是OSG在實景驅(qū)動時對紋理有著嚴(yán)格的要求,那些不滿足要求的均不能正確顯示。紋理應(yīng)滿足的條件如下:
(1)紋理格式。將應(yīng)用的紋理文件轉(zhuǎn)換成OSG中支持的文件格式:RGB、RGBA、PNG、JPG、INT、INTA、BMP;
(2)紋理像素大小。將紋理的大小修改為OSG中所規(guī)定的長度—2的n次方;
(3)紋理的名稱。保存紋理時,由于中文名稱的紋理不被顯示,應(yīng)使用英文字母命名;
(4)帶a的紋理。如果在RGB文件中包含了a值,則文件的后綴名必須是RGBA才能在OSG中顯示出來。
OSG是用于管理場景的軟件。在實現(xiàn)動態(tài)的集合體更新、揀選、排序和高效率渲染,場景圖形重點需要把握三種遍歷:①更新:更新遍歷是指允許程序修改場景圖形,以實現(xiàn)動態(tài)場景。更新操作由程序或者場景圖形中節(jié)點對應(yīng)的回調(diào)函數(shù)完成。數(shù)字校園漫游系統(tǒng),可以通過更新遍歷改變場景的視點位置。②揀選:在揀選遍歷中,主要檢查場景中所有節(jié)點的包圍盒。如果葉節(jié)點在視口內(nèi),場景圖形庫將在最終的渲染列表中添加該節(jié)點的一個應(yīng)用。③繪制:在渲染遍歷中,場景圖形將遍歷由揀選遍歷過程生成的幾何體列表,并調(diào)用底層API,實現(xiàn)場景渲染。
碰撞檢測的基本任務(wù)是確定兩個或多個物體彼此之間是否發(fā)生接觸或穿透。在數(shù)字校園漫游系統(tǒng)中,主要解決校園漫游視點不與場景的物體發(fā)生接觸即可。本系統(tǒng)中采用了基于BUMP的線段探測的碰撞檢測算法?;舅悸肥钱?dāng)檢測到視點和場景發(fā)生碰撞后,改變視點運動方向,使視點運動方向和碰撞到的場景面平行。
OSG提供了osg::LineSegmen,一個包含起點和終點的線段類;osgUtil::IntersectVisiotr是一個接受線段的類,用于判別與節(jié)點的交集,osgUtil::IntersectVisitor::HitList可以得到相交點的具體位置,從而計算出視點和場景之間的距離。
為了增強友好的用戶體驗,考慮從三個方面進行優(yōu)化:一是縮短系統(tǒng)的加載速度;二是盡量提高數(shù)字校園地圖的分辨率;三是運行的響應(yīng)速度保持流暢。這三個方面是相互制約的關(guān)系。首先對校園的所有模型按照層次關(guān)系型結(jié)構(gòu)進行存放,對各個模型多余的面片進行刪除,在一個平面上的三角面進行合并,減少模型的存放空間。這些都有利于系統(tǒng)的加載速度。再次紋理的處理至關(guān)重要,圖片的分辨率既不能太高,也不能太低;這直接會影響用戶對三維地圖觀看的視覺感受,經(jīng)過多次試驗,在三維場景中,能在正對著紋理一米以上的距離清晰看見即可,這保證了在不影響運行響應(yīng)速度的同時,又能讓用戶感受到三維數(shù)字校園地圖的高清晰度。最后,在制作特效背景時,應(yīng)用了粒子系統(tǒng)使得校園環(huán)境更加逼真。
虛擬現(xiàn)實技術(shù)可以很好地對真實校園進行模擬,讓用戶通過漫游系統(tǒng)產(chǎn)生身臨其境的感覺。本文通過了Creator軟件構(gòu)建了校園的三維模型,對OSG的二次開發(fā)實現(xiàn)了數(shù)字校園漫游系統(tǒng)。該系統(tǒng)主要設(shè)計了自動漫游模塊、交互漫游模塊、視點切換模塊、特效背景模塊、專題模塊、擴展接口模塊。此外,也可以按照未來的校園規(guī)劃方案,在現(xiàn)有的系統(tǒng)基礎(chǔ)上通過擴展接口模塊做出相應(yīng)改變,以得到對該規(guī)劃方案的預(yù)覽效果,可以為校園未來發(fā)展規(guī)劃提供有價值的參考。以便使數(shù)字校園最初的需求功能得以實現(xiàn)。
在數(shù)字校園漫游系統(tǒng)實現(xiàn)之后,將數(shù)字展覽[5]引入漫游系統(tǒng)成為了下一步的工作。將相關(guān)的信息加入系統(tǒng),并隨著漫游過程展現(xiàn),將會達(dá)到更好的展示效果。
[1]黃瑩瑩,彭敏俊,許岷.基于虛擬現(xiàn)實的數(shù)字校園漫游系統(tǒng)的設(shè)計與實現(xiàn)[J].應(yīng)用科技,2005,32(5):40-42.
[2]萇道方,宓為建.基于Vega的虛擬現(xiàn)實系統(tǒng)漫游引擎[J].計算機輔助工程,2006,15(2):31-33.
[3]陳勇,馬純永,白生祥,等.基于VRP sdk的虛擬海大校園導(dǎo)航系統(tǒng)[J].中國海洋大學(xué)學(xué)報:自然科學(xué)版,2007,37(3):481-484.
[4]王富偉.基于3dmax和VRP-Builder平臺數(shù)字校園虛擬漫游系統(tǒng)的設(shè)計與實現(xiàn)[J].中國科技信息,2009,(24):95-96.
[5]陸后軍,萇道方,宓為建.集裝箱碼頭三維仿真組件平臺[J].計算機輔助工程.2010,19(1):84-87.