近年來,隨著計算機硬件技術(shù)的加速發(fā)展,虛擬現(xiàn)實技術(shù)在建筑環(huán)境實時漫游中的應(yīng)用成為人們關(guān)注的熱點.虛擬校園漫游是城市規(guī)劃應(yīng)用的基本功能之一,構(gòu)造一個虛擬校園漫游系統(tǒng),必須綜合應(yīng)用計算機圖形技術(shù)、多媒體技術(shù)、傳感器技術(shù)、顯示技術(shù)以及網(wǎng)絡(luò)技術(shù)等多種計算機領(lǐng)域的最新技術(shù).文中根據(jù)第 2炮兵士官學(xué)校規(guī)劃設(shè)計,應(yīng)用虛擬現(xiàn)實技術(shù)開發(fā)了基于桌面系統(tǒng)的“虛擬校園實時漫游系統(tǒng)”,該系統(tǒng)以中檔 Pc機為硬件平臺,對實時漫游系統(tǒng)的各種優(yōu)化算法進行了深入研究。
1 系統(tǒng)總體結(jié)構(gòu)
為了保證整個場景能順利、流暢地在普通高檔微機上運行,同時達到實時漫游的功能,保證其安全、可靠地運行,按照任務(wù)側(cè)重點的不同,可將整個系統(tǒng)分解成場景模型子系統(tǒng)、漫游引擎子系統(tǒng)、輸入子系統(tǒng) 、渲染輸 出子系統(tǒng)等,它們在功能上相對獨立,通過數(shù)據(jù)接口相互聯(lián)系,其總體結(jié)構(gòu)如圖 1所示.
2 模型及貼圖的優(yōu)化
2.1 三維復(fù)雜模型結(jié)構(gòu)的優(yōu)化
虛擬校園中有許多復(fù)雜結(jié)構(gòu)模型,如果模型數(shù)據(jù)庫中多邊形數(shù) 目超過系統(tǒng)的計算能力,在虛擬場景中漫游時幀處理將無法及時完成,場景變換的平滑性會受到破壞 .為了提高運行系統(tǒng)的實時性,必須對模型進行簡化處理,以減少數(shù)據(jù)庫的多邊形開銷,從下面幾個方面對模型進行簡化:
1)使用 LOD表達復(fù)雜結(jié)構(gòu)模型.虛擬校園中有許多復(fù)雜模型必須用 LOD來表達,以使運行系統(tǒng)中的多邊形數(shù)控制在預(yù)算之內(nèi),有利于提高運行系統(tǒng)的實時性.
2)用紋理代替多邊形表達結(jié)構(gòu)細節(jié).紋理映射能夠在不增加多邊形數(shù)目的前提下提高場景表達的詳實程度,用 LOD模型配合一定細節(jié)程度的紋理來代替多邊形模型會大大降低系統(tǒng)的繪制負載.
3)刪除冗余多邊形.刪除數(shù)據(jù)庫中的冗余多邊形可以在一定程度上減少系統(tǒng)中的多邊形數(shù)量,這些多邊形可能是模型內(nèi)部的細節(jié)結(jié)構(gòu),某些多邊形的背面可能是位于某平面上的模型的底面,如地面上內(nèi)部不需漫游的房屋的底面等.可以用 3DSMAX中的 Optimize修飾器進行簡化 ,主要用于減少模型的面數(shù).值得注意的是,Optimize必須在貼圖之前進行,否則貼圖會發(fā)生扭曲.
4)移除多邊形的背面.虛擬校園環(huán)境中組成絕大多數(shù)模型的多邊形都是單面可見,3DSMAX能 自動剔除多邊形的背面,僅顯示其前面,虛擬校園環(huán)境中除構(gòu)成樹木模型之外的絕大多數(shù)多邊形都是單面可見的.為減輕系統(tǒng)的運行負載,提高渲染速度,如果多邊形是單面可見,應(yīng)確保其狀態(tài)沒被設(shè)定為 2side.
2.2 紋理映射優(yōu)化
虛擬校園中所使用的紋理是用數(shù)碼相機拍攝景物表面細節(jié)獲得的數(shù)字圖像來離散定義的,之后用3 DSMAX的紋理工具進行紋理映射和對紋理進行編輯 ;但系統(tǒng)中紋理的大小、數(shù)量和分辨率受運行系統(tǒng)中紋理存儲空間的限制.所以為了在不降低模擬真實性的前提下,使紋理占據(jù)的系統(tǒng)資源(如存儲空間)盡可能少,必須對紋理數(shù)據(jù)進行優(yōu)化,以提高系統(tǒng)的運行實時性.
從以下幾個方面對紋理數(shù)據(jù)進行優(yōu)化:
1)紋理大小的合理確定.紋理大小應(yīng)根據(jù)圖形加速卡性能、運行系統(tǒng)的內(nèi)存及人的視覺生理特性等合理確定.為有效節(jié)省內(nèi)存,虛擬校園中所用紋理多數(shù)是512×512或更?。叻直媛实募y理只有當(dāng)虛擬場景需近距離觀看時才使用.
2)紋理內(nèi)部格式分辨率的優(yōu)化配置.紋理內(nèi)部格式分辨率決定了如何改變紋理數(shù)據(jù)各顏色分量的字節(jié)配置,以得到不同格式紋理在諸如性能、效率或圖像質(zhì)量等方面的不同效果.虛擬校園中的紋理數(shù)據(jù)做了如下的優(yōu)化處理:為節(jié)省內(nèi)存 ,將源數(shù)據(jù)采集效果較好 的多數(shù) RGB文件 內(nèi)部 格式分 配為 TX— RGB一5,RGBA文件的內(nèi)部格式分配為 TX—RGBA一4;有些紋理數(shù)據(jù)因為采集效果不理想,為保證圖像質(zhì)量,將其內(nèi)部格式設(shè)定為 TX—RGB一12.
3)子紋理的運用.虛擬校園中有些表面的紋理細節(jié)差別較小,如不同路段的路面紋理等,采用子紋理進行處理,既避免了明顯的雷同,又節(jié)省了內(nèi)存.[
3 漫游引擎子系統(tǒng)的優(yōu)化
3.1 建立一個好 的層次結(jié)構(gòu)庫
由于建立的模型的各個部分在層次圖中分別對應(yīng)一塊面板,實時漫游系統(tǒng)將通過層次結(jié)構(gòu)圖來展示數(shù)據(jù)庫組成,一個有序的、有條理的層次結(jié)構(gòu)圖將使您的模型在實時漫游系統(tǒng)中以最快的速度和最正確的方式顯示出來.層次結(jié)構(gòu)庫也是一個可視化的數(shù)據(jù)結(jié)構(gòu)庫.這種結(jié)構(gòu)像一棵倒立的大樹,根在最上面,樹枝、樹葉在下面.它將展示出模型的結(jié)構(gòu)組織,各個組成部分以小面板的形式按照一種或多種樹形結(jié)構(gòu)排列,這樣的方式十分有利于模型的修改.通過在層次結(jié)構(gòu)圖中用鼠標點擊并拖動小面板來編輯任意一個面,例如,單擊便可編輯視圖中的任一模型結(jié)構(gòu)體,雙擊便可得到或修改結(jié)構(gòu)體的屬性.而且由于面在組中或?qū)嶓w中時按從左到右的順序排列,如果其中有一部分是按錯誤的順序排列,可以左移或右移面板來調(diào)整它們的順序.在顯示時,對于任意一點,Z—buffer將計算這一點附近所有物體到屏幕的距離 ,最近的物體的顏色將被賦給這一點,從而防止在建立面時需要對面進行轉(zhuǎn)換或排序.另外,好的層次結(jié)構(gòu)庫能夠更加方便地用于場景的挑選.換句話說,此虛擬場景結(jié)構(gòu)可以根據(jù)當(dāng)前視點來挑選場景中的哪一部分是可以看到的.在渲染開始時,對不可視的幾何體元素不予處理,從而加強虛擬現(xiàn)實場景的渲染階段的性能.
3.2 立體顯示技術(shù)
立體顯示對于實現(xiàn)虛擬現(xiàn)實的沉浸感是十分重要的,對立體顯示的圖像可以通過頭盔、液晶光閥眼鏡等觀察獲得沉浸感.立體視覺模型要求對2個視點分別進行計算,生成左眼和右眼視圖.這時需要2個投影 中心.根據(jù)投影面、人眼以及觀察對象之間的相對位置,可有負視差、正視差之分.下面以負視差為例,根據(jù)透視原理進行如下推導(dǎo)計算:設(shè)2眼距離為2 half—eye,若將之間的線段的中點定義為坐標系的原點,該線段位于中軸上,軸與投影平面垂直,使用右手系建立一個三維坐標系.2眼的坐標分別為(half-eye,0,0)、(一half-eye,0,0),設(shè)物體點坐標為,物體離視點的距離是 0distance,投影平面距視點的距離為.從 2眼分別看該物體投影點,在投影平面上該物體投影點的坐標分別為:其中 為了方便計算投影點的坐標,選用右眼的位置作坐標原點,經(jīng)計算可得到
同理可得到 ,Y .當(dāng)計算左畫面時,r 為正值;計算右畫面時,rhalf-eye為負值.產(chǎn)生出立體圖像對以后,使用頭盔或立體眼鏡觀察時讓每只眼睛只能看到立體圖像對中的一幅圖像,這樣就能給人以立體的感受.
3.3 紋理映射技術(shù)
紋理映射技術(shù)是近幾年來發(fā)展最快的技術(shù)之一,廣泛應(yīng)用 于三維真實感 圖形 的生成與顯 示中…J.運用紋理映射可以方便地制作真實感圖形而不用花更多的時間去考慮物體的表面細節(jié) ,紋理映射的本質(zhì)是對三維物體進行二維參數(shù)化,即先求得三維物體表面上任一點的二維參數(shù)值,進而得到該點的紋理值,最終生成三維圖形表面上的紋理圖案.在光滑曲面上添加紋理圖案的核心問題是映射,因此紋理問題可以簡化為從一個坐標系到另一個坐標系的變換.其中至少涉及 2個映射,一個是從紋理空間到景物空間,有時也稱為曲面參數(shù)化;第 2個映射是從景物空間到圖像(屏幕)空間,即取景變換.通常,這2個變換被合成為一個變換.下面講述如何在繪制三維場景時使用紋理映射技術(shù).
1)大環(huán)境——天空盒.
虛擬校園中,首先要構(gòu)建大環(huán)境——天空,在一些三維建摸軟件如 3D MAX或者 Maya中,通常使用天空盒來表現(xiàn)天空景象,如晴朗的白天、燈光絢爛的夜晚等,天空盒的模型可以使用一個半球體,通過對半球體的內(nèi)表面進行紋理貼圖來表現(xiàn)天空環(huán)境.但這種模型在進行貼圖時容易出現(xiàn)球體兩扳處的走樣.為了避免這種情況,使用立方體(去捧底面)模型來模擬天空.
2)真實感地形的繪制.
真實感地形的繪制分為地形模型映射以及真實感地形生成 2部分,地形模型映射就是把數(shù)字形式的地形數(shù)據(jù)轉(zhuǎn)換成 multigen公司的 vega系統(tǒng)的基本格式,并計算相關(guān)的參數(shù)(頂點和法向量等)的過程.首先把數(shù)字地形模型轉(zhuǎn)成 vega原語 ,以生成 vega可識別的原語序列 ,vega不僅提供了點、線、多邊形等建模原語 ,而且通過這些原語還可把地形模型數(shù)據(jù)表示成典型原語序列、線型原語序列及多邊形原語序列.由于 vega要求多邊形必須是凸多邊形因此在軟件實現(xiàn)中采用了三角面原語序列表達地形模型.由于 vega不直接計算每個頂點的法向量,因此若需獲得較佳的視覺效果或模擬特殊的地景,在轉(zhuǎn)換成 Vega的三角面串序列時,就需為每一個頂點計算出它的法向量;且所有頂點的法向量應(yīng)保持一致 ,否則有的三角面將不可見.取每個頂點的法矢量為圍繞該頂點所有三角面的法向量的平均值,這樣可以實現(xiàn)地形的平滑效果.真實感地形是指通過對地形進行透視投影、消隱等操作后生成像照片那樣的黑白圖像或彩色圖像,產(chǎn)生出虛擬效果.通過 vega的紋理映射技術(shù)將地貌圖片與數(shù)字地形進行融合,從而提高地形的表現(xiàn)力.
4 結(jié) 論
目前國外基于桌面的實時漫游系統(tǒng)報道較少,許多成熟的產(chǎn)品基本上都是采用的全景圖和簡單的場景.本系統(tǒng)是使用桌面系統(tǒng)實現(xiàn)了虛擬校園的實時漫游并且造價低廉 ,所采用的優(yōu)化算法具有以下優(yōu)點:
1)對紋理影射進行了優(yōu)化,使實時繪制過程中的計算量少,效果幾乎沒有損失.
2)優(yōu)化后 的虛擬現(xiàn)實引擎占用很少內(nèi)存,為實現(xiàn)微機上的虛擬校園漫游系統(tǒng)提供了基礎(chǔ).通過實例測試證明算法能有效地對桌面虛擬現(xiàn)實漫游引擎實施了改造,使之運行在普通桌面系統(tǒng)上,繪制后的效果不僅保留了原來模型的特征,還能滿足實時漫游的需求.