国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

3D游戲中碰撞檢測技術(shù)研究

2015-05-08 07:09:20葉麗娜
電腦知識與技術(shù) 2015年7期
關(guān)鍵詞:碰撞檢測

葉麗娜

摘要:本文首先介紹了碰撞檢測的基本原理及常用的幾種碰撞檢測方法,并對它們做出比較,指出其優(yōu)缺點,最后提出基于包圍球的快速碰撞檢測優(yōu)化算法,并在此基礎(chǔ)上實現(xiàn)了一個簡單的應(yīng)用碰撞檢測技術(shù)的實例Demo。

關(guān)鍵詞:碰撞檢測;軸向包圍盒;方向包圍盒;離散方向多面體

中圖分類號:TP37 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)07-0220-02

Abstract: This paper first introduces the basic principle of collision detection and collision of several commonly used detection method, and make comparison of them, and point out the advantages and disadvantages, finally put forward a fast collision detection algorithm based on optimal bounding sphere, and on this basis, the realization of a simple application of collision detection technology is an instance of Demo.

Key words:Collision detection;AABB;OBB;K-DOP

技術(shù)的進(jìn)步以及人們對游戲體驗的不斷苛求和升級,對游戲環(huán)境尤其是三維場景的構(gòu)建提出了更大的挑戰(zhàn)。在現(xiàn)實生活中,碰撞總是自然而然的發(fā)生著,比如踢足球、打籃球的時候,我們總是需要控制球的方向和力度等。自從3D游戲出現(xiàn)以來,程序員就不斷為模擬更精確的現(xiàn)實世界而努力。為了更加逼真地模擬真實環(huán)境,開發(fā)出現(xiàn)場感體驗感更強的優(yōu)質(zhì)游戲,就必須要將客觀實際中存在的各種物理規(guī)律現(xiàn)象融入到整個游戲開發(fā)過程中,在這其中大部分的游戲離不開碰撞檢測,這其中不管是物體與場景之間的碰撞檢測,還是物體與物體之間的碰撞檢測,碰撞檢測技術(shù)便是諸多最為關(guān)鍵的問題之一。當(dāng)我們在游戲進(jìn)行中出現(xiàn)飛向墻壁的小球穿墻而過,或是是駕駛的汽車與障礙物出現(xiàn)干涉時,就會大大降低游戲體驗的真實感,由此可見,碰撞檢測技術(shù)確實成為游戲場景開發(fā)中的一項重要課題,而針對該項技術(shù)國外多家知名游戲開發(fā)商早已著手開展了相關(guān)技術(shù)的探索工作。

1 碰撞檢測的基本原理

碰撞檢測是檢測虛擬物體之間是否發(fā)生干涉,是虛擬現(xiàn)實技術(shù)中的關(guān)鍵問題之一,它是判斷圖形連同虛擬場景滿足時空的一致性定律的條件,即對游戲場景中的出現(xiàn)對象間的相對關(guān)系進(jìn)行判定以決定是否觸發(fā)新的相應(yīng)游戲事件,簡單來講,就是多面體間的相交測試問題。而3D游戲中的碰撞檢測比2D游戲中的碰撞檢測要復(fù)雜得多。

在3D游戲開發(fā)過程中最常見的情況是一個或一些在靜態(tài)環(huán)境中運動的物體。以下三種情況一般由碰撞檢測所描述:檢測碰撞連接點和對碰撞響應(yīng)建模;檢測兩個物體之間的碰撞;檢測碰撞發(fā)生和連接點的精確度。

從渲染角度來說,第一種描述需要一個動態(tài)模型,若兩個物體渲染的位置重疊,即發(fā)生了碰撞;而后面兩種情況則屬于幾何操作。

2 基于層次包圍盒的碰撞檢測法

2.2.1軸向包圍盒(AABB)檢測法的基本原理

一個3D的AABB就是簡單的六面體,每一邊都平行于一個坐標(biāo)平面,而矩形邊界框不一定都是立方體,它的長、寬、高可以彼此不同。這種方法相對簡單,從二維的碰撞檢測降到一維空間操作,當(dāng)兩個AABB包圍盒相交時,當(dāng)且僅當(dāng)它們在X軸、Y軸和Z軸上的投影均重疊,只要存在一個方向上的投影不重疊,那么它們就不相交。AABB間的相交測試和包圍體的更新速度是最快的,因此使用最廣泛,尤其適用于多物體運動的大規(guī)模環(huán)境和變形體碰撞檢測。

2.2.2方向包圍盒(OBB)檢測法的基本原理

OBB的相交測試是基于分離軸的理論的,它被定義為包含該對象且相對于坐標(biāo)軸方向任意的正六面體。它的最佳方向必須保證在該方向上包圍盒的尺寸最小,這樣就形成了一個物內(nèi)劃分。由于其方向的任意性,較好的緊密性,在執(zhí)行碰撞查詢時,可能只需要遍歷更少的樹層次,其重疊檢測速度更快,大大提高了算法的效率。

2.2.3 離散方向多面體(k-DOP)檢測法的基本原理

k-DOP的概念最早由Kajiya和Kay二人提出,使用k/2對的平行平面來包圍物體,它是AABB的推廣。這種方法的優(yōu)勢在于增加AABB的包圍效率,與此同時保留它相對于OBB的優(yōu)勢。通過調(diào)整k的取值,可以在簡單性、緊密性中達(dá)到一定的折衷,從而提高碰撞檢測的效率,這樣就能滿足一個高效的場景層次結(jié)構(gòu)應(yīng)具有的條件。

2.2.4 AABB、OBB、K-DOP檢測方法比較

AABB法被用作模型的包圍盒時,雖然相交測試較簡單但緊密性差,且跟隨性差,運算量大,這將極大的減慢應(yīng)用的速度,此外該方法仍面臨著精度的問題。OBB法同樣需要進(jìn)行大量的計算,且速度慢,不適用于動態(tài)對象的檢測。采用OBB方法的另一個缺點是需要進(jìn)行大量的矩陣運算。K-DOP方法則介于前述兩種方法之間的一種方法,其特點是只要合理地選取平行平面對的個數(shù)和方向,就可以在檢測的簡單性和包裹物體的緊密性之間靈活取舍,但計算量仍然很大,且對于平行平面對的選取更是一個難點問題,在使用該方法對于動態(tài)環(huán)境下復(fù)雜虛擬場景中多虛擬對象之間的碰撞檢測問題還是顯得效率低下。

3 算法優(yōu)化及其運行結(jié)果

鑒于對以上各種包圍盒體測試方法的比較,本文的做法是在對多面體進(jìn)行碰撞檢測時采用一個球體包裹每一對象或?qū)ο蟮囊徊糠郑缓髾z測這些球體是否相交。此方法計算的代價較低。包圍球法雖然算法簡單,但是在遇到動態(tài)環(huán)境下復(fù)雜虛擬游戲場景中多虛擬對象之間的碰撞檢測問題時同樣給該處理器帶來了不小的計算負(fù)荷?;诖吮疚膶υ摲椒ㄟM(jìn)行了如下優(yōu)化:

1)過濾法:

此種優(yōu)化是邏輯上的,即使用檢測范圍的概念。本文在開發(fā)引擎代碼時在為不同多面體包圍球設(shè)計數(shù)據(jù)結(jié)構(gòu)時在其中加入了一個布爾型標(biāo)志位,首先在幀與幀之間檢測該包圍球體的空間位置是否發(fā)生了變化,這種檢測只需通過計算包圍球體的三維坐標(biāo)是否發(fā)生了變化,僅涉及到加法、減法的計算并不會給處理器帶來較大的額外負(fù)擔(dān),但卻十分有效。

2)公式優(yōu)化法:

以二維圖形為例,如圖1所示在A物體的外圍畫一個圓,作為檢測碰撞的邊線,任何物體是否與其發(fā)生了碰撞,都用圓心與圓心的距離來判斷,當(dāng)兩個圓心的距離等于或者小于2個物體碰撞圓周的半徑之和時,就說明這兩個物體發(fā)生了碰撞。如B和C兩個物體,當(dāng)它們圓心的距離等于兩個半徑的和的時候,也就是兩個碰撞檢測的圓相切的時候,這時我們判斷這兩個物體碰撞了。

參考文獻(xiàn):

[1] Earnshaw R A, Gigante M A, Jones H. Virtual Reality Systems [M].Academic Press Limited 24/28,Oval Road London NW1 7DX,1993,135-237.

[2] 王志強等. 碰撞檢測問題研究綜述[J]. 軟件學(xué)報,1999,10(5):545-551.

[3] ChristerEricson實時碰撞檢測算法技術(shù)[M].劉天慧譯.北京:清華大學(xué)出版社,2010

[4] 趙偉,譚睿璞,李勇.復(fù)雜虛擬環(huán)境下的實時碰撞檢測算法[J].系統(tǒng)仿真學(xué)報,2010

猜你喜歡
碰撞檢測
基于動力學(xué)補償?shù)臋C器人電機力矩誤差碰撞檢測
全新預(yù)測碰撞檢測系統(tǒng)
基于BIM的鐵路信號室外設(shè)備布置與碰撞檢測方法
Unity3D中碰撞檢測問題的研究
電子測試(2018年1期)2018-04-18 11:53:00
基于Virtools的虛擬滅火系統(tǒng)碰撞檢測設(shè)計與實現(xiàn)
空間遙操作預(yù)測仿真快速圖形碰撞檢測算法
BIM技術(shù)下的某辦公樓項目管線碰撞檢測
雙臂鉆車鉆臂與巷道的碰撞檢測方法研究
基于分層包圍盒的線纜與剛性體碰撞檢測算法
碰撞檢測在三維場景漫游中的研究與實現(xiàn)
新安县| 轮台县| 怀宁县| 枞阳县| 曲靖市| 宁国市| 广安市| 鸡西市| 横山县| 全椒县| 湖北省| 五原县| 嘉鱼县| 甘洛县| 彝良县| 盐津县| 陇川县| 莎车县| 志丹县| 吴堡县| 平昌县| 镇平县| 利津县| 修武县| 海门市| 武威市| 崇左市| 永和县| 星座| 靖西县| 铜陵市| 锡林浩特市| 太原市| 申扎县| 高阳县| 嘉定区| 巨野县| 东源县| 封丘县| 聊城市| 宜春市|