《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > Android手持設備游戲中的碰撞檢測算法研究
Android手持設備游戲中的碰撞檢測算法研究
來源:微型機與應用2013年第14期
羅 軍1, 李紹文2
(1. 桂林電子科技大學 電子工程與自動化學院, 廣西 桂林 541004; 2. 桂林電子科技大學
摘要: 針對Android手持終端中復雜游戲場景的碰撞檢測需求,提出了一種基于包圍球和AABB的實時碰撞檢測算法。該算法針對不同的虛擬對象構建不同的包圍盒,并將改進后的包圍盒投影排序分組方法應用其中。將該算法與使用包圍盒投影排序分組方法的包圍球算法與AABB算法比較,實驗表明,該算法在保持更高精度的前提下仍能滿足復雜場景中實時碰撞檢測的要求。
Abstract:
Key words :

摘 要: 針對Android手持終端中復雜游戲場景的碰撞檢測需求,提出了一種基于包圍球AABB的實時碰撞檢測算法。該算法針對不同的虛擬對象構建不同的包圍盒,并將改進后的包圍盒投影排序分組方法應用其中。將該算法與使用包圍盒投影排序分組方法的包圍球算法與AABB算法比較,實驗表明,該算法在保持更高精度的前提下仍能滿足復雜場景中實時碰撞檢測的要求。
關鍵詞: Android ;碰撞檢測;包圍球;AABB

    隨著移動互聯網的高速發展和快速普及,以及以ARM Cortex-A8、Cortex-A9為代表的高端嵌入式芯片的飛速發展,智能手機、平板電腦等手持PDA已經進入每一個人的生活,并且其性能越來越強大?;贏ndroid的高端消費類電子產品更是以其開源性和通用性受到廣大消費者的青睞。游戲無疑是這些手持設備的一個重要應用,而且不是傳統的簡單2D游戲,而是越來越復雜的3D游戲,甚至是移植的PC經典游戲,如實況足球、極品飛車、CS等。為了使游戲更加逼真,場景中對象間的實時碰撞檢測[1]是一個必須要解決的問題。但是當前手持設備的3D游戲規模越來越龐大,場景越來越復雜,如何快速精確地實現移動手持設備中復雜游戲場景的實時碰撞檢測已經成為當前的研究熱點之一。
    在游戲場景中,一般采用各種包圍盒算法來替代對象進行相交測試,但假設游戲場景中有D個動態對象和S個靜態對象,如果直接用兩對象的包圍盒進行碰撞檢測,則必須經過CD2+DS次檢測才能最終確定整個場景的碰撞情況,當D和S都較大時,這將是一個龐大的計算量,從而嚴重影響游戲場景的實時性和真實性?;贚in-Canny[2-4]算法的I-Collide[4-5]算法庫是一種經典的實時碰撞檢測算法,它使用一維區間排序法快速排除不相交的對象對,從而大大減少了精確求交的計算量。由于游戲場景對實時性的要求比較高,本文在I-Collide算法庫及其改進算法的基礎上提出了一種基于包圍球[1]和軸對稱包圍盒(AABB)[1]的快速碰撞檢測算法。
1 算法描述
1.1 I-Collide算法庫及其改進算法概述

     三維空間的包圍盒間相交測試,常常是把包圍盒投影到坐標軸上轉化為一維或二維來處理,即通過降低維度來提高檢測的效率?;贏ABB的經典I-Collide算法庫采用的是一維空間排序法,即將AABB投影到某一坐標軸上,如圖1所示,然后使用插入排序法對投影列表排序確定包圍盒的交疊情況,從而將沒有相交的包圍盒快速略去。I-Collide算法庫比以往的其他碰撞檢測算法更加高效,但它忽略了碰撞檢測的局部性,將排序后的所有包圍盒兩兩進行相交測試。董峰等[2]對該排序算法進行了改進,使用二維投影排序的方法,即將所有物體的包圍盒投影到x-y坐標面,然后用矩形排序算法進行篩選,最后驗證交迭的矩形對在z軸上的相交情況。王曉榮[5]又進行了改進,她不僅把包圍盒投影到二維x-y平面,而且采用了效率更高的希爾排序法對投影序列實時排序,并將坐標軸劃分為一系列包含相同數目的投影子段(如果投影區間數不能被均勻劃分,讓最后一個子段的投影區間數小于前面每個子段中的投影區間數,且前面的每個投影子段包含的投影區間數應相同)。

1.2 算法改進
     隨著虛擬場景的實時更新,如果每次都用希爾排序法對所有包圍盒實時排序,會消耗大量的時間,從而降低算法的效率。如圖2所示,本文對比進行了改進,使用了排序效率更高的堆排序法對某一軸上的投影序列排序,并將初次劃分后投影子段(該文中稱之為“組”)的邊界固定,之后將運動對象更新后包圍盒的投影值與之前包圍盒所在組的邊界值進行比較,如果仍在邊界之內,則繼續留在本組內,否則,與下一組的邊界值比較,依次類推,直到找到新的歸屬組;然后在每組內使用堆排序法對投影值進行實時排序,快速排除沒有交疊的對象對;最后,對交疊的對象對(其中至少有一個對象是動態的)進行相交測試。其實,在很短的時間間隔內包圍盒的位移量是有限的,因此,包圍盒分組時往往只要與本組及相鄰組進行比較即可。這樣隨著場景的實時更新,很可能某些組所包含的對象全部都是靜態的,因而整個組都可以不用進行相交測試了。即:相交測試只在有動態對象存在的組內進行,這大大提高了檢測的效率。

 該算法需要注意以下問題:(1)當某一包圍盒的一部分已進入新的投影子段,而另一部分仍然留在原投影子段時(如圖2中虛線框圖所示),包圍盒在兩個投影子段所屬組都需參與碰撞檢測。并且當某兩個相交對象在坐標軸劃分階段都被分為兩個部分、當對兩個對象左邊部分對應的x軸和y軸子列表進行相交測試時,已經知道兩對象重疊,算法就不再對兩個對象的右邊部分的投影進行相交測試,從而減少了算法的執行時間。(2)如果場景中有體積非常大的物體,在執行碰撞檢測之前必須先將物體分解為體積較小的子塊,再將各子塊分別進行碰撞測試。
1.3 新算法描述
    由于游戲場景中幾何物體的形狀各異,不同對象用不同的包圍盒來近似模擬時會出現截然不同的效果,不合理使用包圍盒會使碰撞檢測效率大幅降低。例如,一個球體如果用AABB來模擬,會出現較大的誤差;而一個長條形物體用包圍球模擬,碰撞檢測的精度也會很差。一種好的碰撞檢測系統應該根據不同對象的形狀特征提供不同的解決方案。因此,本文用包圍球來模擬近似球狀的對象,其余的對象都用AABB代替參與相交測試,并將上述改進后的包圍盒投影排序分組算法應用在該算法中,從而快速完成場景的碰撞檢測。
    整個算法的執行過程是:首先對包圍球和AABB投影排序并分組,這樣可以迅速排除不可能發生碰撞的對象對;然后,對各組中的潛在碰撞檢測集進行相交測試,即最終的碰撞檢測就轉化為球與球的相交測試、球與AABB的相交測試以及AABB間的相交測試。
2 包圍盒間的相交測試
    包圍球之間的相交測試很容易實現,只需根據球心之間的距離和兩球的半徑之和的差值就可以判斷相交情況。兩個AABB相交,則它們在3個坐標軸上的投影也必然相交,因此,AABB間的相交測試完全可以轉化為坐標軸上投影區間的相交測試,只要有一個軸上的投影不相交,就可以直接判定兩包圍盒不相交,從而結束相交測試。
    包圍球與AABB的相交測試,如果使用常規的幾何分析方法會非常復雜。一類簡單可行的方法是求取包圍球到AABB的最近距離點對,但如果使用常規的暴力遍歷算法來求解幾何體之間的最近點對,效率太低。而Lin- Canny算法求解凸包間的最近點對是非常高效的。Lin-Canny算法高效實現的關鍵是引入了Voronoi域的思想,通過遍歷AABB的Voronoi特征域獲取球心在某一特征(頂點、邊或面)上的投影點,這個投影點就是AABB到球心的最近點,再求出這個最近點到球心的距離并與包圍球的半徑(實際使用平方值)進行比較,如果這個距離小于半徑,則包圍球與AABB相交;否則,不相交。
    如圖3所示,假設P為球心位置,A為AABB,A包圍盒中頂點Q的Voronoi域、邊MQ的Voronoi域和面S的Voronoi域分別如圖中不同顏色所示。則A上到P的最近點可以通過下面的方法獲得:在某一軸上將P限定在A的邊界上。存在3種限定P的情況:(1)如果P點位于A的某表面的Voronoi域,則截取操作將P限定在A的該表面上; (2)如果P點位于A的某頂點的Voronoi域,則截取操作將視該頂點為所求點; (3)如果P點位于A的某邊的Voronoi域,則截取操作為該邊上的正交投影。其偽代碼實現如下:

 

 

     /*p為球心,a為AABB*/
Point  findNearestDistancePoint(Point p,
                         AABBBox a)
{
    Point  q;                                      /*所求點q*/
    for(int i=0;i<3;i++)
    {
        float v=p[i];
        if(v小于a在某一軸上投影的最小值)
            v=這個最小值;
        if(v大于a在某一軸上投影的最大值)
            v=這個最大值;
        q[i]=v;
    }
    end for;
    return q;                                            /*返回q點*/
}
3 實驗結果及分析
    在小米M1手機上實現該算法,其系統為Android OS 4.0;CPU為高通驍龍MSM-8260(雙核)1.5 GHz;GPU為Adreno220;RAM為1 GB;圖形API接口為OpenGL ES 2.0。首先,在多個包含不同對象個數的場景中,將改進算法與參考文獻[5]中的算法(只進行包圍盒相交測試,省去了葉子節點的相交測試)進行比較,結果如圖4所示。再將改進后的包圍盒投影排序分組方法應用到包圍球算法和AABB算法中,并與本文提出的新算法進行對比分析,結果如表1所示。

    由于用堆排序法替代了希爾排序法,并將靜態包圍盒的分組固定,只實時更新動態包圍盒的組別,隨著包圍盒數量的不斷增加,改進算法比參考文獻[5]中的算法效率更高。尤其是當場景越來越復雜時,改進算法完成碰撞檢測所需的時間并沒有明顯地增加,具有更加優越的實時性能。 通常游戲場景所需的最低幀率一般為20 f/s~30 f/s。本文算法在保證了更高精度的前提下仍能與包圍球算法和AABB算法一樣滿足復雜場景的實時性需求。
    針對Android手持終端的復雜游戲場景的需求,本文在I-Collide算法庫及其改進算法的基礎上,提出了一種基于包圍球和AABB層次包圍盒的碰撞檢測算法。把傳統的基于AABB的投影排序法應用在該算法中并進行優化,從而排除了大量不可能相交的對象對,提高了算法的實時性。但該算法沒有對變形體或旋轉體的包圍盒重構提出快速的解決方案,有待在以后的研究中解決這些問題。隨著嵌入式芯片的高速發展和實際應用的需要,以后的研究中還應該考慮使用OBB[1]或k-DOPs[1]等更加緊密的包圍盒算法或基于GPU的碰撞檢測算法[6]及其他的精確碰撞檢測算法來滿足各種場合的苛刻需求。
參考文獻
[1] 鄒益勝,丁國富,許明恒,等.實時碰撞檢測算法綜述[J].計算機應用研究,2008,25(1):8-12.
[2] 董峰,王同洋.虛擬環境中的快速碰撞檢測算法[J].計算機工程與應用,2003,39(8):66-67.
[3] Lin Ming, CANNY J. A fast altorithm for incremental distance calculation[C].Proceedings of the 1991 IEEE International Conference on Robotics and Automation,1991:1008-1014.
[4] COHEN J D, LIN M C, MANOCHAL D. I-CoLLIDE: an  interactive and exact collision detection system for largescale environments[C]. Proceedings of ACM Interactive 3D Graphics Conference,1995:189-196.
[5] 王曉榮,王萌,李春貴.基于AABB包圍盒的碰撞檢測算法[J].計算機工程與科學,2010,32(4):59-61.
[6] Tang Min,MANOCHA D,Jiang Lin,et al. Collisionstreams:fast GPU-based collision detection for deformable models[M].ACM SIGGRAPH Symposium on Interactive 3D Graphics  and  Games (I3D),2011:63-70.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久亚洲私人国产精品va| 伊人久久大香线蕉综合热线| **性色生活片久久毛片| 国产日韩专区| 久久成人精品视频| 国产精品99久久久久久人| 亚洲电影在线| 夜夜嗨av一区二区三区四区| 久久精选视频| 国产手机视频精品| 亚洲午夜精品视频| 欧美日韩免费一区二区三区视频| 亚洲女同性videos| 国产精品久久久久久户外露出| 亚洲电影激情视频网站| 久久精品一区二区三区不卡| 国产亚洲精品一区二区| 一区二区三区视频免费在线观看| 国产精品高潮呻吟久久av无限| 另类欧美日韩国产在线| 国产伦一区二区三区色一情| 激情国产一区二区| 久久精品青青大伊人av| 亚洲欧美国产77777| 午夜精品区一区二区三| 亚洲人成网站影音先锋播放| 亚洲欧美国产毛片在线| 亚洲国产精品日韩| 欧美影院午夜播放| 亚洲淫片在线视频| 国内精品一区二区三区| 亚洲视频观看| 国产麻豆91精品| 久久视频免费观看| 日韩视频一区二区在线观看| 国产精品大片免费观看| 国产精品免费观看在线| 激情欧美一区二区三区在线观看| 鲁大师成人一区二区三区| 欧美午夜一区二区福利视频| 国内精品久久久久国产盗摄免费观看完整版| 久久久精品欧美丰满| 国产毛片精品国产一区二区三区| 国产精品影音先锋| 伊人成人在线| 在线观看成人网| 久久精品91久久香蕉加勒比| 亚洲欧美国产精品桃花| 国产综合自拍| 亚洲精品免费电影| 久久最新视频| 久久精品国产99| 欧美精品一区二区久久婷婷| 久久久精品国产免大香伊| 老色鬼久久亚洲一区二区| 国产在线精品成人一区二区三区| 国产一区二区三区四区三区四| 99国产精品国产精品久久| 久久爱91午夜羞羞| 午夜精品视频一区| 一本色道久久综合亚洲精品婷婷| 午夜精品久久久久久| 麻豆九一精品爱看视频在线观看免费| 一本大道av伊人久久综合| 久久精品日产第一区二区三区| 亚洲国产一区在线观看| 另类av一区二区| 久久久久国内| 国产精品色午夜在线观看| 国产精品视频久久一区| 国产精品男gay被猛男狂揉视频| 亚洲中午字幕| 亚洲黄色精品| 国产精品伦子伦免费视频| 国产精品色婷婷| 国产色婷婷国产综合在线理论片a| 狠狠色丁香婷婷综合久久片| 亚洲精品女av网站| 久久综合网色—综合色88| 国产精品美女主播| 欧美日韩日日骚| 亚洲尤物视频在线| 亚洲国产日韩欧美在线99| 欧美亚洲午夜视频在线观看| 在线观看日韩专区| 久久在线免费| 国产午夜亚洲精品不卡| 亚洲制服丝袜在线| 亚洲欧美成人精品| 欧美一区二区三区在线观看视频| 欧美国产高潮xxxx1819| 久久国产视频网站| 久久国产精品电影| 欧美日韩免费高清| 韩国成人理伦片免费播放| 亚洲精选成人| 欧美性事免费在线观看| 国产精品系列在线播放| 欧美国产日韩a欧美在线观看| 久久高清免费观看| 国产精品www994| 欧美另类一区二区三区| 蜜臀a∨国产成人精品| 国产精自产拍久久久久久蜜| 最新亚洲激情| 欧美特黄一级大片| 久久国产精品亚洲va麻豆| 欧美伦理视频网站| 国产精品资源在线观看| 一区二区三区毛片| 狂野欧美激情性xxxx欧美| 亚洲永久网站| 久久综合给合久久狠狠狠97色69| 一区二区av| 国产综合久久| 亚洲六月丁香色婷婷综合久久| 欧美一区二区在线免费观看| 亚洲欧美日韩系列| 一区在线视频观看| 久久亚洲国产精品一区二区| 亚洲国产精品黑人久久久| 国产精品久久久亚洲一区| 国产精品视频xxxx| 亚洲第一区色| 国产精品成人久久久久| 一区二区精品| 欧美一区二区久久久| 欧美日本免费一区二区三区| 欧美激情精品久久久久久蜜臀| 中文在线不卡| 久久久久久久久久久久久9999| 玖玖国产精品视频| 一区二区激情视频| 亚洲欧美日韩国产一区| 国内成人在线| 国产精品99久久久久久白浆小说| 国外视频精品毛片| 欧美视频一区二区| 欧美精品一区二区高清在线观看| 99视频精品| 久久久一区二区三区| 亚洲欧美精品中文字幕在线| 狠狠干成人综合网| 韩日精品在线| 亚洲欧美一区二区激情| 欧美精品在线观看| 亚洲黄色成人网| 久久综合伊人77777麻豆| 午夜精品99久久免费| 在线观看视频一区二区欧美日韩| 欧美午夜a级限制福利片| 国产精品成人一区二区| 久久精品视频亚洲| 在线视频日本亚洲性| 国产又爽又黄的激情精品视频| 亚洲欧美在线另类| 欧美一区二区观看视频| 欧美日韩一区二区免费视频| 99香蕉国产精品偷在线观看| 亚洲欧洲一区| 在线视频观看日韩| 欧美另类在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 欧美中文在线观看国产| 久久国产精品久久久久久久久久| 午夜精品影院在线观看| 亚洲亚洲精品三区日韩精品在线视频| 91久久精品国产91性色| 久久久久久自在自线| 亚洲天堂免费观看| 欧美一区二粉嫩精品国产一线天| 亚洲无亚洲人成网站77777| 久久中文欧美| 久久免费精品日本久久中文字幕| 久久三级视频| 亚洲美女免费视频| 欧美特黄一级大片| 久久久一区二区| 一区二区91| 欧美日韩亚洲天堂| 欧美亚日韩国产aⅴ精品中极品| 91久久精品一区| 欧美一区二区高清在线观看| 国产日韩精品视频一区二区三区| 国产精品久久久久国产a级| 在线亚洲伦理| 国产三级精品三级| 老鸭窝91久久精品色噜噜导演| 一本久道久久综合中文字幕| 国产女优一区| 海角社区69精品视频| 国产精品99久久久久久人| 最新国产精品拍自在线播放| 国内外成人免费视频| 国产精品久久国产愉拍| 一本大道久久a久久综合婷婷| 久久精品成人一区二区三区| 国模套图日韩精品一区二区| 亚洲精品专区| 国产综合一区二区| 国产精品香蕉在线观看| 牛夜精品久久久久久久99黑人| 一区二区三区日韩精品视频| 美女精品国产| 国产精品最新自拍| 美女日韩在线中文字幕| 亚洲精品视频在线观看免费| 亚洲精选中文字幕| 麻豆久久精品| 欧美视频一区| 欧美一区二区三区视频免费| 卡通动漫国产精品| 亚洲午夜影视影院在线观看| 久久成人这里只有精品| 欧美精品七区| 欧美日本在线播放| 国产在线播放一区二区三区| 亚洲精品日韩精品| 久久一区免费| 你懂的国产精品永久在线| 欧美日韩国产一区二区三区地区| 老司机精品视频网站| 久久国产精品99国产| 亚洲综合色噜噜狠狠| 欧美日韩精品伦理作品在线免费观看| 亚洲精品久久久久久久久久久| 国产一区二区0| 在线观看视频一区二区欧美日韩| 欧美日韩在线一二三| 99re6热在线精品视频播放速度| 欧美一区二区三区电影在线观看| 欧美视频网址| 欧美国产精品一区| 欧美主播一区二区三区美女 久久精品人| 久久久久一本一区二区青青蜜月| 欧美性猛片xxxx免费看久爱| 国产日韩精品一区观看| 一区二区三区|亚洲午夜| 99在线观看免费视频精品观看| 国产精品入口麻豆原神| 国产麻豆日韩| 欧美黑人一区二区三区| 亚洲精品视频免费| 欧美日韩国产系列| 国产精品免费电影| 在线亚洲一区二区| 伊人久久噜噜噜躁狠狠躁| 久久精品国产精品亚洲精品| 久久这里有精品15一区二区三区| 依依成人综合视频| 亚洲国产专区校园欧美| 91久久嫩草影院一区二区| 亚洲欧美日韩国产中文在线| 欧美一区永久视频免费观看| 欧美激情一二三区| 欧美日韩在线不卡| 亚洲久久视频| 亚洲美女视频网| 欧美日韩伦理在线| 欧美大胆成人| 亚洲福利视频专区| 亚洲人午夜精品免费| 亚洲视频一区二区在线观看| 亚洲精品一品区二品区三品区| 国产精品久久久一区二区| 欧美国产先锋| 国产精品一二三四区| 一本一道久久综合狠狠老精东影业| 国产一区再线| 在线观看的日韩av| 久久亚洲不卡| 午夜精品久久久久久久99黑人| 国产精品一区亚洲| 欧美/亚洲一区| 久久精品99国产精品日本| 亚洲最快最全在线视频| 欧美区亚洲区| 亚洲精品一区二区在线观看| 亚洲女人小视频在线观看| 亚洲欧洲一区二区天堂久久| 国产欧美日韩一区二区三区在线| 国产精品一区二区久激情瑜伽| 久久国产精品99精品国产| 亚洲欧美成人在线| 亚洲国产高清视频| 国产精品日韩一区二区| 99国产精品国产精品毛片| 久久高清一区| 在线观看国产精品淫| 欧美日韩午夜剧场| 中文在线不卡视频| 亚洲成人在线网| 一区二区三区四区国产| 亚洲一二区在线| 亚洲国产成人久久| 国产视频丨精品|在线观看| 国产婷婷色一区二区三区在线| 午夜一区二区三视频在线观看| 亚洲欧美国产精品桃花| 久久国产精品免费一区| 日韩亚洲成人av在线| 亚洲欧洲日本国产| 亚洲精品免费一区二区三区| 国产精品视频一二三| 亚洲欧美一区二区原创| 欧美精品尤物在线| 亚洲精选一区| 欧美日本韩国一区二区三区| 久久精品1区| 亚洲欧美国产不卡| 亚洲第一搞黄网站| 国产精品午夜在线| 欧美精品久久天天躁| 欧美一区永久视频免费观看| 亚洲精品美女久久久久| 国产精品亚发布| 欧美一区二区黄色| 久久久久久一区二区| 裸体一区二区三区| 亚洲主播在线| 性18欧美另类| 亚洲视频日本| 久久亚洲精品中文字幕冲田杏梨| 亚洲精选91| 亚洲毛片在线| 国产精品视频久久| 中文在线不卡| 国产精品久久久久久久久免费桃花|