2021-4-9 | 旅游類論文
一、虛擬環境中碰撞檢測的研究
為了增強真實性、增加沉浸感,虛擬旅游系統不僅要保證用戶能從視覺上如實地看到虛擬環境中的對象,同時也要能夠身臨其境的與其進行交互.如用戶進行觸摸、抓取動作時,虛擬系統中的事物要做出相應的反應.這就要求系統應該及時準確的檢測出這些碰撞,并給出對應的碰撞變化.使用NavigationInfo節點創建的替身可以進行碰撞檢測,常用的碰撞檢測方法有層次包圍盒法和空間剖分法.實際上,在虛擬旅游系統中,大部分的對象碰撞檢測無需太過精確,我們知道兩個或多人物體想要發生碰撞,至少其中一個物體是運動狀態的,因此我們只要對運動的物體進行碰撞檢測即可,這就大大降低了工作量和工作難度.本系統將2種常用的方法相結合,使用層次碰撞檢測的方法,將整個過程分為預處理、全局檢測和局部檢測3個階段.
1預處理階段
這一階段的工作是為虛擬旅游系統中的對象構造層次包圍盒樹,為碰撞檢測打好基礎.具體方法:每個虛擬對象元素最外層采用包圍球,以下各層采用軸對齊包圍盒.自頂向下地構造二叉樹.
2全局檢測階段
虛擬旅游系統中的場景、對象非常之多,我們可能利用空間剖分法對場景進行劃分.因為對于一個運動的物體來說,在某一個時間段內,它只會與它鄰近的物體發生碰撞.這樣就大大降低了碰撞檢測的次數.具體做法:使用均勻剖分法把虛擬場景劃分為一個a*b的矩陣,矩陣中的元素對應場景中的任一單位格.場景中的每一個對象看作一個質點,該質點的坐標就是該對象包圍球的球心坐標.使用這種方法,將場景的所有對象都歸入對應的單元格中.這樣,確定了一個單元格之后,該單元格中的所有對象也被隨之確定.對于一個運動物體來說,根據該對象的坐標就可以確定它所處的單元格,根據矩陣中元素之間的關系,再確定與之相鄰的單元格,進而確定該運動物體可能會與哪些物體發生碰撞.
3局部檢測階段
通過空間剖分方法我們將大多數遠處的碰撞對象已經過濾掉,局部檢測的主要工作就是對運動對象附近的物體進行碰撞檢測.局部檢測階段分為粗略檢測層和精確檢測層兩個部分.在粗略檢測層中,我們知道虛擬場景中運動對象的速度一般不會太快,在某一很短的時間片內,只有與之特別貼近的極少物體才會與之產生碰撞,而該運動對象所處單元格及鄰近單元格的大多數物體是不必發生碰撞的.因此,我們為該運動對象建立一個碰撞檢測空間如下圖1所示,即在某一時間片內那些特別貼近并可能發生碰撞的物體的集合,將碰撞檢測范圍進一步縮小.接下來,我們將進入碰撞檢測空間的對象的層次包圍盒樹的信息調入內存,進行精確的碰撞檢測,首先檢查兩物體最外層的包圍球是否相交,如果不相交,剛碰撞未發生.若相交,則進一步對兩物體的層次包圍盒二叉樹進行相交測試.
二、編程交互方法
在創建虛擬場景時,我們也可以使用Script節點和外部程序接口EAI來實現功能復雜的交互.
1內部Script節點
Script節點的基本功能是通過eventIn事件來接收其他節點發來的事件信息,在節點內部使用程序設計語言對其進行處理計算,然后再通過eventOut事件把信息回傳給Script節點,使節點發生預期的變化效果.Script節點的url域中定義一個URL列表,該列表的URL值指定程序設計語言.一般常用Java或JavaScript語言.Script節點將程序設計語言和場景中的傳感器、插補器聯系起來.通過程序設計語言控制傳感器和插補器,實現場景中的交互.
2外部編程接口EAI方法
EAI定義了針對X3D的Java類,通過創建Java小程序接收和發送虛擬場景中的節點的事件信息,達到用戶與虛擬場景進行溝通交互的目的.使用EAI方法創建的程序段可以與虛擬場景放在同一Web頁面中,Javaapplet與瀏覽器插件互相通信,使用戶真正的掌控虛擬場景,增強用戶與場景的交互程度.本文詳細地闡述虛擬旅游系統中交互技術的實現方法.虛擬旅游是現代計算機技術的全新產物,前景非常廣闊,它的成熟發展必將引領一種新的旅游風尚.
本文作者:劉學超 單位:淮北職業技術學院