?

虛擬漫游系統中碰撞檢測技術的研究與應用

2016-09-08 09:23王瑜
電子設計工程 2016年13期
關鍵詞:碰撞檢測漫游物體

王瑜

(鄖陽師范高等??茖W?!『薄∈摺?42000)

虛擬漫游系統中碰撞檢測技術的研究與應用

王瑜

(鄖陽師范高等??茖W校湖北十堰442000)

在基于virtools設計和開發的虛擬漫游系統中,針對人物角色與場景中設定不能被穿越物體之間的碰撞檢測情況進行分析并予以解決。當人物角色在建筑模型內行進時碰撞檢測擬采用重力模擬的方法,與外部靜止的環境小品發生碰撞時要按物體的大小、形狀分別采用單獨碰撞檢測方法或網格碰撞檢測方法,而與運動物體的碰撞檢測則需要加入相應的滑動處理方式。實際應用表明,完成各項功能的行為模塊組合簡潔高效,系統仿真度高,相關技術的實現也能為其他類似設計提供很好的參考價值。

Virtools;虛擬現實;碰撞檢測;漫游系統

虛擬漫游是虛擬現實技術在復雜場景下最重要的應用,它的設計與開發過程首先需要將現實生活中的自然環境、相關虛擬人物及場景物品通過3DS MAX、Maya等三維建模軟件在計算機中虛擬的重現出來,各類素材導入Virtools平臺后,利用其內置超過500組的行為交互模塊Building Blocks(簡稱BB)[1],將這些3D模型、2D圖像、聲音、視頻等文件整合在一起構成腳本,通過人機交互圖形界面,把這些BB模塊和對象(Object)、角色(Character)進行關聯,遵照先后順序以流程圖的形式決定BB模塊的執行過程,從而完成三維實時瀏覽、實體變換、場景管理等復雜三維程序的開發,最終逐漸編輯出一個完整的交互式虛擬漫游系統。

在虛擬漫游系統中,漫游是最核心的部分,漫游的角色需要與諸多相互獨立又相互關聯的物品模型之間產生交互行為,如躲避、跳躍,推拉、開關等,為了和現實中真實情況保持一致,在三維場景中如何檢測并預防漫游角色與場景中不能被穿越的物體之間的碰撞是角色在行進過程中非常重要的工作,這個問題如果處理不妥當,就會出現角色隨便穿越墻壁或其他物品的情況發生,破壞模擬的真實性和可操作性,從而影響整個系統的仿真效果[2]。

以某小區虛擬漫游系統為例,漫游的角色為虛擬人物,則系統中不能被穿越的物體有很多,但大致可以分為3種,分別為建筑模型、靜止物體和運動物體,建筑模型包括地面、墻壁等,靜止物體包括樹木、山石、路燈,室內還包括家電、家具等,而運動物體則包括在路上行駛的車輛、散步的行人、奔跑的小動物等。實際上在Virtools中本身已包含了“Collision Detection”、“Box Box Interaction”和“Face Face Interaction”等一套完整的碰撞檢測行為模塊[3]。其中,“Collision Detection”行為模塊是基于球形包圍盒的方法,是為兩個不規則物體之間發生碰撞檢測的;“Box Box Interaction”是基于立方體式包圍盒的方法,是為避免與大面積同類物體發生碰撞檢測的;而 “Face Face Interaction”是基于物體本身網格面的干涉判斷,可以為復雜形體提供較為準確的碰撞檢測,這些模塊的功能各有側重,需要在實際使用過程中靈活運用。

1 人物角色與建筑模型間的碰撞檢測

人物角色與建筑模型間的碰撞檢測實際上和重力的模擬有關,相對于地面來說,角色在靜止時,給人的感覺要能始終能緊貼地面,而不是陷入其中或懸浮在上,當角色行進時,要注意防止其跌入地下;相對于墻壁來說,當角色行進時要避免其穿墻而過甚至騰空行走。這兩種碰撞檢測看似不同,但原理一樣,區別只在于個別模塊屬性添加對象的不同而已。

要解決人物角色在行進過程中不掉到地下或穿墻而過,首先要對人物角色進行約束,需要在其腳本環境中加入“Enhanced Character Keep On Floor”行為模塊,該行為模塊是對人物角色在地面上的增強設置,添加以后即可發現人物雙腳能緊貼地板了。同時由于在對建筑使用3DS MAX進行建模時,出于后期貼圖或渲染的需要,一定范圍內的地板一般來說應該是一個整體,接著要在Attribute Manager面板里找到地面管理器Floor Manager里的Floor屬性,并將該屬性直接拖至地板上去,這樣就可以解決角色處于靜止狀態時可能出現的問題,可保證其在所有地板上站立時均緊貼地面,不會陷入其中或懸浮之上。但僅僅這樣設置并不能保證人物角色在其他范圍如樓梯平臺等地方站立時不會掉入地面以下,所以還需要對“Enhanced Character Keep On Floor”行為模塊進行參數設置,雙擊打開其參數面板,將其中保持地面邊界屬性Keep In Floor Boundary叉選,這樣人物角色在任何地面上都不會掉下去了[4]。而人物角色由高往低行走時出現的騰空現象,則是因為模型本身沒有質量而引起的,要解決這個問題則需要修改“Enhanced Character Keep On Floor”行為模塊參數設置中的Weight屬性,在該屬性中為人物角色添加一定的重量即可解決。

同理,角色與墻壁間的碰撞檢測方法與地面的碰撞檢測方法相同,穿墻不過實際就是不跌入地面,而墻壁與地面都屬于大面積相同區域,其建模方法往往差別不大,在對所有墻壁進行同樣的設置以后,即可保證人物角色不會穿墻行走。需要注意的是,在Virtools中,叉選表示選中,不叉選表示未選中,相關屬性設置更改如圖1所示。

圖1 Enhanced Character Keep On Floor模塊屬性編輯窗口

2 人物角色與靜止模型間的碰撞檢測

在小區虛擬漫游系統中所指的靜止模型就是指組成小區基本場景所需的各種物體,包括室內物品及室外樹木、路燈和其他建筑物等環境小品等。根據這些物體不同的情況,需要采用不同的碰撞檢測方式,如對大塊成片的或是具有規則形狀的環境小品可采用單獨碰撞檢測方法或網格碰撞檢測方法,而對于其他不規則的物體可采用組合碰撞檢測中的滑動處理方式[5]。

對于大片成塊的樹木、水體、建筑物及室內規則物品來說,碰撞檢測需要解決的問題就是要避免人物角色在行進過程中與之發生穿越,與之前避免與墻壁發生穿越的情況略有不同,對于人物角色來說,除必要的模塊及屬性設置以外,還需將Building Blocks的Collisions中的“Prevent Collision”行為模塊加入到人物角色的腳本設計中,該模塊能夠對人物角色起到防止碰撞的作用,同時對于可能與人物角色有近距離接觸的場景模型,如建筑物、家電、家具等,需要對其添加碰撞管理器Collision Manager里的Fixed Obstacle屬性,用于表示該物體屬于固定障礙,且與人物角色發生碰撞時不能被穿越。最后,對于大片成塊的樹木、水體來說,要防止人物角色與之發生碰撞,最好在場景中使用Grid(網格)的辦法將人物角色不能行走的區域標定為障礙物屬性,用來限制漫游范圍,如此類模型較多,還可以對人物角色添加“Layer Slider”行為模塊用于阻止其進入未定義的區域層,網格創建及設置如圖2所示。

圖2 網格創建屬性設置

小區內除規則物體以外,大多數物體如綠化帶、路燈、休閑景觀等不僅數量眾多,形狀也不規則,這些是不能直接用行為模塊來檢測碰撞的,解決的辦法可以用滑動處理方式[6]。這種方式操作對象以群組模型為主,可以先在Virtools的層次管理器Level Manager中對照開始建模生成的各種元素,依次把這些物品全部選出,然后單擊鼠標右鍵選擇Create Group把這些物品進行分類群組,每個組代表一類不規則的障礙物,并對其添加Fixed Obstacle屬性,與些同時,還要對人物角色再添加“Object Slider”行為模塊,設置其中的Group參數為之前添加過固定障礙屬性的各模組,這樣人物在行進中只要遇到此類物品均可自然避開,相關屬性設置如圖3所示。

圖3 滑動模塊參數編輯窗口

3 人物角色與運動物體間的碰撞檢測

虛擬漫游系統往往都會加入一些運動著的物體,如正在行駛的車輛、散步的行人或正在奔跑的小動物等,用來提高用戶體驗時的趣味性和沉浸感。人物角色與場景中運動物體間的碰撞檢測和之前躲避不規則物體設置方法類似,還是要先利用Virtools的層次管理器Level Manager把需要躲避碰撞的運動物體全部選中,然后用鼠標單擊右鍵建立成一個群組Group并為之命名,但不同的是,此時除了要為人物角色添加“Object Slider”行為模塊并設置相關屬性之外,還要繼續添加“Set Attribute”行為模塊和“Moving Obstacle”行為模塊,因為實際上人物角色本身就是一個運動物體,建立的群組必須要賦于Obstacle Type屬性,最后還要將“Object Slider”對象滑動行為模塊拖至人物角色的腳本之中雙擊打開其參數編輯窗口,把其中的碰撞對象屬性設置為新建的群組,這樣就可以完成運動物體之間相互的碰撞檢測,相關人物角色的腳本和參數設計如圖4所示。

圖4 腳本和參數設計

4 結束語

虛擬現實在當前軍事、教育、科研、影視等多個方面有著極其廣泛的應用,通過對基于Virtools的虛擬漫游系統的設計與開發,對人物角色與場景中設定不能被穿越物體之間的碰撞檢測情況進行分類,歸納出各模塊組之間的聯系,找出其中的關鍵問題并予以解決,經實驗證明該方法簡潔高效,可為今后相關領域的研究和發展提供一定的參考價值。

[1]彭玉元,姜林暉.基于virtools的三維虛擬校園漫游系統的實現[J].廣西工學院學報,2009,20(4):60-64.

[2]曾魯山,曾凡明,劉金林.基于CATIA和VIRTOOLS技術的虛擬機艙漫游研究[J].中國艦船研究,2008,3(5):62-64,80.

[3]張慶洪,張桂香.汽車性能虛擬測試系統的設計與實現[J].電子測量與儀器學報,2013,27(11):1047-1053.

[4]謝吉剛.基于virtools的虛擬場景漫游系統的碰撞技術應用[J].電腦開發與應用,2012,25(1):35-36,39.

[5]彭巧梅,彭雙根,陳玉德.基于virtools的碰撞檢測技術的研究與應用[J].佳木斯大學學報:自然科學版,2007,25(3):325-326,329.

[6]張艷.基于virtools的虛擬校園漫游系統的設計與實現[J].蚌埠學院學報,2012,8:4-7.

Collision detection in virtual roaming system technology research and application

WANG Yu
(YunYang Teacher's College,Shiyan 442000,China)

In the virtual roaming system based on Virtools design and development,the analysis of the collision detection between the characters and scenes in the scene can not be carried out.When the characters are in the building model,the method of gravity simulation is used in the collision detection,and the collision detection method based on the object's size and shape,and the collision detection method is used to add the corresponding sliding mode.The practical application shows that the performance of various functions is simple and efficient,and the system simulation is high,and the implementation of related technology can also provide a good reference value for other similar designs.

virtools;virtual reality;collision detection;roaming system

TP319

A

1674-6236(2016)13-0155-02

2015-10-21稿件編號:201510143

湖北省教育廳科學技術研究項目(B2015437)

王 瑜(1980—),男,湖北十堰人,碩士,副教授。研究方向:計算機應用、虛擬現實。

猜你喜歡
碰撞檢測漫游物體
全新預測碰撞檢測系統
深刻理解物體的平衡
基于BIM的鐵路信號室外設備布置與碰撞檢測方法
我們是怎樣看到物體的
霹靂漫游堂
NASA漫游記
空間遙操作預測仿真快速圖形碰撞檢測算法
BIM技術下的某辦公樓項目管線碰撞檢測
為什么同一物體在世界各地重量不一樣?
懸浮的雞蛋
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合