两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于多核并行處理的柔性場景連續(xù)碰撞檢測方法

文檔序號:6428658閱讀:126來源:國知局
專利名稱:一種基于多核并行處理的柔性場景連續(xù)碰撞檢測方法
技術(shù)領(lǐng)域
本發(fā)明屬于計算機檢測技術(shù)領(lǐng)域,具體涉及一種基于多核并行處理的柔性場景碰撞檢測方法。
背景技術(shù)
基于三角形網(wǎng)格的連續(xù)碰撞檢測(CXD)通過插值獲得物體在兩個位置之間的運動路徑,進(jìn)而檢測在這個運動過程中哪些部位發(fā)生了碰撞。該方法被廣泛地應(yīng)用于物理現(xiàn)象仿真、虛擬現(xiàn)實、人工智能等多個領(lǐng)域,碰撞檢測速度的快慢直接決定了這些領(lǐng)域中算法的實時性。因此,快速碰撞檢測的研究得到了廣泛的重視。對于柔性場景模型內(nèi)部以及它們與周圍環(huán)境間的快速連續(xù)碰撞檢測的問題,一直被廣泛關(guān)注。由于這些場景中可能包含著分裂物體或正在發(fā)生形變的柔性物體,所以碰撞檢測過程非常耗時,對于由幾百萬個三角形組成的復(fù)雜場景更是無法獲得交互式的響應(yīng)速度。傳統(tǒng)的連續(xù)碰撞檢測利用單核處理器來完成整個碰撞檢測過程;通過對整個碰撞檢測過程分析發(fā)現(xiàn),BVH(包圍盒層次結(jié)構(gòu))構(gòu)造更新的操作時間大概占到整個碰撞檢測過程時間的10%,包圍盒重疊測試以及精確碰撞檢測的操作時間大概占到整個碰撞檢測時間的90%。利用單核處理器對整個碰撞檢測過程進(jìn)行處理極大地限制了整個碰撞檢測的速度。近年來,處理器研發(fā)的總體趨勢為從單核發(fā)展為多核,再發(fā)展為眾核;在CAD/CAM 或虛擬現(xiàn)實應(yīng)用中,高檔圖形工作站通常具有8-M個內(nèi)核。但現(xiàn)有的并行連續(xù)碰撞檢測方法無法均勻地分配計算負(fù)載,不能保證將BVH構(gòu)造更新、包圍盒重疊測試以及精確碰撞檢測的操作均衡地分配給處理器的多個內(nèi)核進(jìn)行處理,因此無法獲得最優(yōu)的內(nèi)存和Cache利用率。

發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)所存在的上述技術(shù)缺陷,本發(fā)明提供了一種基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,利用多核對待檢測的三角形網(wǎng)格柔性場景按照空間位置進(jìn)行分塊處理,改善了處理器的負(fù)載均衡度,提高了碰撞檢測的整體效率和速度。一種基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,包括如下步驟(1)對待檢測的三角形網(wǎng)格柔性場景模型中的每個三角形構(gòu)造對應(yīng)的包圍盒,進(jìn)而為三角形網(wǎng)格柔性場景模型建立N個子包圍盒層次結(jié)構(gòu),N為處理器的內(nèi)核數(shù);(2)根據(jù)N個子包圍盒層次結(jié)構(gòu),構(gòu)建若干個包圍盒測試樹(BVTT);將所有包圍盒測試樹均衡分配給每個內(nèi)核進(jìn)行包圍盒重疊測試,進(jìn)而輸出存在包圍盒重疊的葉節(jié)點;(3)每個內(nèi)核對自身輸出的葉節(jié)點對應(yīng)的三角形對進(jìn)行精確連續(xù)碰撞檢測。所述的步驟(1)中,為三角形網(wǎng)格柔性場景模型建立若干個子包圍盒層次結(jié)構(gòu), 包括如下步驟
3
1)計算出三角形網(wǎng)格柔性場景模型中每個三角形的中心;2)通過采用坐標(biāo)軸投影分割法對所有三角形中心進(jìn)行劃分將所有三角形中心分別投影到三維坐標(biāo)系的x、y、ζ軸上,選取軸上相距最遠(yuǎn)的兩個三角形中心投影之間的距離最大的軸作為投影軸,將以投影軸上相距最遠(yuǎn)的兩個三角形中心投影為端點的線段平分成兩個子線段;比較兩個子線段上三角形中心投影的個數(shù),進(jìn)而將三角形中心投影個數(shù)較多的子線段平分成兩個子線段;比較所有子線段上三角形中心投影的個數(shù),進(jìn)而將三角形中心投影個數(shù)最多的子線段平分成兩個子線段,依此直至將整個線段分成N個子線段,N為處理器的內(nèi)核數(shù);3)根據(jù)每個子線段上三角形中心投影的個數(shù),對應(yīng)地使所有三角形分成N組,即三角形網(wǎng)格柔性場景模型被分成N個子場景模型;4)利用N個內(nèi)核分別為N個子場景模型建立對應(yīng)的子包圍盒層次結(jié)構(gòu)。所述的若干個包圍盒測試樹包括N個子包圍盒層次結(jié)構(gòu)的自碰撞測試樹和 N(N-I)/2個子包圍盒層次結(jié)構(gòu)間的互碰撞測試樹。所述的步驟O)中,將所有包圍盒測試樹均衡分配給每個內(nèi)核進(jìn)行包圍盒重疊測試,是通過將所有包圍盒測試樹放入一條碰撞檢測隊列中,當(dāng)處理器的任一內(nèi)核空閑時,使之從碰撞檢測隊列中按隊列順序抓取一個包圍盒測試樹進(jìn)行包圍盒重疊測試和精確連續(xù)碰撞檢測,直至碰撞檢測隊列置空。優(yōu)選的技術(shù)方案中,所述的步驟(1)中,當(dāng)進(jìn)行第η次碰撞檢測時,子包圍盒層次結(jié)構(gòu)是根據(jù)第η次碰撞檢測時刻每個三角形的空間位置,對上一次碰撞檢測過程的子包圍盒層次結(jié)構(gòu)中最底層的包圍盒進(jìn)行重構(gòu),進(jìn)而自底向上對上一次碰撞檢測過程的子包圍盒層次結(jié)構(gòu)進(jìn)行整理更新而成的,η為大于1的自然數(shù);相應(yīng)的提高了碰撞檢測速度。優(yōu)選的技術(shù)方案中,所述的步驟O)中,當(dāng)進(jìn)行第η次碰撞檢測時,所述的包圍盒測試樹為上一次碰撞檢測過程中的包圍盒測試樹;無需重新構(gòu)建,相應(yīng)的提高了碰撞檢測速度。優(yōu)選的技術(shù)方案中,所述的包圍盒為16-D0P包圍盒,保證了碰撞檢測過程的高效性。本發(fā)明通過利用數(shù)據(jù)分塊對三角形網(wǎng)格柔性場景模型進(jìn)行分割生成相應(yīng)的子包圍盒層次結(jié)構(gòu),然后將碰撞檢測任務(wù)(包括包圍盒重疊測試和精確連續(xù)碰撞檢測)均衡地分配給處理器的多個內(nèi)核進(jìn)行處理,提高了處理器的負(fù)載均衡度,改善了存儲訪問模式的規(guī)則性,大大提高了碰撞檢測的整體效率和速度。


圖1為本發(fā)明連續(xù)碰撞檢測方法的步驟流程示意圖。圖2為三角形網(wǎng)格柔性場景模型的分塊示意圖。圖3(a)為SBVH的結(jié)構(gòu)示意圖,圖3 (b)為BVTT的結(jié)構(gòu)示意圖。
具體實施例方式為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實施方式
對本發(fā)明的連續(xù)碰撞檢測方法進(jìn)行詳細(xì)說明。
如圖1所示,一種基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,包括如下步驟(1)構(gòu)建子包圍盒層次結(jié)構(gòu)。對待檢測的三角形網(wǎng)格柔性場景模型中的每個三角形構(gòu)造對應(yīng)的包圍盒,進(jìn)而為三角形網(wǎng)格柔性場景模型建立N個子包圍盒層次結(jié)構(gòu)(SBVH),N為處理器的內(nèi)核數(shù);當(dāng)進(jìn)行第η次碰撞檢測時,子包圍盒層次結(jié)構(gòu)是根據(jù)第η次碰撞檢測時刻每個三角形的空間位置,對上一次碰撞檢測過程中的子包圍盒層次結(jié)構(gòu)中最底層的16-D0P包圍盒進(jìn)行重構(gòu),進(jìn)而自底向上對上一次碰撞檢測過程中的子包圍盒層次結(jié)構(gòu)進(jìn)行整理更新而成的,η為大于 1的自然數(shù)。為每個三角形構(gòu)造對應(yīng)的16-D0P包圍盒首先將被包圍三角形的頂點分別在各個方向上進(jìn)行投影,然后判斷這些投影是否落在包圍盒的外部,如果落在包圍盒外部,需要對該方向上包圍盒的范圍進(jìn)行調(diào)整,保證該投影恰好落在邊界上;對于16-D0P包圍盒,任何一個三角形頂點都需要做16次比較,判斷這個點是否落在包圍盒內(nèi)部。為三角形網(wǎng)格柔性場景模型建立若干個子包圍盒層次結(jié)構(gòu),包括如下步驟1)計算出三角形網(wǎng)格柔性場景模型中每個三角形的中心;2)通過采用坐標(biāo)軸投影分割法對所有三角形中心進(jìn)行劃分將所有三角形中心分別投影到三維坐標(biāo)系的x、y、ζ軸上,選取軸上相距最遠(yuǎn)的兩個三角形中心投影之間的距離最大的軸作為投影軸,將以投影軸上相距最遠(yuǎn)的兩個三角形中心投影為端點的線段平分成兩個子線段;比較兩個子線段上三角形中心投影的個數(shù),進(jìn)而將三角形中心投影個數(shù)較多的子線段平分成兩個子線段;比較所有子線段上三角形中心投影的個數(shù),進(jìn)而將三角形中心投影個數(shù)最多的子線段平分成兩個子線段,依此直至將整個線段分成N個子線段,N為處理器的內(nèi)核數(shù);3)根據(jù)每個子線段上三角形中心投影的個數(shù),對應(yīng)地使所有三角形分成N組,即三角形網(wǎng)格柔性場景模型被分成N個子場景模型;4)利用N個內(nèi)核分別為N個子場景模型建立對應(yīng)的子包圍盒層次結(jié)構(gòu)。如圖2所示,在四核處理器模式下,采用坐標(biāo)軸投影分割法對所有三角形中心進(jìn)行劃分,三角形網(wǎng)格柔性場景模型A1被分成四個子場景模型,即Di、D2、C2、B2,利用四個內(nèi)核分別為四個子場景模型建立或更新對應(yīng)的子包圍盒層次結(jié)構(gòu);圖3(a)所示了子場景模型 D1對應(yīng)的子包圍盒層次結(jié)構(gòu)。將子場景模型中的三角形對應(yīng)的16-D0P包圍盒,作為SBVH中最底層的16-D0P包圍盒。在第一次碰撞檢測時,采用自頂向下的方法構(gòu)建SBVH,首先計算出這些三角形的中心,將這些三角形中心投影到直角坐標(biāo)系的某個坐標(biāo)軸上,依據(jù)投影的正負(fù),可以把它們分成兩部分,分別為它們構(gòu)造包圍盒。然后采用同樣的方式,對這兩個包圍盒進(jìn)行細(xì)分,直到包圍盒中只包含一個三角形。如圖3(a)所示,有一個由a、b、c、d四個三角形組成的場景 D1,首先計算出這些三角形的中心,將這些三角形中心投影到某個坐標(biāo)軸上,依據(jù)投影的正負(fù),可以把它們分成兩部分,一部分記為E1,另一部分記為&,分別為E1和氏構(gòu)造包圍盒。 然后采用同樣的方式,對EpE2進(jìn)行細(xì)分,直到包圍盒中只包含一個三角形。在隨后的碰撞檢測過程中,只需要對SBVH中的非底層的包圍盒大小進(jìn)行重新計算。這是一個自底向上的計算過程,需要將每個非底層的兩個子16-D0P包圍盒合并為一個大的16-D0P包圍盒。(2)構(gòu)建若干個BVTTJf BVTT均衡分配給每個內(nèi)核進(jìn)行包圍盒重疊測試。根據(jù)N個子包圍盒層次結(jié)構(gòu),構(gòu)建若干個包圍盒測試樹;將所有包圍盒測試樹均衡分配給每個內(nèi)核進(jìn)行包圍盒重疊測試,進(jìn)而輸出存在包圍盒重疊的葉節(jié)點;當(dāng)進(jìn)行第η 次碰撞檢測時,包圍盒測試樹為上一次碰撞檢測過程中的包圍盒測試樹。若干個包圍盒測試樹包括N個子包圍盒層次結(jié)構(gòu)的自碰撞測試樹和Ν(Ν-1)/2個子包圍盒層次結(jié)構(gòu)間的互碰撞測試樹。首先,采用自頂向下的構(gòu)建方法構(gòu)造BVTT,如圖3所示,在圖3 (a)中已經(jīng)對子場景模型D1構(gòu)造了一個SBVH ;相應(yīng)地,圖3(b)則是針對圖3(a)子場景而構(gòu)建的一個自碰撞測試樹。將所有包圍盒測試樹均衡分配給每個內(nèi)核進(jìn)行包圍盒重疊測試,是通過將所有包圍盒測試樹放入一條碰撞檢測隊列中,當(dāng)處理器的任一內(nèi)核空閑時,使之從碰撞檢測隊列中按隊列順序抓取一個包圍盒測試樹進(jìn)行包圍盒重疊測試和精確連續(xù)碰撞檢測,直至碰撞檢測隊列置空。BVTT的根節(jié)點(DnD1)就是D1的自碰撞檢測對,然后提取出D1的兩個子包圍盒E1 和E2,分別對E1和E2做自碰撞檢測,另外還需要檢測E1和E2之間是否發(fā)生碰撞,即比較兩個16-D0P包圍盒之間是否有重疊。這個過程可以概括為在這16個方向上比較兩個包圍盒是否有交集;如果在某個方向上沒有重疊,則停止比較并且判定兩個包圍盒沒有重疊。如果在所有方向上都有重疊,并且E1有子包圍盒a和b,則采用與處理E1和氏相同的方法,判斷E1的兩個子包圍盒a和b是否與E2發(fā)生碰撞;如果在所有方向上都有重疊,并且E1沒有子包圍盒,但是&有子包圍盒c和d,則與處理E1和氏相同的方法,判斷氏的兩個子包圍盒c和d是否與E1發(fā)生碰撞;如果在所有方向上都有重疊,并且E1和氏都已經(jīng)是最底層包圍盒,沒有子包圍盒,輸出E1與E2對應(yīng)的葉節(jié)點。(3)對三角形對進(jìn)行精確連續(xù)碰撞檢測。每個內(nèi)核對自身輸出的葉節(jié)點對應(yīng)的三角形對,使用元素測試進(jìn)行精確計算,得到碰撞發(fā)生的第一碰撞時間。這個過程中,將兩個三角形之間的碰撞檢測問題,轉(zhuǎn)化為頂點與三角形的碰撞檢測以及邊與邊的碰撞檢測。以下通過相關(guān)實驗測試出本實施方式、傳統(tǒng)并行碰撞檢測方法以及傳統(tǒng)單核碰撞檢測方法在檢測耗時等相關(guān)指標(biāo)上的數(shù)據(jù)(如表1所示)。表1 碰撞檢測耗時的對比數(shù)據(jù)
權(quán)利要求
1.一種基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,包括如下步驟(1)對待檢測的三角形網(wǎng)格柔性場景模型中的每個三角形構(gòu)造對應(yīng)的包圍盒,進(jìn)而為三角形網(wǎng)格柔性場景模型建立N個子包圍盒層次結(jié)構(gòu),N為處理器的內(nèi)核數(shù);(2)根據(jù)N個子包圍盒層次結(jié)構(gòu),構(gòu)建若干個包圍盒測試樹;將所有包圍盒測試樹均衡分配給每個內(nèi)核進(jìn)行包圍盒重疊測試,進(jìn)而輸出存在包圍盒重疊的葉節(jié)點;(3)每個內(nèi)核對自身輸出的葉節(jié)點對應(yīng)的三角形對進(jìn)行精確連續(xù)碰撞檢測。
2.根據(jù)權(quán)利要求1所述的基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,其特征在于所述的步驟(1)中,為三角形網(wǎng)格柔性場景模型建立若干個子包圍盒層次結(jié)構(gòu),包括如下步驟1)計算出三角形網(wǎng)格柔性場景模型中每個三角形的中心;2)通過采用坐標(biāo)軸投影分割法對所有三角形中心進(jìn)行劃分將所有三角形中心分別投影到三維坐標(biāo)系的x、y、ζ軸上,選取軸上相距最遠(yuǎn)的兩個三角形中心投影之間的距離最大的軸作為投影軸,將以投影軸上相距最遠(yuǎn)的兩個三角形中心投影為端點的線段平分成兩個子線段;比較兩個子線段上三角形中心投影的個數(shù),進(jìn)而將三角形中心投影個數(shù)較多的子線段平分成兩個子線段;比較所有子線段上三角形中心投影的個數(shù),進(jìn)而將三角形中心投影個數(shù)最多的子線段平分成兩個子線段,依此直至將整個線段分成N個子線段,N為處理器的內(nèi)核數(shù);3)根據(jù)每個子線段上三角形中心投影的個數(shù),對應(yīng)地使所有三角形分成N組,即三角形網(wǎng)格柔性場景模型被分成N個子場景模型;4)利用N個內(nèi)核分別為N個子場景模型建立對應(yīng)的子包圍盒層次結(jié)構(gòu)。
3.根據(jù)權(quán)利要求1所述的基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,其特征在于所述的步驟O)中,將所有包圍盒測試樹均衡分配給每個內(nèi)核進(jìn)行包圍盒重疊測試,是通過將所有包圍盒測試樹放入一條碰撞檢測隊列中,當(dāng)處理器的任一內(nèi)核空閑時,使之從碰撞檢測隊列中按隊列順序抓取一個包圍盒測試樹進(jìn)行包圍盒重疊測試和精確連續(xù)碰撞檢測,直至碰撞檢測隊列置空。
4.根據(jù)權(quán)利要求1所述的基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,其特征在于所述的步驟(1)中,當(dāng)進(jìn)行第η次碰撞檢測時,子包圍盒層次結(jié)構(gòu)是根據(jù)第η次碰撞檢測時刻每個三角形的空間位置,對上一次碰撞檢測過程的子包圍盒層次結(jié)構(gòu)中最底層的包圍盒進(jìn)行重構(gòu),進(jìn)而自底向上對上一次碰撞檢測過程的子包圍盒層次結(jié)構(gòu)進(jìn)行整理更新而成的,η為大于1的自然數(shù)。
5.根據(jù)權(quán)利要求1所述的基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,其特征在于所述的步驟O)中,當(dāng)進(jìn)行第η次碰撞檢測時,所述的包圍盒測試樹為上一次碰撞檢測過程中的包圍盒測試樹。
6.根據(jù)權(quán)利要求1所述的基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,其特征在于所述的包圍盒為16-D0P包圍盒。
7.根據(jù)權(quán)利要求1所述的基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,其特征在于所述的若干個包圍盒測試樹包括N個子包圍盒層次結(jié)構(gòu)的自碰撞測試樹和Ν(Ν-1)/2個子包圍盒層次結(jié)構(gòu)間的互碰撞測試樹。
全文摘要
本發(fā)明公開了一種基于多核并行處理的柔性場景連續(xù)碰撞檢測方法,包括(1)構(gòu)建子包圍盒層次結(jié)構(gòu);(2)構(gòu)建若干個BVTT,將BVTT均衡分配給每個內(nèi)核進(jìn)行包圍盒重疊測試;(3)對三角形對進(jìn)行精確連續(xù)碰撞檢測。本發(fā)明通過利用數(shù)據(jù)分塊對三角形網(wǎng)格柔性場景模型進(jìn)行分割生成相應(yīng)的子包圍盒層次結(jié)構(gòu),然后將碰撞檢測任務(wù)(包括包圍盒重疊測試和精確連續(xù)碰撞檢測)均衡地分配給處理器的多個內(nèi)核進(jìn)行處理,提高了處理器的負(fù)載均衡度,改善了存儲訪問模式的規(guī)則性,大大提高了碰撞檢測的整體效率和速度。
文檔編號G06F11/00GK102393826SQ20111019882
公開日2012年3月28日 申請日期2011年7月15日 優(yōu)先權(quán)日2011年7月15日
發(fā)明者唐敏, 杜鵬, 童若鋒, 趙杰伊 申請人:浙江大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
奉化市| 赫章县| 苏尼特右旗| 大渡口区| 杨浦区| 光泽县| 平顶山市| 枣阳市| 封丘县| 苍梧县| 通海县| 泊头市| 宿迁市| 黄骅市| 临清市| 肇东市| 科技| 宕昌县| 清流县| 和田市| 九龙县| 洪江市| 苏州市| 习水县| 沈丘县| 柳江县| 长阳| 济宁市| 海南省| 兴宁市| 道孚县| 松江区| 崇文区| 新巴尔虎左旗| 高阳县| 潜江市| 汉川市| 黄大仙区| 宁阳县| 石河子市| 大港区|