王 麗,陳 杰,李 佳,陳定方
(武漢理工大學智能制造與控制研究所,湖北 武漢 430063)
虛擬漫游技術是虛擬現實(VR)技術的重要分支,而場景實時漫游是虛擬現實技術的一個重要應用.由于沒有制定具體的路線,人們可以在虛擬的環境中自由行走,不受時間、空間的限制,達到真正意義上的交互,因此該技術能夠給客戶帶來企業最直觀的展示.本文對OpenSceneGraph(OSG)圖形系統大型場景進行數字化采集數據,然后通過三維建模建立大型場景,最終實現現實場景的虛擬漫游系統開發.
利用Google Earth大型場景的衛星地圖為依據,收集相關實體的結構數據以及照片,通過使用3ds Max軟件對光照、紋理、材質等多因素進行修理,進行實體建模.
虛擬建筑場景漫游的最大難點在于建模逼真度和繪制實時性.由于這種漫游所看到的景象離觀察者近,要求繪制非常逼真的圖像.因此,構造精細的建模,會消耗很多時間.同樣,由于計算機性能的制約,構造出來的模型越復雜,在繪制時要達到實時效果就越困難,實時性太差會使觀察者無法接受.因此必須像重視建模本身一樣重視對場景模型的優化[1].可以運用多層次細節(LOD)方法為場景生成不同的細節層次,這樣可大大減少繪制的計算量.還可以采取一些場景預處理辦法,例如用輻射度方法,可在漫游時省去許多光照的計算量.
利用基于OSG技術開發的軟件——三維仿真軟件進行編輯并導出三維場景模型.將場景模型導入3dvri軟件中進行編輯(主要是進行攝影機的路線校正,以及天空盒的創建還有鏡頭光斑的設置等),最后將場景文件保存為ive格式的文件[2,3].
基于 OSG技術,通過在 Microsoft Visutual stdio.NET平臺下開發的一個基于MFC的演示窗口,實現虛擬校園的漫游功能.
正確使用安裝包安裝OSG并完成OSG的編譯后,打開VS2005,選擇“工具”※“選項”命令打開“選項”對話框,展開“項目和解決方案”結點,選擇“VC++目錄”選項,在此設置包含文件和庫文件兩項,分別選擇OSG目錄中的include和lib文件夾所在的路徑[4].
具體設置方法如下.
1)包含文件和庫文件目錄分別設置為:

2)右擊“我的電腦”圖標,在彈出的快捷菜單中選擇“屬性命令”打開“系統屬性”對話框,選擇“高級”選項卡,單擊“環境變量”按鈕,在彈出環境變量對話框中設置下面兩個環境變量:

在瀏覽整個三維場景時,矩陣變換非常關鍵.通過適當的矩陣變換可獲得各種移動或者渲染效果.此系統中自定義的漫游操作器T ravelManipulator是繼承于OSGGA::MatrixManipulator的.
編寫自定義場景漫游操作器的主要步驟如下.
1)編寫一個繼承自 osgGA::GUIEventHandler類的新類,class TravelManipulator:public osgGA::MatrixManipulator.
2)重載函數handle()及相關矩陣變換函數,在handle()中添加合適的事件處理函數,并指定執行相關的動作.

在此函數中執行相關動作如:

3)進行碰撞檢測.本系統中使用一種簡單的碰撞檢測方法(圖1).

圖1 簡單碰撞檢測
碰撞檢測實現代碼如下:


4)關聯該操作器到當前視圖場景中,OSG不會自動啟動.該操作器代碼為

使用該漫游系統操作方便,仿真度高,在實際應用中獲得了較好的效果(圖2).
[1]丁建浩,王毅剛,潘志庚.采用大屏幕投影系統的虛擬河坊街漫游[J].杭州電子科技大學學報,2005,25(1):56-59.
[2]申閆春,朱幼虹,曹 莉,等.基于 OSG的三維仿真平臺的設計與實現[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].北京:清華大學出版社,2010:14-15,265-275.