999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于著色算法的并行碰撞檢測算法

2009-01-01 00:00:00譚睿璞楊秋娜丁文保李文輝
計算機應用研究 2009年5期

(1.吉林大學 計算機科學與技術(shù)學院 長春 130012; 2.長春工業(yè)大學 計算機科學與工程學

院 長春 130012; 3.西北工業(yè)大學 軟件與微電子學院 西安 710072)

摘 要:提出了一種基于著色算法的并行碰撞檢測算法,利用AABB包圍盒較好的緊密性和包圍球計算簡單的優(yōu)點以及并行算法中的分治策略構(gòu)建物體的混合包圍體層次(SAABB);然后采用破對稱技術(shù)中的典型算法——著色算法,將每棵任務(wù)樹編碼,以產(chǎn)生各不相同的類別,并將不同的類別指派到不同的并行機,在并行機上采用多線程技術(shù)執(zhí)行相同的類別的任務(wù)樹的遍歷,來檢測是否有碰撞發(fā)生。實驗結(jié)果表明,與現(xiàn)有的經(jīng)典的ICOLLIDE等算法相比,該算法在效率、精確性方面具有明顯優(yōu)勢,能夠滿足交互式復雜虛擬環(huán)境的實時性和精確性的要求。

關(guān)鍵詞:碰撞檢測; 混合包圍體層次; 并行技術(shù); 破對稱; 著色算法

中圖分類號:TP301.6文獻標志碼:A

文章編號:1001-3695(2009)05-1695-05

Parallel collision detection algorithm based on coloring algorithm

ZHAO Wei1,2 TAN Ruipu2 YANG Qiuna3 DING Wenbao2 LI Wenhui1

(1.College of Computer Science Technology Jilin University Changchun 130012 China; 2.School of Computer Science Engineering Changchun University of Technology Changchun 130012 China; 3.Software Microelectronics Institute Northwestern Polytechnical University Xi’an 710072 China)

Abstract:This paper presented a new parallel collision detection algorithm based on coloring algorithm. At first incorporated the merits of both AABB bounding box and bounding spheres to construct a hybrid bounding representation of arbitrary nonconvex polyhedra (SAABB) for attaining speed balanced especially the SAABB using divideandconquer technologies which were mostly primary technologies in parallel algorithm. Then applied symmetry breakingkcoloring technology which was also important in parallel algorithm in order to reduce different categories and assign them to different processors; also multithread was used in multiprocessor computer. At last experiments results show that the algorithm is advantageous over other current typical collision detection such as ICOLLIDE regarding efficiency and accuracy so can meets the realtime and accurate requirements in complex interactive virtual environment.

Key words:collision detection; mixed BVH; parallel technology; symmetry breaking; coloring algorithm

0 引言

碰撞檢測在計算機圖形學、虛擬現(xiàn)實、計算機游戲、動畫、計算機輔助設(shè)計、機器人及虛擬制造等領(lǐng)域中均是經(jīng)典而關(guān)鍵的問題[1],多年來一直受到較多的關(guān)注。目前,大多數(shù)虛擬對象的幾何模型都是由成千上萬個基本幾何元素組成。由于虛擬環(huán)境的幾何復雜性的增加,使得碰撞檢測的計算復雜性大大提高,復雜場景的交互消耗大量的計算機資源,碰撞檢測往往成為虛擬環(huán)境中的一個瓶頸。

近年來研究人員對碰撞檢測進行了廣泛而深入的研究,提出了大量高效的新算法。大體上可分為兩類,即空間分解法和層次包圍盒方法[2]。尤其是層次包圍盒(hierarchical bounding volumes),已經(jīng)作為公認的比較好的碰撞檢測手段被廣泛應用,包圍盒的基本思想是使用簡單的幾何體來代替復雜的幾何體,先對物體的包圍盒進行粗略檢測,包圍盒相交時其包圍的幾何體才有可能相交,這樣可以排除大量不可能相交的幾何體。主要包圍盒有:沿坐標軸的包圍盒(AABB)、包圍球(sphere)、沿任意方向包圍盒OBB等,每種包圍盒都有其優(yōu)缺點。本文針對包圍盒的特點,提出了一種結(jié)合包圍球和AABB包圍盒優(yōu)點的混合包圍體層次(SAABB)的新算法,加速了碰撞檢測的過程。

隨著并行機的高速發(fā)展,并行技術(shù)給研究者帶來了前所未有的機遇和挑戰(zhàn)。并行碰撞檢測在計算幾何和機器人控制等領(lǐng)域得到了廣泛的應用[3]。文獻[3]提出了同等大小體素構(gòu)成模型的并行處理算法,但對于過于簡單或是結(jié)構(gòu)復雜的模型較難處理。文獻[4]提出了基于凸多面體剖分的并行碰撞檢測算法,但其實驗模型為凸體有一定的局限性。文獻[5]提出了一種基于MPI的并行碰撞檢測算法,雖然算法效率得到了一定的提高,但是物體的八叉樹表示相當費時,算法進程間通信需要花費一定的時間。文獻[6]提出了一種基于流水線的并行碰撞檢測算法,雖然算法效率有很大提高,但任務(wù)進程數(shù) 對算法性能有很大影響,難以找到最佳值。

與以上方法不同,本文提出了一種新的基于著色算法的并行碰撞檢測算法。采用分治策略為每個任意形狀的物體建立混合包圍盒層次(SAABB);然后并行遍歷包圍盒樹,這樣極大提高碰撞檢測速度,并具有通用性能可以在單處理機和多處理機上運行。

1 理論基礎(chǔ)

1.1 基本碰撞檢測算法

碰撞檢測算法歸根到底都要進行基本集合元素的相交檢測,而基本幾何元素大多由三角形構(gòu)成,因此高效的三角形和三角形相交檢測對于提高碰撞檢測算法的整體效率至關(guān)重要。

文獻[7]提出了矢量判別法和標量判別法兩種三角形和三角形相交檢測算法,并通過實驗證明了矢量判別法比標量判別法快7%。本文以此算法設(shè)計了基本碰撞檢測算法,它主要用于在包圍盒粗判以后精確判別包圍盒中的物體是否相交。

1.2 混合包圍盒層次 

在粗略相交檢測階段,本文采用了包圍球和包圍盒樹來加速算法。包圍球具有簡單,且旋轉(zhuǎn)平移后易于更新的特點;缺點是緊密性差,需要檢測相交的包圍盒對數(shù)多,而AABB包圍盒與包圍球相比,它對物體包裹更加緊密,構(gòu)造和相交測試較簡單。因此,筆者利用AABB包圍盒和包圍球各自的優(yōu)點提出了混合包圍體層次(SAABB),本文采用SAABB混合層次包圍體樹進行粗略階段的相交檢測。

1.3 混合模型中不同類型包圍盒的相交檢測

設(shè)AABB包圍盒內(nèi)點的坐標為(x,y,z),包圍盒的邊長為H 包圍盒的中心坐標為(Xs,Ys,Zs),假設(shè)中心點位于坐標原點,則AABB包圍盒的約束方程為

{(x,y,z)|0<x,y,z<H}(1)

同樣,設(shè)包圍球內(nèi)點的坐標為(x,y,z),包圍球的半徑為Rs,球心坐標為(X0,Y0,Z0),則包圍球的約束方程為

{(x,y,z)|(x-X0)2+(y-Y0)2+(z-Z0)2<R2s}(2)

假設(shè)AABB包圍盒位于坐標原點(0,0,0),令φ=tg-1(Y0/X0)。其中X0不為零,則AABB包圍盒與包圍球之間的距離為

dist=X20+Y20+Z20-(Rs+H)×φ(3) 

設(shè)AABB包圍盒與包圍球中心點的連線與Z坐標軸的夾角為θ,則有:當Y0>0且X0>0時,θ=φ;當Y0>0且X0<0時,θ=π-φ ;當Y0<0且X0>0時,θ=-φ;當Y0<0且X0<0時,θ=π+φ。因此,僅需比較θ×dist和|Z0|即可得到兩包圍盒的相交情況;若θ×dist<|Z0|,則AABB包圍盒與包圍球相交;否則不相交。

1.4 并行技術(shù)

1.4.1 平衡樹[6,8]

對于二叉樹而言,稱一棵包圍盒樹為完全的,當且僅當包圍盒樹中的每一個葉節(jié)點對應于S的一個單元素子集,即只包含一個基本幾何元素時。由以上描述可知,包圍盒樹最多有2n-1個節(jié)點。其中有n個葉節(jié)點且要求兩子包圍盒內(nèi)的多邊形個數(shù)大致相等;一棵完全的包圍盒樹的高度至少為 log 5n,此時稱為樹是平衡的。

1.4.2 分治策略[6,8]

并行程序設(shè)計中最基本的一種技術(shù)即是分治策略。分治策略的特點是將一個問題分為與原來的較大問題有相同形式的子問題,進一步分為較小的問題通常是通過遞歸方法,直到無須再分解為止。接著就完成這些簡單的任務(wù)并將結(jié)果合并,然后按更大的任務(wù)繼續(xù)合并,直到獲得最后的結(jié)果。當每次分割產(chǎn)生兩部分時,遞歸分治模型就會形成一棵二叉樹;分治策略也可應用于將一個任務(wù)在每一步分為M(M>2)個部分的情況,則稱為M路分治,通常有二叉樹(M=2)和四叉樹(M=4)。

1.4.3 破對稱技術(shù)[9~11]

本文的并行算法是借鑒破對稱技術(shù)中的著色算法的思想而提出的,在此先作簡要的介紹。

破對稱(symmetry breaking),就是打破某些問題的對稱性,該技術(shù)常用在圖論問題和隨機算法的設(shè)計上。著色算法就是采用該技術(shù)的基本思想來實現(xiàn)的。

令G=(V,E)是一有向環(huán)(即每個頂點的入度和出度均為1),且對于任意兩個頂點u,v∈V,必存在一條從u到v的路徑。所謂G的k著色(kcoloring)就是一種映射c,V→{0,1,…,k-1},使得如果(i,j)∈E,則c(i)≠c(j)。

給有向環(huán)的頂點著色最直接的辦法是從某一頂點開始,給各頂點相同(交替)地著色,但對于回路而言,第三種顏色是需要的,這種簡單的順序著色算法很清楚是最優(yōu)的,但似乎不能導出一個快速并行算法。使用并行的方法著色,主要困難在于問題的明顯對稱性,因為并行地給很多頂點指派一種顏色,就意味著這些頂點是可以與其余頂點區(qū)分開的,但是在圖中所有的頂點均相同。因此,必須引入某種技術(shù)將頂點劃分成若干類,使得每類可以指派相同的顏色。

對于有向環(huán)圖G=(V,E),令數(shù)組S表示G的弧,使得對于1≤i,j≤n,每當(i,j)∈E時,S(i)=j。可以設(shè)置P(S(i))=i(i≤i≤n),立即得到頂點的前驅(qū)關(guān)系。

假定開始時,頂點i的顏色c(i)=i,令i的二進制表示為it-1it-2…ik…i1i0,則c(i)k表示c(i)的第k位的二元值,則有下述基本的著色算法:

輸入:尺寸為n的數(shù)組S表示有向環(huán)的弧;初始頂點著色c(i)。

輸出:有向環(huán)頂點著色c′(i)。

begin 

fori=1to npardo

(1)令k是c(i)和c(S(i))的二進制位不同的最低有效位;

(2)c′(i)←2k+c(i)k;

endfor

end

上述算法的正確性已經(jīng)得到證明,若識別k可以在o(1)時間內(nèi)完成。

2 算法描述及實現(xiàn)

2.1 混合包圍體層次的構(gòu)建

對于一個給定的基本幾何元素集,混合包圍體層次的構(gòu)建分為如下四個步驟:

a)采用文獻[12]中的方法來為物體的每個基本元素構(gòu)建小包圍球,稱之為基本球(underlying sphere)。主要有兩個用途:(a)有助于快速劃分包圍體;(b)在進行精確的相交測試前,它可用于預檢測。

b)建立根節(jié)點。就是要建立整個物體的AABB包圍盒、整個物體的包圍球和物體中所有多邊形的基本球。

c)利用與局部坐標軸垂直的平面,將上述包圍體劃分成兩個子包圍體以形成根節(jié)點的兩個子節(jié)點。子節(jié)點具有與根節(jié)點一樣的三個特征,即AABB包圍盒、包圍球和節(jié)點中所有多邊形的基本球。

為使得左、右子包圍體中的多邊形個數(shù)大致相等,保證混合包圍盒體樹的平衡,采用了一個懲罰函數(shù)f(p)定義如下:

f(p)=|nl-nr|+λnc(4)

其中:p為分割面;nl、nr、nc分別為左包圍體內(nèi)右包圍體內(nèi)和橫跨基本球的個數(shù);λ是nc的一個影響系數(shù)。理想的分割面就是在所有軸向上懲罰函數(shù)值最小的分割面:

minmin{f(p)|px⊥x_axis,px∈[xmin,xmax]}

min{f(p)|py⊥y_axis,py∈[ymin,ymax]}

min{f(p)|pz⊥z_axis,pz∈[zmin,zmax]}(5)

d)對c)中得到的兩個子節(jié)點分別遞歸地執(zhí)行上述包圍體的分割過程得到最終的混合包圍盒樹。

對每個節(jié)點采用如上的方法遞歸建立每個物體的包圍盒樹。適當?shù)倪f歸終止條件,用簡單的線性判別函數(shù):

p(x)=AT*B(6)

其中:A=(a1,a2,a3,…,an);B=(b1,b2,b3,…,bn)。b1,b2,b3…,bn為遞歸終止的各種因素,常取為:包圍盒樹要求的高度,葉子節(jié)點中要求所含基本幾何元素的最多數(shù),a1,a2,a3,…,an分別為b1,b2,b3,…,bn對應的加權(quán)值。

圖1是根據(jù)上述算法步驟構(gòu)建的平衡二叉樹,每個節(jié)點中第一行的兩個數(shù)字表示包含在對應節(jié)點中的基本球的數(shù)目(等于相應多邊形個數(shù))和對應節(jié)點的包圍球的半徑;第二行的三個數(shù)字表示的是對應節(jié)點的AABB包圍盒的寬度、高度、深度。

2.2 基于混合包圍體層次的串行碰撞檢測法

物體A和B的混合包圍體層次構(gòu)建完成,就可以通過遍歷其平衡樹來進行它們之間的碰撞檢測,在此,筆者引入任務(wù)樹的概念[6]。將遍歷兩個物體的平衡包圍盒樹的過程定義成一棵任務(wù)樹的遍歷,簡單的任務(wù)樹表示如圖2所示。

碰撞檢測的過程從本質(zhì)上來說是一個或樹的遍歷過程。一方面,如果碰撞發(fā)生在一些子任務(wù)中,那么物體A和B肯定發(fā)生了碰撞;另一方面,如果所有的子任務(wù)都沒有發(fā)生碰撞,那么物體A和B肯定沒有發(fā)生碰撞,因此一個任務(wù)的結(jié)果(true發(fā)生碰撞或者1沒有發(fā)生碰撞)可以通過將所有子任務(wù)碰撞結(jié)果作邏輯或運算。

利用任務(wù)樹,混合包圍體層次的廣度遍歷過程的算法如下:

輸入: 兩物體A B

輸出: 碰撞檢測的結(jié)果 //true: 相交 1: 不相交

WFSTraversal (RA,RB)

{ 建立A B兩物體的混合包圍體樹RA,RB;

//任務(wù)(RA,RB)作為根任務(wù)

LIVESET<任務(wù)節(jié)點 (RA,RB)

//將任務(wù)節(jié)點放入隊列

for i =1 to LIVESET.size

//循環(huán)執(zhí)行隊列中的所有節(jié)點

{

while (LIVESET!=NULL){ //隊列不為空

(a1,b1)< LIVESET; //從隊列中取出一任務(wù)節(jié)點

SplitNode=true;

//分裂變量為真,表示節(jié)點繼續(xù)劃分子節(jié)點

if((a1,b1)節(jié)點的包圍球不相交)

SplitNide=FALSE;//此任務(wù)節(jié)點不相交,分裂變量設(shè)為假

else //包圍球相交

Flag1=(Sphere2BoxVolumeRatio(a1)>=

RatioThreshold(a1) );

// a1進行包圍盒相交的閾值

Flag2=(Sphere2BoxVolumeRatio(b1)>=

RatioThreshold(b1) );

// b1進行包圍盒相交的閾值

if (Flag1)//a1包圍盒相交 

if (Flag2)//b1包圍盒相交

if ( (a1,b1) 任務(wù)節(jié)點的AABB包圍盒不相交)

SplitNode=FALSE; 

//此任務(wù)節(jié)點不相交,分裂變量設(shè)為假

endif

else//不再進行b1節(jié)點AABB包圍盒的相交檢測 

if ( (a1,b1) 任務(wù)節(jié)點的a1的AABB包圍盒和b1包圍球不相交) 

SplitNode=FALSE; 

//此任務(wù)節(jié)點不相交,分裂變量設(shè)為假

endif

endif 

else if (Flag2){

//應進行b1節(jié)點AABB包圍盒的相交檢測

if ((b1,a1) 任務(wù)節(jié)點的b1的AABB包圍盒和a1包圍球不相交) 

SplitNode=FALSE; 

//此任務(wù)節(jié)點不相交,分裂變量設(shè)為假

end if

end if // flag2 

end if // flag1

end if // (a1,b1) 任務(wù)節(jié)點的b1包圍球和a1包圍球不相交

if (SplitNode=FALSE) //不相交,不再劃分子節(jié)點

else // 相交,繼續(xù)子節(jié)點的劃分

if (a1是葉節(jié)點) //a1 是葉節(jié)點

if ( b1也是葉節(jié)點))//b1是葉節(jié)

CollisionDetectionFundamentalAlgorithm(a1,b1);

// 調(diào)用基本碰撞檢測函數(shù)

if (a1和b1 相交)

return TRUE;// A B發(fā)生碰撞

end if 

else //b1不是葉子節(jié)點,則產(chǎn)生b1的兩個子節(jié)點

LIVESET< (a1,b1> left); //a1,b1> left進入隊列

LIVESET< (a1,b1> right); //a1,b1> right進入隊列

end if 

else if (b1是葉子節(jié)點))

{ //a1不是葉子節(jié)點,則產(chǎn)生a1的兩個子節(jié)點

LIVESET< (a1> left,b1);

LIVESET< (a1> right,b1);

else // b1,a1都不是葉子節(jié)點,則產(chǎn)生b1,a1的四個子節(jié)點

LIVESET< (a1> left,b1> left);

LIVESET< (a1> left,b1> right);

LIVESET< (a1> right,b1> left);

LIVESET< (a1> right,b1> right);

end if

end if

end if

}endwhile

}end for

return FALSE; // A 和B 不發(fā)生碰撞

}//WFATraversal遍歷結(jié)束

其中任務(wù)樹的節(jié)點采用隊列(LIVESET)存儲。函數(shù)ratioThreshold()返回一個閾值,來決定是否還要進行AABB包圍盒的相交檢測。

2.3 碰撞檢測算法的并行化

并行域一般在算法的循環(huán)部分,本文基本算法隊列中的節(jié)點可以并行執(zhí)行,大大節(jié)省了時間,從整體上提高了算法的效率。并行化基本算法如下:

輸入: 兩物體A B (RA,RB)

輸出: 碰撞檢測的結(jié)果 //TRUE: 相交 FALSE: 不相交

bool Parallel_Collision _detection(所有物體) 

{

分別建立每個物體的混合包圍體樹SAABB;

//若有n個物體,則形成n*n棵任務(wù)樹,設(shè)m=n*n;由所有物體的平衡包圍盒樹通過兩兩組合成多棵任務(wù)樹,將每棵任務(wù)樹的遍歷看做一個任務(wù);

begin 

fori=1tompardo

(1) 令k是c(i)和c(S(i))的二進制位不同的最低有效位;

(2) c′(i)←2k+c(i)k;

(3)將任務(wù)i 插入到處理器c′(i)的單鏈表中;

endfor

end

//每個處理器并行處理每棵任務(wù)樹

for each processor i ,in parallel do

begin

{ 

LIVESET←(a0,b0);

for ( w=1tom/ j)

{ 

if (當前任務(wù)節(jié)點的包圍體不相交)取消當前任務(wù);

else if (當前任務(wù)包含有一個葉子節(jié)點)

CollisionDetectionFundamentalAlgorithm();

//在當前任務(wù)處調(diào)用基本碰撞檢測函數(shù);

if (結(jié)果為TRUE)取消當前并行執(zhí)行的所有其他任務(wù);

return TRUE;// 發(fā)現(xiàn)碰撞

end if

else // 當前任務(wù)包含中間節(jié)點

以同樣的方式將當前任務(wù)的所有子節(jié)點放入隊列LIVESET;

end if 

end if 

主線程等待其他并行的任務(wù)完成

StoreIntersectingTaskNodes();

//存儲相交的任務(wù)節(jié)點信息 

}end for

}

end

return FALSE;

}

3 實驗結(jié)果及性能分析

本算法采用C語言在SGIONYX2工作站(有四個R10000處理器)上實現(xiàn),部分的并行采用多線程共享同一存儲地址來實現(xiàn),此處理器同一進程中能同時執(zhí)行的線程數(shù)最多為64,取為32,w取6。

實驗環(huán)境設(shè)定了一個簡單的動態(tài)場景,實驗環(huán)境中有31個物體作隨機運動,基本幾何元素數(shù)(三角面片數(shù))多于80 000個。為了說明本算法的優(yōu)越性,進行如下三個實驗。

實驗1 時間復雜性分析

實驗中將本文算法與其他經(jīng)典算法進行了時間復雜性、幀頻及運行1 000步的時間測試。實驗結(jié)果如表1所示。

表1 時間復雜性分析

算法類型算法時間復雜度幀頻/fps運行1 000步的時間/s

BCDAO(n2)3.195 109

ICOLLIDEO(n log n)4.054 231

SPHEREO(n log n)4.053 265

SCDAO(n log n)7.05185

PCDAO(n/w log n)45.456

其中:BCDA(base collision detection algorithm)為基于三角形與三角形相交的基本碰撞檢測算法;ICOLLIDE算法[13]為采用了AABB包圍盒的算法;SPHERE為采用了包圍球的算法; SCDA(serial collision detection algorithm)為采用混合包圍盒的串行碰撞檢測算法;PCDA(parallel collision detection algorithm)為本文提出的基于著色算法的并行碰撞檢測算法。

從結(jié)果可以看出,混合包圍體算法與單獨采用一種包圍體的算法相比,碰撞檢測的效率有了很大的提高。

實驗2 算法并行化分析

為說明并行計算的優(yōu)點,本文將BCDA、ICOLLIDE、包圍球算法(SPHERE)、SCDA采用著色算法并行化 在上述實驗環(huán)境下,實驗結(jié)果如表2所示。

表2 算法并行化分析

算法類型串行、并行算法運行1 000步的時間/s

BCDANP(nonparallel)5 109

P(parallel)1 976

ICOLLIDENP(nonparallel)4 231

P(parallel)1 366

SPHERENP(nonparallel)3 265

P(parallel)1 036

SCDANP(nonparallel)185

P(parallel)56

從結(jié)果可以看出,采用破對稱技術(shù)并行化算法,進一步加快了碰撞檢測過程。

實驗3 性能與效率測試

對并行算法的測試主要是測試加速比和并行效率,可以通過式(7)(8)完成: 

S(p)=ts/tp(7)

其中:S(p)表示加速比;ts表示使用單處理器系統(tǒng)執(zhí)行算法的時間;tp表示使用具有p個處理器的多處理機執(zhí)行所需的時間。

E=ts/tp×p=S(p)×1/p(8)

其中:E表示并行效率;p表示處理器的個數(shù)。并行效率可定義為加速比與CPU個數(shù)之間的比值。

在上述實驗條件及環(huán)境下,筆者測試了在不同數(shù)量的處理器下并行算法的加速比和并行效率。實驗得出本文并行算法的加速比S(p)=3.3,并行效率E=0.82。實驗結(jié)果如圖3(a)和(b)所示。

從理論上講,在多處理器下,并行效率可達約80%,加速比可達約5.7。但由實驗結(jié)果可知,并行效率和加速比很難得到這種理想值,主要原因在于實驗環(huán)境,如果實驗環(huán)境簡單,碰撞檢測的計算任務(wù)小,幾個處理器就足夠了,若處理器太多,則難以實現(xiàn)最佳負載平衡同時處理器也得不到充分利用;反之如果實驗環(huán)境復雜,則需要處理器數(shù)增加。因此在一定的實驗環(huán)境下,隨著處理器個數(shù)的增加,算法的加速比在峰值后呈現(xiàn)下降趨勢,并行效率也在下降。對于不是特別復雜的虛擬環(huán)境,采用多處理器2~4個就足夠了。

并行化處理顯著地提高了碰撞檢測算法的速度,能夠滿足交互式虛擬環(huán)境實時性、精確性的要求。

4 結(jié)束語

本文提出了一種基于著色算法的并行化碰撞檢測算法。該算法的特點主要表現(xiàn)在以下三個方面:

a)利用AABB包圍盒和包圍球的優(yōu)點來構(gòu)建混合包圍體層次。在精確碰撞檢測之前,通過球與球、球與包圍盒、包圍盒與包圍盒的相交檢測排除大量不相交的多邊形。

b)算法用分治策略建構(gòu)平衡包圍體樹,保證了并行的各子問題規(guī)模大致相等,從而能夠充分利用多處理機的性能。

c)采用著色算法來設(shè)計算法,縮短了碰撞檢測的時間,適用于對動態(tài)、復雜、交互式的場景進行實時碰撞檢測。

盡管如此,算法仍有一些有待改進的地方。今后的工作將主要集中在:構(gòu)建平衡包圍盒樹時,可以采用M路分治算法充分并行化;包圍盒劃分時線性判別函數(shù)中因素和加權(quán)值的適當選擇;采用并行虛擬機(PVM)技術(shù),使算法在互聯(lián)網(wǎng)絡(luò)的PC機上實現(xiàn)并行;還可采用新的并行技術(shù)來擴展算法,如MPI、OpenMP等。

參考文獻:

[1]范昭煒,萬華根,高曙明. 基于流的實時碰撞檢測算法[J]. 軟件學報 2004,15(10):1505-1514.

[2]ADELSON S J HODGES L F. Generating exact raytraced animation frames by reprojection[J]. IEEE Compute Graphics and Applications,1995,15(3):43-52.

[3]LAWBR O S KALE′E L V. A voxelbased parallel collision detection algorithm[C]//Proc ofInternational Conference on Supercomputing. New York:ACM Press 2002:285-293.

[4]薛廣濤 李超 尤晉元. 基于凸多面體剖分的并行碰撞檢測算法[J].上海交通大學學報,2004,38(8):1385-1388.

[5]劉曉平 曹力. 基于MPI的并行八叉樹碰撞檢測[J]. 計算機輔助設(shè)計與圖形學學報 2007,19(2):184-187,192.

[6]趙偉 何艷爽. 一種基于并行的碰撞檢測算法[J]. 吉林大學學報:工學版 2008 38(1):152157.

[7]許強呂曉峰馬登武. 三角形和三角形相交測試技術(shù)研究[J]. 計算機仿真 2006 23(8): 76-78,145.

[8]范昭煒 萬根華 高曙明. 基于并行的快速碰撞檢測算法[J].系統(tǒng)仿真學報 2000,12(5):548-552.

[9]陳國良. 并行算法的設(shè)計與分析(修訂版)[M]. 北京: 高等教育出版社 2002.

[10]陳國良. 并行計算——結(jié)構(gòu)#8226;算法#8226;編程(修訂版)[M]. 北京: 高等教育出版社 2003.

[11]WILKINSON B ALLEN M. 并行程序設(shè)計[M]. 2版. 陸鑫達,等譯. 北京: 機械工業(yè)出版社 2005.

[12]RITTER J. An efficient bounding sphere[M].San Diego,CA:Acaemic Press Inc 1990:301-303.

[13]COHEN J LIN M MANOCHA D et al. ICOLLIDE:an interactive and exact collision detection system for largescale environments[C]//Proc ofACM Interactive 3D Graphics Conf. New York:ACM Press 1995:189-196.

主站蜘蛛池模板: 亚洲色图欧美| 欧美中文一区| 欧美午夜理伦三级在线观看 | 国产精品v欧美| 婷婷色一二三区波多野衣| 午夜性爽视频男人的天堂| 91精品久久久无码中文字幕vr| 日韩天堂网| 亚洲永久视频| 青青操视频免费观看| 欧美在线三级| 国产精品观看视频免费完整版| 在线永久免费观看的毛片| 99资源在线| 成人亚洲国产| 老司机精品一区在线视频| 亚洲色欲色欲www在线观看| 欧美在线综合视频| 欧美一区二区自偷自拍视频| 中文字幕在线一区二区在线| 女同国产精品一区二区| 波多野结衣视频网站| 99精品热视频这里只有精品7| 亚洲午夜福利精品无码不卡| 亚洲午夜久久久精品电影院| 99热这里只有成人精品国产| 欧美一级黄片一区2区| 97se亚洲综合不卡| 91毛片网| 亚洲一级无毛片无码在线免费视频| 免费在线一区| 亚洲日本中文字幕天堂网| 精品无码国产一区二区三区AV| 黄网站欧美内射| 四虎成人精品| 亚洲视屏在线观看| 大学生久久香蕉国产线观看| 欧美性天天| 欧美伦理一区| 欧美三级日韩三级| 久久性妇女精品免费| 乱人伦中文视频在线观看免费| 日本欧美午夜| 手机精品福利在线观看| 精品久久高清| 欧美成人一区午夜福利在线| 无码中文字幕加勒比高清| 欧美精品伊人久久| 成人在线观看不卡| 亚洲人成网址| 国产www网站| av在线人妻熟妇| 日韩精品成人网页视频在线| 在线国产你懂的| 亚洲欧美另类日本| 欧美日韩一区二区三区四区在线观看| 69视频国产| 国产精品无码在线看| a在线亚洲男人的天堂试看| 一级毛片在线免费视频| 毛片基地美国正在播放亚洲| 国产a v无码专区亚洲av| 国产亚洲欧美在线专区| 国产亚洲一区二区三区在线| 日韩少妇激情一区二区| 久久人与动人物A级毛片| 亚洲第一视频网站| 91久久青青草原精品国产| 亚洲成人一区在线| 国产成人在线小视频| 久久香蕉国产线看观| 国产av一码二码三码无码| 国产99精品视频| 国内a级毛片| 国产嫩草在线观看| 国产精品无码翘臀在线看纯欲| 91美女视频在线观看| 99在线观看免费视频| 国产精品一区在线观看你懂的| 99视频在线免费看| 中文字幕亚洲乱码熟女1区2区| 国产一在线|