王 麗,陳 杰,李 佳,陳定方
(武漢理工大學(xué)智能制造與控制研究所,湖北 武漢 430063)
虛擬漫游技術(shù)是虛擬現(xiàn)實(VR)技術(shù)的重要分支,而場景實時漫游是虛擬現(xiàn)實技術(shù)的一個重要應(yīng)用.由于沒有制定具體的路線,人們可以在虛擬的環(huán)境中自由行走,不受時間、空間的限制,達到真正意義上的交互,因此該技術(shù)能夠給客戶帶來企業(yè)最直觀的展示.本文對OpenSceneGraph(OSG)圖形系統(tǒng)大型場景進行數(shù)字化采集數(shù)據(jù),然后通過三維建模建立大型場景,最終實現(xiàn)現(xiàn)實場景的虛擬漫游系統(tǒng)開發(fā).
利用Google Earth大型場景的衛(wèi)星地圖為依據(jù),收集相關(guān)實體的結(jié)構(gòu)數(shù)據(jù)以及照片,通過使用3ds Max軟件對光照、紋理、材質(zhì)等多因素進行修理,進行實體建模.
虛擬建筑場景漫游的最大難點在于建模逼真度和繪制實時性.由于這種漫游所看到的景象離觀察者近,要求繪制非常逼真的圖像.因此,構(gòu)造精細的建模,會消耗很多時間.同樣,由于計算機性能的制約,構(gòu)造出來的模型越復(fù)雜,在繪制時要達到實時效果就越困難,實時性太差會使觀察者無法接受.因此必須像重視建模本身一樣重視對場景模型的優(yōu)化[1].可以運用多層次細節(jié)(LOD)方法為場景生成不同的細節(jié)層次,這樣可大大減少繪制的計算量.還可以采取一些場景預(yù)處理辦法,例如用輻射度方法,可在漫游時省去許多光照的計算量.
利用基于OSG技術(shù)開發(fā)的軟件——三維仿真軟件進行編輯并導(dǎo)出三維場景模型.將場景模型導(dǎo)入3dvri軟件中進行編輯(主要是進行攝影機的路線校正,以及天空盒的創(chuàng)建還有鏡頭光斑的設(shè)置等),最后將場景文件保存為ive格式的文件[2,3].
基于 OSG技術(shù),通過在 Microsoft Visutual stdio.NET平臺下開發(fā)的一個基于MFC的演示窗口,實現(xiàn)虛擬校園的漫游功能.
正確使用安裝包安裝OSG并完成OSG的編譯后,打開VS2005,選擇“工具”※“選項”命令打開“選項”對話框,展開“項目和解決方案”結(jié)點,選擇“VC++目錄”選項,在此設(shè)置包含文件和庫文件兩項,分別選擇OSG目錄中的include和lib文件夾所在的路徑[4].
具體設(shè)置方法如下.
1)包含文件和庫文件目錄分別設(shè)置為:
2)右擊“我的電腦”圖標(biāo),在彈出的快捷菜單中選擇“屬性命令”打開“系統(tǒng)屬性”對話框,選擇“高級”選項卡,單擊“環(huán)境變量”按鈕,在彈出環(huán)境變量對話框中設(shè)置下面兩個環(huán)境變量:
在瀏覽整個三維場景時,矩陣變換非常關(guān)鍵.通過適當(dāng)?shù)木仃囎儞Q可獲得各種移動或者渲染效果.此系統(tǒng)中自定義的漫游操作器T ravelManipulator是繼承于OSGGA::MatrixManipulator的.
編寫自定義場景漫游操作器的主要步驟如下.
1)編寫一個繼承自 osgGA::GUIEventHandler類的新類,class TravelManipulator:public osgGA::MatrixManipulator.
2)重載函數(shù)handle()及相關(guān)矩陣變換函數(shù),在handle()中添加合適的事件處理函數(shù),并指定執(zhí)行相關(guān)的動作.
在此函數(shù)中執(zhí)行相關(guān)動作如:
3)進行碰撞檢測.本系統(tǒng)中使用一種簡單的碰撞檢測方法(圖1).
圖1 簡單碰撞檢測
碰撞檢測實現(xiàn)代碼如下:
4)關(guān)聯(lián)該操作器到當(dāng)前視圖場景中,OSG不會自動啟動.該操作器代碼為
使用該漫游系統(tǒng)操作方便,仿真度高,在實際應(yīng)用中獲得了較好的效果(圖2).
[1]丁建浩,王毅剛,潘志庚.采用大屏幕投影系統(tǒng)的虛擬河坊街漫游[J].杭州電子科技大學(xué)學(xué)報,2005,25(1):56-59.
[2]申閆春,朱幼虹,曹 莉,等.基于 OSG的三維仿真平臺的設(shè)計與實現(xiàn)[J].計算機仿真,2007,24(6):207-211.
[3]Bow man DA,Kruijff E,LaViola J,et al.3D user interfaces:theory and practice[M].Boston:Addison Wesley,2004.
[4]肖 鵬,劉更代,徐明亮.Open Scene Graph三維渲染引擎編程指南[M].北京:清華大學(xué)出版社,2010:14-15,265-275.