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