本發(fā)明屬于三維虛擬環(huán)境中的實(shí)時(shí)碰撞檢測(cè)領(lǐng)域,具體涉及一種基于AABB與OBB自適應(yīng)的復(fù)合包圍盒算法。
背景技術(shù):
碰撞檢測(cè)是計(jì)算機(jī)圖形仿真中的關(guān)鍵問(wèn)題之一,在游戲、虛擬仿真等領(lǐng)域是一個(gè)非常重要的組成部分。在具體應(yīng)用過(guò)程中,實(shí)現(xiàn)碰撞檢測(cè)的一種有效方法是采用包圍盒的層次結(jié)構(gòu)來(lái)近似描述物體模型。包圍盒具有簡(jiǎn)單性和精密性兩個(gè)重要的屬性,而且這兩個(gè)屬性具有排斥性,在具體實(shí)現(xiàn)的時(shí)候,按照具體情況的要求不同,對(duì)其做相應(yīng)的折中處理。其中,軸向包圍盒(AABB)、包圍球等構(gòu)造簡(jiǎn)單,而方向包圍盒(OBB)緊密性好,經(jīng)常會(huì)被結(jié)合使用。
現(xiàn)有的基于OBB的復(fù)合包圍盒算法中,一般對(duì)某一固定對(duì)象采用AABB包圍盒,而對(duì)另一固定對(duì)象采用OBB包圍盒;或者固定在層次包圍盒樹(shù)頂層使用AABB包圍盒或包圍球,而在其他層使用OBB包圍盒以實(shí)現(xiàn)碰撞檢測(cè)功能。
西北農(nóng)林科技大學(xué)的秦銓等,針對(duì)葉片形態(tài)提出了一種基于AABB-OBB混合包圍盒的碰撞檢測(cè)方法。首先通過(guò)AABB盒相交測(cè)試剔除部分未相交對(duì)象; 然后根據(jù)葉片形態(tài)特點(diǎn),對(duì)可能相交對(duì)象構(gòu)造OBB 盒二叉樹(shù)。
青島大學(xué)范曉磊的碩士論文“混合包圍盒碰撞檢測(cè)算法研究”中提出一種基于OBB與AABB的混合包圍盒碰撞檢測(cè)算法,對(duì)于虛擬環(huán)境中的剛體對(duì)象采用OBB建立包圍盒,而對(duì)于會(huì)發(fā)生變形的對(duì)象則AABB用建立包圍盒。
大連海事大學(xué)的寧濤等提出一種利用混合包圍盒優(yōu)化的碰撞檢測(cè)方法。該方法根據(jù)碰撞相交剛體不同組件的復(fù)雜度進(jìn)行層次設(shè)置,在層次包圍盒樹(shù)頂層使用包圍球,在其他層使用OBB包圍盒以實(shí)現(xiàn)碰撞檢測(cè)功能。
中華人民共和國(guó)發(fā)明專(zhuān)利(申請(qǐng)?zhí)枺?01210318465.2)公開(kāi)了“一種基于有向包圍盒和軸向包圍盒的腳楦匹配方法”。該發(fā)明是通過(guò)腳和鞋子匹配或者腳和表示鞋子內(nèi)部空間的鞋楦匹配,首先求出三維模型腳和鞋楦的OBB,根據(jù)OBB的軸向?qū)⒛_和鞋楦與世界坐標(biāo)系的三個(gè)軸分別對(duì)齊;再計(jì)算出腳和鞋楦模型的軸向包圍盒AABB,將腳模型AABB底面四邊形的中心平移到鞋楦模型AABB底面四邊形的中心,匹配之后,如果鞋子偏大或者偏小,可對(duì)鞋子進(jìn)行適當(dāng)?shù)乜s放。
中華人民共和國(guó)發(fā)明專(zhuān)利(申請(qǐng)?zhí)枺?01110322775.7)公開(kāi)了一種面向虛擬裝配的基于AABB-OBB混合包圍盒的碰撞檢測(cè)方法。在預(yù)處理階段對(duì)變形物體的模型進(jìn)行剖分,逐層建立OBB層次二叉樹(shù),建立整體模型的AABB包圍盒。實(shí)時(shí)階段,在二叉樹(shù)的頂點(diǎn)維護(hù)AABB包圍盒,對(duì)模型整體進(jìn)行粗略的碰撞檢測(cè);在其余節(jié)點(diǎn)維護(hù)OBB包圍盒,利用OBB進(jìn)行精確的碰撞檢測(cè);最后進(jìn)行面片級(jí)的碰撞檢測(cè)。該方法包括:載入三維模型;對(duì)模型進(jìn)行剖分,建立層次二叉樹(shù);粗略碰撞檢測(cè)階段用AABB進(jìn)行碰撞檢測(cè);精細(xì)碰撞階段采用OBB碰撞檢測(cè);最后采用面片級(jí)的碰撞檢測(cè)。
上述技術(shù)存在如下缺點(diǎn):
現(xiàn)有的基于OBB的復(fù)合包圍盒算法中,一般對(duì)某一固定對(duì)象采用AABB包圍盒,而對(duì)另一固定對(duì)象采用OBB包圍盒;或者固定在層次包圍盒樹(shù)頂層使用AABB包圍盒或包圍球,而在其他層使用OBB包圍盒,無(wú)法根據(jù)對(duì)象特征自適應(yīng)地選用包圍盒,其優(yōu)化效果有限。
論文“基于AABB-OBB盒的玉米葉片碰撞檢測(cè)”提出的基于AABB-OBB混合包圍盒的碰撞檢測(cè)方法,主要適用于玉米葉片等數(shù)字植物虛擬仿真場(chǎng)景,不適用于剛體。
碩士論文“混合包圍盒碰撞檢測(cè)算法研究”中提出的一種基于OBB與AABB的混合包圍盒碰撞檢測(cè)算法,主要適用于一個(gè)是剛體,另一個(gè)是變形對(duì)象的虛擬環(huán)境,如:在虛擬手術(shù)中,手術(shù)刀為剛體,人體組織為變形對(duì)象。
論文“用混合包圍盒優(yōu)化碰撞檢測(cè)方法”提出的一種利用混合包圍盒優(yōu)化的碰撞檢測(cè)方法,只是對(duì)層次包圍盒樹(shù)的頂層使用包圍球,而在其他層仍使用OBB包圍盒,計(jì)算量減少有限。
發(fā)明專(zhuān)利(申請(qǐng)?zhí)枺?01210318465.2)所提“一種基于有向包圍盒和軸向包圍盒的腳楦匹配方法”,同樣只適用于腳和鞋楦匹配的特殊場(chǎng)合。
發(fā)明專(zhuān)利(申請(qǐng)?zhí)枺?01110322775.7)所提“一種面向虛擬裝配的基于AABB-OBB混合包圍盒的碰撞檢測(cè)方法”,同樣只是對(duì)層次包圍盒樹(shù)的頂點(diǎn)使用AABB包圍盒,而在其他節(jié)點(diǎn)仍使用OBB包圍盒,優(yōu)化效果有限。
本發(fā)明針對(duì)大部分機(jī)械零件是軸對(duì)稱(chēng)結(jié)構(gòu),采用AABB包圍盒即可滿足碰撞檢測(cè)精度要求;而小部分機(jī)械零件是不規(guī)則的,需采用OBB包圍盒才能滿足碰撞檢測(cè)精度要求。因此提出一種基于AABB與OBB自適應(yīng)的復(fù)合包圍盒算法,能夠根據(jù)三維零件模型的實(shí)際情況,自適應(yīng)地選擇采用AABB方法或OBB方法構(gòu)造零件包圍盒;充分結(jié)合AABB包圍盒計(jì)算簡(jiǎn)單、OBB包圍盒精度高的優(yōu)點(diǎn),以進(jìn)一步提高虛擬裝配過(guò)程中實(shí)時(shí)碰撞檢測(cè)的性能。同時(shí),該方法也可應(yīng)用于層次包圍盒樹(shù)中遞歸地構(gòu)建各層次包圍盒。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于AABB與OBB自適應(yīng)的復(fù)合包圍盒算法,該方法能夠根據(jù)三維零件模型的實(shí)際情況,自適應(yīng)地選擇采用AABB方法或OBB方法構(gòu)造零件包圍盒;充分結(jié)合AABB包圍盒計(jì)算簡(jiǎn)單、OBB包圍盒精度高的優(yōu)點(diǎn),以進(jìn)一步提高虛擬裝配過(guò)程中實(shí)時(shí)碰撞檢測(cè)的性能;該方法也可應(yīng)用于層次包圍盒樹(shù)中遞歸地構(gòu)建各層次包圍盒。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種基于AABB與OBB自適應(yīng)的復(fù)合包圍盒算法,包括如下步驟,
S1:設(shè)定方向軸夾角閾值eps;
S2:由頂點(diǎn)坐標(biāo)和索引數(shù)據(jù)計(jì)算包圍盒的中心位置m;
S3:計(jì)算協(xié)方差矩陣C;
S4:求協(xié)方差矩陣C的特征向量并單位化,作為零件的三個(gè)方向軸;
S5:分別計(jì)算零件三個(gè)方向軸與標(biāo)準(zhǔn)坐標(biāo)軸XYZ的夾角θ1、θ2、θ3;
S6:將θ1、θ2、θ3分別與給定閾值eps進(jìn)行比較,若都小于等于給定閾值eps,則采用AABB包圍盒,計(jì)算AABB包圍盒的長(zhǎng)、寬、高,根據(jù)中心m構(gòu)建AABB包圍盒;若其中有一個(gè)夾角大于給定閾值eps,則采用OBB包圍盒,將頂點(diǎn)坐標(biāo)分別往零件三個(gè)方向軸上投影,計(jì)算OBB包圍盒的長(zhǎng)、寬、高,由夾角θ1、θ2、θ3計(jì)算繞X軸的旋轉(zhuǎn)角度、繞Y軸的旋轉(zhuǎn)角度、繞Z軸的旋轉(zhuǎn)角度,最后,根據(jù)中心位置m、繞標(biāo)準(zhǔn)坐標(biāo)軸的旋轉(zhuǎn)角度、、構(gòu)建OBB包圍盒。
在本發(fā)明一實(shí)施例中,所述步驟S2的中心位置m計(jì)算公式如下,
其中,、和分別為包圍盒包圍的n個(gè)三角形中第i個(gè)三角形的頂點(diǎn)矢量。
在本發(fā)明一實(shí)施例中,所述步驟S3的協(xié)方差矩陣C計(jì)算公式如下,
其中,j、k代表頂點(diǎn)的分量;,均為三維向量。
相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
1、本發(fā)明能夠根據(jù)三維零件模型的實(shí)際特征,自適應(yīng)地選擇采用AABB方法或OBB方法構(gòu)造零件包圍盒,靈活性好,具有一定的智能化水平;
2、本發(fā)明可應(yīng)用于層次包圍盒樹(shù)中遞歸地構(gòu)建各層次包圍盒,除了頂層能得到優(yōu)化,其他層次也能得到優(yōu)化,性能優(yōu)化較全面。
附圖說(shuō)明
圖1為本發(fā)明基于AABB與OBB自適應(yīng)的復(fù)合包圍盒算法流程圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行具體說(shuō)明。
如圖1所示,本發(fā)明的一種基于AABB與OBB自適應(yīng)的復(fù)合包圍盒算法,包括如下步驟,
S1:設(shè)定方向軸夾角閾值eps;
S2:由頂點(diǎn)坐標(biāo)和索引數(shù)據(jù)計(jì)算包圍盒的中心位置m;
S3:計(jì)算協(xié)方差矩陣C;
S4:求協(xié)方差矩陣C的特征向量并單位化,作為零件的三個(gè)方向軸;
S5:分別計(jì)算零件三個(gè)方向軸與標(biāo)準(zhǔn)坐標(biāo)軸XYZ的夾角θ1、θ2、θ3;
S6:將θ1、θ2、θ3分別與給定閾值eps進(jìn)行比較,若都小于等于給定閾值eps,則采用AABB包圍盒,計(jì)算AABB包圍盒的長(zhǎng)、寬、高,根據(jù)中心m構(gòu)建AABB包圍盒;若其中有一個(gè)夾角大于給定閾值eps,則采用OBB包圍盒,將頂點(diǎn)坐標(biāo)分別往零件三個(gè)方向軸上投影,計(jì)算OBB包圍盒的長(zhǎng)、寬、高,由夾角θ1、θ2、θ3計(jì)算繞X軸的旋轉(zhuǎn)角度、繞Y軸的旋轉(zhuǎn)角度、繞Z軸的旋轉(zhuǎn)角度,最后,根據(jù)中心位置m、繞標(biāo)準(zhǔn)坐標(biāo)軸的旋轉(zhuǎn)角度、、構(gòu)建OBB包圍盒。
在本發(fā)明一實(shí)施例中,所述步驟S2的中心位置m計(jì)算公式如下,
其中,、和分別為包圍盒包圍的n個(gè)三角形中第i個(gè)三角形的頂點(diǎn)矢量。
在本發(fā)明一實(shí)施例中,所述步驟S3的協(xié)方差矩陣C計(jì)算公式如下,
其中,j、k代表頂點(diǎn)的分量;,均為三維向量。
以下為本發(fā)明的具體實(shí)施原理。
本發(fā)明包括一種基于AABB與OBB自適應(yīng)的復(fù)合包圍盒算法,能夠根據(jù)三維零件模型的實(shí)際情況,自適應(yīng)地選擇采用AABB方法或OBB方法構(gòu)造零件包圍盒;充分結(jié)合AABB包圍盒計(jì)算簡(jiǎn)單、OBB包圍盒精度高的優(yōu)點(diǎn),以進(jìn)一步提高虛擬裝配過(guò)程中實(shí)時(shí)碰撞檢測(cè)的性能。該方法也可應(yīng)用于層次包圍盒樹(shù)中遞歸地構(gòu)建各層次包圍盒。
1、AABB包圍盒
軸對(duì)齊包圍盒(AABB)是應(yīng)用最為廣泛的包圍盒之一。在3D空間中,AABB是一個(gè)6面盒狀長(zhǎng)方體,且其面方向性劃分按如下方式進(jìn)行:面法線皆平行于給定的坐標(biāo)軸。AABB的最大特點(diǎn)是能夠?qū)崿F(xiàn)快速的相交測(cè)試,即僅執(zhí)行相應(yīng)坐標(biāo)值之間的比較。
AABB最常用的一種表達(dá)方式是采用各坐標(biāo)軸上的最小值和最大值,如下所示:
Struct AABB{
Point min;
Point max;
}
2、OBB的定義及計(jì)算
一個(gè)給定物體的OBB為包含該對(duì)象且相對(duì)于坐標(biāo)軸方向任意的最小的正六面體,一般利用一次矩(均值)和二次矩(協(xié)方差矩陣)統(tǒng)計(jì)量來(lái)計(jì)算其位置和方向。設(shè)第i個(gè)三角形的頂點(diǎn)矢量為、和,包圍盒包圍的三角形個(gè)數(shù)為n,則均值(中心位置)m和協(xié)方差矩陣計(jì)算如下:
其中,j、k代表頂點(diǎn)的(x,y,z)分量;,均為三維向量。
利用數(shù)值的方法解出協(xié)方差矩陣的特征向量并單位化,由于C是一個(gè)實(shí)對(duì)稱(chēng)矩陣,所以矩陣C的特征向量相互垂直,可以作為包圍盒的三個(gè)方向軸,把將要包圍的幾何體的頂點(diǎn)向各個(gè)方向軸上投影,找出各方向軸的投影區(qū)間,各投影區(qū)間的長(zhǎng)度即為OBB包圍盒相應(yīng)的尺寸。
3、基于AABB與OBB自適應(yīng)復(fù)合包圍盒算法
如圖1所示,基于AABB與OBB自適應(yīng)復(fù)合包圍盒算法的具體實(shí)現(xiàn)步驟如下:
1) 設(shè)定方向軸夾角域值eps;
2) 由頂點(diǎn)坐標(biāo)和索引數(shù)據(jù)計(jì)算包圍盒的中心位置m;
3) 計(jì)算協(xié)方差矩陣C;
4) 求協(xié)方差矩陣C的特征向量并單位化,作為零件的三個(gè)方向軸;
5) 分別計(jì)算零件三個(gè)方向軸與標(biāo)準(zhǔn)坐標(biāo)軸的夾角θ1、θ2、θ3;
6) 將θ1、θ2、θ3分別與給定域值eps進(jìn)行比較,若都小于給定域值eps,則采用AABB包圍盒,計(jì)算AABB包圍盒的長(zhǎng)、寬、高,根據(jù)中心m構(gòu)建AABB包圍盒;若有一個(gè)夾角大于給定域值eps,則采用OBB包圍盒,將頂點(diǎn)坐標(biāo)分別往零件三個(gè)方向軸上投影,計(jì)算OBB包圍盒的長(zhǎng)、寬、高,由坐標(biāo)軸夾角θ1、θ2、θ3計(jì)算繞標(biāo)準(zhǔn)坐標(biāo)軸X軸的旋轉(zhuǎn)角度、繞Y軸的旋轉(zhuǎn)角度、繞Z軸的旋轉(zhuǎn)角度,最后,根據(jù)中心m、繞標(biāo)準(zhǔn)軸的旋轉(zhuǎn)角度、、構(gòu)建OBB包圍盒。
以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。