王瑜
(鄖陽師范高等專科學(xué)?!『薄∈摺?42000)
虛擬漫游系統(tǒng)中碰撞檢測技術(shù)的研究與應(yīng)用
王瑜
(鄖陽師范高等專科學(xué)校湖北十堰442000)
在基于virtools設(shè)計和開發(fā)的虛擬漫游系統(tǒng)中,針對人物角色與場景中設(shè)定不能被穿越物體之間的碰撞檢測情況進(jìn)行分析并予以解決。當(dāng)人物角色在建筑模型內(nèi)行進(jìn)時碰撞檢測擬采用重力模擬的方法,與外部靜止的環(huán)境小品發(fā)生碰撞時要按物體的大小、形狀分別采用單獨(dú)碰撞檢測方法或網(wǎng)格碰撞檢測方法,而與運(yùn)動物體的碰撞檢測則需要加入相應(yīng)的滑動處理方式。實(shí)際應(yīng)用表明,完成各項功能的行為模塊組合簡潔高效,系統(tǒng)仿真度高,相關(guān)技術(shù)的實(shí)現(xiàn)也能為其他類似設(shè)計提供很好的參考價值。
Virtools;虛擬現(xiàn)實(shí);碰撞檢測;漫游系統(tǒng)
虛擬漫游是虛擬現(xiàn)實(shí)技術(shù)在復(fù)雜場景下最重要的應(yīng)用,它的設(shè)計與開發(fā)過程首先需要將現(xiàn)實(shí)生活中的自然環(huán)境、相關(guān)虛擬人物及場景物品通過3DS MAX、Maya等三維建模軟件在計算機(jī)中虛擬的重現(xiàn)出來,各類素材導(dǎo)入Virtools平臺后,利用其內(nèi)置超過500組的行為交互模塊Building Blocks(簡稱BB)[1],將這些3D模型、2D圖像、聲音、視頻等文件整合在一起構(gòu)成腳本,通過人機(jī)交互圖形界面,把這些BB模塊和對象(Object)、角色(Character)進(jìn)行關(guān)聯(lián),遵照先后順序以流程圖的形式?jīng)Q定BB模塊的執(zhí)行過程,從而完成三維實(shí)時瀏覽、實(shí)體變換、場景管理等復(fù)雜三維程序的開發(fā),最終逐漸編輯出一個完整的交互式虛擬漫游系統(tǒng)。
在虛擬漫游系統(tǒng)中,漫游是最核心的部分,漫游的角色需要與諸多相互獨(dú)立又相互關(guān)聯(lián)的物品模型之間產(chǎn)生交互行為,如躲避、跳躍,推拉、開關(guān)等,為了和現(xiàn)實(shí)中真實(shí)情況保持一致,在三維場景中如何檢測并預(yù)防漫游角色與場景中不能被穿越的物體之間的碰撞是角色在行進(jìn)過程中非常重要的工作,這個問題如果處理不妥當(dāng),就會出現(xiàn)角色隨便穿越墻壁或其他物品的情況發(fā)生,破壞模擬的真實(shí)性和可操作性,從而影響整個系統(tǒng)的仿真效果[2]。
以某小區(qū)虛擬漫游系統(tǒng)為例,漫游的角色為虛擬人物,則系統(tǒng)中不能被穿越的物體有很多,但大致可以分為3種,分別為建筑模型、靜止物體和運(yùn)動物體,建筑模型包括地面、墻壁等,靜止物體包括樹木、山石、路燈,室內(nèi)還包括家電、家具等,而運(yùn)動物體則包括在路上行駛的車輛、散步的行人、奔跑的小動物等。實(shí)際上在Virtools中本身已包含了“Collision Detection”、“Box Box Interaction”和“Face Face Interaction”等一套完整的碰撞檢測行為模塊[3]。其中,“Collision Detection”行為模塊是基于球形包圍盒的方法,是為兩個不規(guī)則物體之間發(fā)生碰撞檢測的;“Box Box Interaction”是基于立方體式包圍盒的方法,是為避免與大面積同類物體發(fā)生碰撞檢測的;而 “Face Face Interaction”是基于物體本身網(wǎng)格面的干涉判斷,可以為復(fù)雜形體提供較為準(zhǔn)確的碰撞檢測,這些模塊的功能各有側(cè)重,需要在實(shí)際使用過程中靈活運(yùn)用。
人物角色與建筑模型間的碰撞檢測實(shí)際上和重力的模擬有關(guān),相對于地面來說,角色在靜止時,給人的感覺要能始終能緊貼地面,而不是陷入其中或懸浮在上,當(dāng)角色行進(jìn)時,要注意防止其跌入地下;相對于墻壁來說,當(dāng)角色行進(jìn)時要避免其穿墻而過甚至騰空行走。這兩種碰撞檢測看似不同,但原理一樣,區(qū)別只在于個別模塊屬性添加對象的不同而已。
要解決人物角色在行進(jìn)過程中不掉到地下或穿墻而過,首先要對人物角色進(jìn)行約束,需要在其腳本環(huán)境中加入“Enhanced Character Keep On Floor”行為模塊,該行為模塊是對人物角色在地面上的增強(qiáng)設(shè)置,添加以后即可發(fā)現(xiàn)人物雙腳能緊貼地板了。同時由于在對建筑使用3DS MAX進(jìn)行建模時,出于后期貼圖或渲染的需要,一定范圍內(nèi)的地板一般來說應(yīng)該是一個整體,接著要在Attribute Manager面板里找到地面管理器Floor Manager里的Floor屬性,并將該屬性直接拖至地板上去,這樣就可以解決角色處于靜止?fàn)顟B(tài)時可能出現(xiàn)的問題,可保證其在所有地板上站立時均緊貼地面,不會陷入其中或懸浮之上。但僅僅這樣設(shè)置并不能保證人物角色在其他范圍如樓梯平臺等地方站立時不會掉入地面以下,所以還需要對“Enhanced Character Keep On Floor”行為模塊進(jìn)行參數(shù)設(shè)置,雙擊打開其參數(shù)面板,將其中保持地面邊界屬性Keep In Floor Boundary叉選,這樣人物角色在任何地面上都不會掉下去了[4]。而人物角色由高往低行走時出現(xiàn)的騰空現(xiàn)象,則是因為模型本身沒有質(zhì)量而引起的,要解決這個問題則需要修改“Enhanced Character Keep On Floor”行為模塊參數(shù)設(shè)置中的Weight屬性,在該屬性中為人物角色添加一定的重量即可解決。
同理,角色與墻壁間的碰撞檢測方法與地面的碰撞檢測方法相同,穿墻不過實(shí)際就是不跌入地面,而墻壁與地面都屬于大面積相同區(qū)域,其建模方法往往差別不大,在對所有墻壁進(jìn)行同樣的設(shè)置以后,即可保證人物角色不會穿墻行走。需要注意的是,在Virtools中,叉選表示選中,不叉選表示未選中,相關(guān)屬性設(shè)置更改如圖1所示。
圖1 Enhanced Character Keep On Floor模塊屬性編輯窗口
在小區(qū)虛擬漫游系統(tǒng)中所指的靜止模型就是指組成小區(qū)基本場景所需的各種物體,包括室內(nèi)物品及室外樹木、路燈和其他建筑物等環(huán)境小品等。根據(jù)這些物體不同的情況,需要采用不同的碰撞檢測方式,如對大塊成片的或是具有規(guī)則形狀的環(huán)境小品可采用單獨(dú)碰撞檢測方法或網(wǎng)格碰撞檢測方法,而對于其他不規(guī)則的物體可采用組合碰撞檢測中的滑動處理方式[5]。
對于大片成塊的樹木、水體、建筑物及室內(nèi)規(guī)則物品來說,碰撞檢測需要解決的問題就是要避免人物角色在行進(jìn)過程中與之發(fā)生穿越,與之前避免與墻壁發(fā)生穿越的情況略有不同,對于人物角色來說,除必要的模塊及屬性設(shè)置以外,還需將Building Blocks的Collisions中的“Prevent Collision”行為模塊加入到人物角色的腳本設(shè)計中,該模塊能夠?qū)θ宋锝巧鸬椒乐古鲎驳淖饔茫瑫r對于可能與人物角色有近距離接觸的場景模型,如建筑物、家電、家具等,需要對其添加碰撞管理器Collision Manager里的Fixed Obstacle屬性,用于表示該物體屬于固定障礙,且與人物角色發(fā)生碰撞時不能被穿越。最后,對于大片成塊的樹木、水體來說,要防止人物角色與之發(fā)生碰撞,最好在場景中使用Grid(網(wǎng)格)的辦法將人物角色不能行走的區(qū)域標(biāo)定為障礙物屬性,用來限制漫游范圍,如此類模型較多,還可以對人物角色添加“Layer Slider”行為模塊用于阻止其進(jìn)入未定義的區(qū)域?qū)?,網(wǎng)格創(chuàng)建及設(shè)置如圖2所示。
圖2 網(wǎng)格創(chuàng)建屬性設(shè)置
小區(qū)內(nèi)除規(guī)則物體以外,大多數(shù)物體如綠化帶、路燈、休閑景觀等不僅數(shù)量眾多,形狀也不規(guī)則,這些是不能直接用行為模塊來檢測碰撞的,解決的辦法可以用滑動處理方式[6]。這種方式操作對象以群組模型為主,可以先在Virtools的層次管理器Level Manager中對照開始建模生成的各種元素,依次把這些物品全部選出,然后單擊鼠標(biāo)右鍵選擇Create Group把這些物品進(jìn)行分類群組,每個組代表一類不規(guī)則的障礙物,并對其添加Fixed Obstacle屬性,與些同時,還要對人物角色再添加“Object Slider”行為模塊,設(shè)置其中的Group參數(shù)為之前添加過固定障礙屬性的各模組,這樣人物在行進(jìn)中只要遇到此類物品均可自然避開,相關(guān)屬性設(shè)置如圖3所示。
圖3 滑動模塊參數(shù)編輯窗口
虛擬漫游系統(tǒng)往往都會加入一些運(yùn)動著的物體,如正在行駛的車輛、散步的行人或正在奔跑的小動物等,用來提高用戶體驗時的趣味性和沉浸感。人物角色與場景中運(yùn)動物體間的碰撞檢測和之前躲避不規(guī)則物體設(shè)置方法類似,還是要先利用Virtools的層次管理器Level Manager把需要躲避碰撞的運(yùn)動物體全部選中,然后用鼠標(biāo)單擊右鍵建立成一個群組Group并為之命名,但不同的是,此時除了要為人物角色添加“Object Slider”行為模塊并設(shè)置相關(guān)屬性之外,還要繼續(xù)添加“Set Attribute”行為模塊和“Moving Obstacle”行為模塊,因為實(shí)際上人物角色本身就是一個運(yùn)動物體,建立的群組必須要賦于Obstacle Type屬性,最后還要將“Object Slider”對象滑動行為模塊拖至人物角色的腳本之中雙擊打開其參數(shù)編輯窗口,把其中的碰撞對象屬性設(shè)置為新建的群組,這樣就可以完成運(yùn)動物體之間相互的碰撞檢測,相關(guān)人物角色的腳本和參數(shù)設(shè)計如圖4所示。
圖4 腳本和參數(shù)設(shè)計
虛擬現(xiàn)實(shí)在當(dāng)前軍事、教育、科研、影視等多個方面有著極其廣泛的應(yīng)用,通過對基于Virtools的虛擬漫游系統(tǒng)的設(shè)計與開發(fā),對人物角色與場景中設(shè)定不能被穿越物體之間的碰撞檢測情況進(jìn)行分類,歸納出各模塊組之間的聯(lián)系,找出其中的關(guān)鍵問題并予以解決,經(jīng)實(shí)驗證明該方法簡潔高效,可為今后相關(guān)領(lǐng)域的研究和發(fā)展提供一定的參考價值。
[1]彭玉元,姜林暉.基于virtools的三維虛擬校園漫游系統(tǒng)的實(shí)現(xiàn)[J].廣西工學(xué)院學(xué)報,2009,20(4):60-64.
[2]曾魯山,曾凡明,劉金林.基于CATIA和VIRTOOLS技術(shù)的虛擬機(jī)艙漫游研究[J].中國艦船研究,2008,3(5):62-64,80.
[3]張慶洪,張桂香.汽車性能虛擬測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].電子測量與儀器學(xué)報,2013,27(11):1047-1053.
[4]謝吉剛.基于virtools的虛擬場景漫游系統(tǒng)的碰撞技術(shù)應(yīng)用[J].電腦開發(fā)與應(yīng)用,2012,25(1):35-36,39.
[5]彭巧梅,彭雙根,陳玉德.基于virtools的碰撞檢測技術(shù)的研究與應(yīng)用[J].佳木斯大學(xué)學(xué)報:自然科學(xué)版,2007,25(3):325-326,329.
[6]張艷.基于virtools的虛擬校園漫游系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].蚌埠學(xué)院學(xué)報,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
湖北省教育廳科學(xué)技術(shù)研究項目(B2015437)
王 瑜(1980—),男,湖北十堰人,碩士,副教授。研究方向:計算機(jī)應(yīng)用、虛擬現(xiàn)實(shí)。