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