專利名稱:帶預(yù)判方法的obb層次體樹碰撞檢測(cè)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)進(jìn)行物體碰撞檢測(cè)技術(shù)領(lǐng)域,具體涉及一種帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法。
背景技術(shù):
層次包圍體樹是基于物體空間的碰撞檢測(cè)方法,該方法是對(duì)物體建立體樹結(jié)構(gòu),并對(duì)劃分物體建立包圍盒結(jié)構(gòu)。建立體樹是為了減少進(jìn)行碰撞檢測(cè)的包圍盒個(gè)數(shù),當(dāng)檢測(cè)到某節(jié)點(diǎn)之間不相交,則不需對(duì)其子節(jié)點(diǎn)進(jìn)行檢測(cè)即可判斷不相交。構(gòu)造包圍盒的目的是利用簡(jiǎn)易的包圍盒來對(duì)不規(guī)則物體區(qū)域進(jìn)行包圍,進(jìn)行碰撞檢測(cè),如包圍盒之間不相交,則物體區(qū)域也不相交,如包圍盒相交,則還需對(duì)物體區(qū)域進(jìn)行碰撞檢測(cè)。包圍盒結(jié)構(gòu)有包圍盒、AABB包圍盒、k-Dop包圍盒、OBB包圍盒。包圍球定義為包圍該物體最小的球體,構(gòu)造簡(jiǎn)單,內(nèi)存需求小,緊密性差。AABB包圍盒是沿世界坐標(biāo)系的軸向包圍盒,它是包含幾何對(duì)象且每一條邊平行于坐標(biāo)軸的最小六面體,構(gòu)建迅速、測(cè)試簡(jiǎn)單、緊密較包圍球好。K-Dop包圍盒是由k/2對(duì)平行平面包圍物體對(duì)象而形成的凸多面體,其中k為平面法向量的個(gè)數(shù),也就是平面對(duì)的個(gè)數(shù)。該包圍盒更接近物體,緊密性較好。OBB包圍盒是為包含物體對(duì)象且軸向任意的最小長(zhǎng)方體,它根據(jù)對(duì)象的幾何特點(diǎn)緊密包圍對(duì)象,緊密性較好,精度較高?,F(xiàn)有技術(shù)中存在的問題是如何在保證碰撞檢測(cè)的精度的情況下提高檢測(cè)速度?,F(xiàn)有技術(shù)中研究者有把AABB包圍盒和包圍盒相結(jié)合,把包圍盒檢測(cè)的速度和AABB包圍盒的檢測(cè)精度合理的結(jié)合起來,但是精度上不是很好。本發(fā)明因此而來。
發(fā)明內(nèi)容
本發(fā)明目的在于提供一種帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法,解決了現(xiàn)有技術(shù)中通過計(jì)算機(jī)進(jìn)行物體碰撞檢測(cè)時(shí)難以在保證碰撞檢測(cè)的精度的情況下提高檢測(cè)速度等問題。為了解決現(xiàn)有技術(shù)中的這些問題,本發(fā)明提供的技術(shù)方案是一種帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法,其特征在于所述方法中第一 OBB包圍盒與第二 OBB包圍盒的中心距離為L(zhǎng),包圍第一 OBB包圍盒的最小球體半徑為rl,第一 OBB包圍盒的最大包圍球體半徑為r2 ;包圍第二 OBB包圍盒的最小球體半徑為rl’,第二OBB包圍盒的最大包圍球體半徑為r2’ ;所述方法包括先進(jìn)行預(yù)判,然后通過OBB包圍盒相交測(cè)試方法進(jìn)行碰撞檢測(cè)的步驟,具體按照如下方法進(jìn)行(I)當(dāng)L〈=r2+r2’時(shí),即第一 OBB包圍盒與第二 OBB包圍盒的中心距離小于等于OBB包圍盒最大包圍球體半徑之和,則判定兩個(gè)OBB包圍盒必然相交,碰撞檢測(cè)結(jié)束;(2)當(dāng)L>=rl+rl’時(shí),即第一 OBB包圍盒與第二 OBB包圍盒的中心距離大于等于包圍OBB包圍盒的最小球體半徑之和,則判定兩個(gè)包圍盒必然不相交,碰撞檢測(cè)結(jié)束;(3)當(dāng)r2+r2’ <L〈rl+rl’時(shí),即第一 OBB包圍盒與第二 OBB包圍盒的中心距離大于OBB盒最大包圍球體半徑之和,且小于包圍OBB盒的最小球體半徑之和,則不能判定是否相交;此時(shí)按照OBB包圍盒相交測(cè)試方法進(jìn)行碰撞檢測(cè)。本發(fā)明技術(shù)方案提供了一種帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法,實(shí)現(xiàn)虛擬現(xiàn)實(shí)物體的碰撞檢測(cè)方法,在保證碰撞檢測(cè)精度的情況下,盡量提高檢測(cè)的速度。本發(fā)明方法是在OBB碰撞檢測(cè)方法中加入預(yù)判方法,在進(jìn)行碰撞檢測(cè)的過程中,經(jīng)過上一步的預(yù)判,找出可能碰撞的對(duì)象,對(duì)它們進(jìn)行OBB碰撞檢測(cè)。如果它們不相交,則該次OBB碰撞檢測(cè)就成了本次碰撞檢測(cè)過程中的冗余運(yùn)算。因此,本發(fā)明技術(shù)方案預(yù)判方法基本思想在進(jìn)行OBB包圍盒相交檢測(cè)之前,對(duì)物體構(gòu)造OBB包圍盒進(jìn)行預(yù)判。如果預(yù)判結(jié)果是一定不相交,即可判定包圍盒不相交,不需再用OBB的檢測(cè)方法在15個(gè)軸上進(jìn)行投影判斷;如果預(yù)判結(jié)果是一定相交,即可判定相交;如果預(yù)判結(jié)果不能確定,對(duì)兩個(gè)OBB包圍盒,進(jìn)行投影判斷。本發(fā)明與現(xiàn)有技術(shù)相比,具有如下的有益效果本發(fā)明技術(shù)方案通過在碰撞檢測(cè)前進(jìn)行預(yù)判,是在進(jìn)行OBB包圍盒相交測(cè)試之前進(jìn)行的,考慮到OBB相交測(cè)試過于繁瑣,計(jì)算量比較大,在每次OBB相交測(cè)試之前進(jìn)行兩包圍盒的預(yù)判測(cè)試,能夠提高OBB相交測(cè)試算法效率。
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述圖1為本發(fā)明技術(shù)方案帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法的原理示意圖;圖2為本發(fā)明技術(shù)方案帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法的工作流程圖。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例對(duì)上述方案做進(jìn)一步說明。應(yīng)理解,這些實(shí)施例是用于說明本發(fā)明而不限于限制本發(fā)明的范圍。實(shí)施例中采用的實(shí)施條件可以根據(jù)具體廠家的條件做進(jìn)一步調(diào)整,未注明的實(shí)施條件通常為常規(guī)實(shí)驗(yàn)中的條件。實(shí)施例如圖1所示,本實(shí)施例帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法的原理。構(gòu)建包圍OBB包圍盒的最小球體,計(jì)算兩OBB包圍盒中心距離,若大于兩球體的半徑之和,則兩個(gè)包圍盒必不相交;構(gòu)建OBB包圍盒包圍的最大球體,計(jì)算兩OBB包圍盒中心具體,若小于這兩球體的半徑和,則兩個(gè)包圍盒必相交。由圖1可知,其中B1、B2為兩個(gè)相交測(cè)試的OBB包圍盒,SI,SI’分別為包圍BI,B2的最小球體,S2和S2’分別為BI,B2的包圍的最大球體,01、02分別為包圍盒BI,B2的中心點(diǎn),rl,r2,rl’,r2’分別為SI,S2,SI’,S2’的半徑,L為BI和B2中心的距離。判斷方法當(dāng)L〈r2+r2’時(shí),即BI和B2中心之間距離小于OBB盒最大包圍球體半徑之和,則判定兩個(gè)包圍盒必然相交。當(dāng)L>rl+rl’時(shí),即BI和B2中心之間距離大于包圍OBB盒的最小球體半徑之和,則判定兩個(gè)包圍盒必然不相交。當(dāng)r2+r2’ <L〈rl+rl’時(shí),即BI和B2中心之間距離大于OBB盒最大包圍球體半徑之和,小于包圍OBB盒的最小球體半徑之和,則不能判定是否相交。在預(yù)判方法不能確定的情況下,繼續(xù)使用OBB包圍盒相交測(cè)試方法進(jìn)行判斷。進(jìn)行模型應(yīng)用兩種碰撞檢測(cè)方法,其中,方法I為直接采用OBB的方法,即使用RAPID碰撞庫,方法2是預(yù)判方法與OBB包圍盒層次體樹相結(jié)合的方法,表I表示對(duì)不同三角形面片的模型應(yīng)用方法I和方法2所需進(jìn)行OBB碰撞檢測(cè)的面片數(shù)和實(shí)際檢測(cè)出碰撞的面片數(shù)。表I不同模型應(yīng)用不同方法需檢測(cè)的面片數(shù)
權(quán)利要求
1. 一種帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法,其特征在于所述方法中第一 OBB包圍盒與第二 OBB包圍盒的中心距離為L(zhǎng),包圍第一 OBB包圍盒的最小球體半徑為rl,第一OBB包圍盒的最大包圍球體半徑為r2 ;包圍第二 OBB包圍盒的最小球體半徑為rl’,第二OBB包圍盒的最大包圍球體半徑為r2’ ;所述方法包括先進(jìn)行預(yù)判,然后通過OBB包圍盒相交測(cè)試方法進(jìn)行碰撞檢測(cè)的步驟,具體按照如下方法進(jìn)行 (1)當(dāng)L〈=r2+r2’時(shí),即第一OBB包圍盒與第二 OBB包圍盒的中心距離小于等于OBB包圍盒最大包圍球體半徑之和,則判定兩個(gè)OBB包圍盒必然相交,碰撞檢測(cè)結(jié)束; (2)當(dāng)L>=rl+rl’時(shí),即第一OBB包圍盒與第二 OBB包圍盒的中心距離大于等于包圍OBB包圍盒的最小球體半徑之和,則判定兩個(gè)包圍盒必然不相交,碰撞檢測(cè)結(jié)束; (3)當(dāng)r2+r2’<L〈rl+rl’時(shí),即第一 OBB包圍盒與第二 OBB包圍盒的中心距離大于OBB盒最大包圍球體半徑之和,且小于包圍OBB盒的最小球體半徑之和,則不能判定是否相交;此時(shí)按照OBB包圍盒相交測(cè)試方法進(jìn)行碰撞檢測(cè)。
全文摘要
本發(fā)明公開了一種帶預(yù)判方法的OBB層次體樹碰撞檢測(cè)方法,通過在碰撞檢測(cè)前進(jìn)行預(yù)判,是在進(jìn)行OBB包圍盒相交測(cè)試之前進(jìn)行的,考慮到OBB相交測(cè)試過于繁瑣,計(jì)算量比較大,在每次OBB相交測(cè)試之前進(jìn)行兩包圍盒的預(yù)判測(cè)試,能夠提高OBB相交測(cè)試算法效率。
文檔編號(hào)G06F11/00GK103049341SQ20121047590
公開日2013年4月17日 申請(qǐng)日期2012年11月21日 優(yōu)先權(quán)日2012年11月21日
發(fā)明者陳國慶 申請(qǐng)人:蘇州兩江科技有限公司