專利名稱:一種基于四叉包圍盒樹的柔性織物自碰撞檢測方法
技術領域:
本發明涉及一種基于四叉包圍盒樹的柔性織物自碰撞檢測方法,屬于柔性織物仿真碰撞 檢測技術領域。
背景技術:
碰撞處理包括碰撞檢測和碰撞響應兩部分。碰撞檢測的目標是發現碰撞并報告;碰撞響 應是在碰撞發生后,根據碰撞點及其它參數使發生碰撞的對象做出正確的動作,以反應真實 的動態效果。
現有的基于空間的碰撞檢測算法大致可劃分為兩大類空間分解法(Space Decomposition) 和層次包圍盒法(Hierarchical Bounding Volumes)。這兩類算法的主要思想都是為了減少 被測元素的數量,以提高算法效率。
空間分解法是將整個虛擬空間劃分成相等體積的小單元格,只對占據同一單元格或相鄰 單元格的幾何對象進行相交測試。比較典型的方法有八叉樹和BSP樹。空間分解法對于一般 的環境很難選擇一個最優的空間分解尺寸,若選擇不當則會導致空間耗費大、計算效率低。
層次包圍盒法的核心思想是利用體積略大而幾何特性簡單的包圍盒將復雜幾何對象包裹 起來,在進行碰撞檢測時,首先進行包圍盒之間的相交測試,只有包圍盒相交時,才對其所 包裹的對象做進一步求交計算。在構造碰撞體的包圍盒時,通過引入樹狀層次結構可快速剔 除不發生碰撞的元素,減少大量不必要的相交測試,從而提高碰撞檢測效率。比較典型的包 圍盒類型有沿坐標軸的包圍盒AABB(Axis Aligned Bounding Boxes),包圍球(Spheres),方 向包圍盒00BB(Object Oriented Bounding Box)等。
在柔性織物形變動態模擬中,碰撞可以分成兩類 一類是織物與外界其他物體的碰撞,
如與桌子、地面、人體等的碰撞,稱為他碰撞;另一類是織物自身各部分之間的碰撞,稱為
自碰撞。這兩種碰撞有著不同的檢測和處理方法。本發明針對自碰撞問題。
織物在運動中,除了與周圍的物體發生碰撞外,其自身的各個部分也會發生碰撞(即自 碰撞)。為了保證模擬的真實感,需要及時檢測到這些碰撞并對其進行響應,否則會發生穿 透現象,破壞模擬的真實感。對織物進行碰撞檢測和響應處理是一項非常復雜而耗時的工作, 而在應用中對其實時性的要求卻很高。因此,如何設計具有真實感和實時性的碰撞檢測和響 應算法成為織物模擬的關鍵。 如圖1所示,碰撞檢測分為初步檢測和精確檢測兩個階段。初步檢測階段采用層次包圍盒技術和空間層次剖分技術來找到可能發生碰撞的基本幾何元素對(如三角面片對);精 確檢測階段則處理基本幾何元素對之間的精確求交檢測。 傳統碰撞檢測方法主要存在以下一些問題
(1) 采用二叉樹的形式建立層次包圍盒樹,并且葉子結點只包含一個基元,這種方法雖 容易理解和實現,但當葉子結點數量龐大時,會導致樹的高度增加很快,這一方面使得內存 的占用量很大,另一方面降低了算法的效率。
(2) 傳統的方法在自底向上構建包圍盒樹的過程中未考慮幾何基元的空間位置關系,這 會在一定程度上導致層次包圍盒結構比較松散,從而影響碰撞檢測的效率。
針對以上問題,本發明提出了一種基于四叉包圍盒樹的柔性織物自碰撞檢測的方法,其 核心內容可以總結為對織物幾何基元建立四叉包圍盒樹,并采用基于四叉包圍盒樹的法向 量錐法、三角面片重心檢測法和平面同側過濾法分別在粗略檢測和精確求交階段過濾掉不可 能相交的三角面片,以此大大減少相交測試的計算量。
發明內容
本發明要解決的技術問題是克服現有技術的不足,提供一個適應柔性織物自碰撞檢測 的方法,減少相交測試的計算量,提高運算效率。
本發明采用的技術方案對織物幾何基元建立四叉包圍盒樹,基于四叉包圍盒樹,結合 法向量錐法、三角面片重心檢測法在粗略檢測階段過濾掉不可能相交的三角面片,然后,在 精確求交階段,采用平面同側過濾法減少精確求交的計算量。該方案實現的步驟,如圖2所 示
(1) 利用織物幾何基元的空間位置關系,構建結構緊密的四叉包圍盒樹;
(2) 基于四叉包圍盒樹,采用法向量錐法,排除掉不可能相交的三角面片對;
(3) 根據兩三角面片重心間的距離,過濾掉距離大于給定閾值的三角面片對;
(4) 基本幾何元素間的精確檢測,平面同側過濾法過濾掉不必要的線段平面求交。 本發明與現有技術相比的有益效果是-
系統效率得到了明顯提升,保證了仿真的實時性。在質點數量相同的情況下,相比二叉 樹而言,四叉樹的深度較小,因此碰撞檢測執行的遞歸次數也就明顯較少。而后通過三角面 片重心距離法等方法過濾掉更多未發生碰撞的碰撞對,從而大大減少了精確求交的計算量, 提高了運算效率。
圖1碰撞檢測算法框架圖2基于四叉樹包圍盒的柔性織物自碰撞檢測法步驟示意5—圖3織物四叉樹劃分示意圖4兩個子結點錐頂角合并示意圖; 圖5重心距離示意圖; 圖6平均幀率對比圖; 圖7重心距離參數作用效果圖。
具體實施例方式
下面結合附圖及具體實施方式
對本發明進一步詳細說明。
(1) 利用織物幾何基元的空間位置關系,構建結構緊密的四叉包圍盒樹;
第一步采用自上而下的方法遞歸建立四叉樹。用四叉樹描述層次包圍體結構,將織物 按照4x4分割, 一直分割到三角面片為止,即葉子結點為三角面片。織物劃分如圖3所示。 樹的根結點是包圍整個織物的包圍盒,葉結點是包圍織物的基本幾何元素(三角面片)的包圍 盒,中間結點則對應于各級子部分的包圍盒。
第二步在每一個時間步長內,需要更新四叉包圍盒樹每個結點的錐頂角和包圍盒信息, 采用后序遍歷四叉樹的方法進行更新。
(2) 基于四叉包圍盒樹,采用法向量錐法,排除掉不可能相交的三角面片對; 第一步遞歸計算四叉包圍盒樹各結點的圓錐的頂角a值。在遍歷求解過程中,將四個
孩子結點分為兩組,先分別求出各組中兩個子結點合并的《值,記為a,、 a2,再將a,、 a2 合并,從而得到四個孩子結點的父結點的cr值。
假設兩個子結點對應錐體軸線的夾角為/ 。則這兩個子結點合并的"值可由兩個子結點 的A、 "2以及/ 來確定(如圖4所示錯誤!未找到引用源。),公式為cr-》/2 + max(c^,a2)。
若某結點僅有一個子結點,則其a屬性等于其子結點的a值。二叉樹的每個葉結點僅包 含一個三角形元素,其"=0。
第二步檢測層次包圍盒四叉樹的某一結點,若此結點對應區域的圓錐頂角"<^/2,可
以斷定這塊區域沒有發生自碰撞,停止進一步檢測;但若"2;r/2,則這塊區域可能發生了 自碰撞。
(3) 根據兩三角面片重心間的距離,過濾掉距離大于給定閾值的三角面片對; 用兩個三角面片重心間的距離來標識兩個三角面片的距離,當該距離大于某閾值時,這
兩個三角面片不相交,否則才有可能相交。設兩個三角面片M^,C,、 A^i^C2為大小相等 的等腰直角三角形,直角邊長為L,重心間的距離為D。則當兩個三角面片發生碰撞時,其 重心的距離滿足式Ds主ViF。當D取1V F時(如圖5錯誤!未找到引用源。所示),兩個三角形共面,且兩個三角形的重心與相交的斜邊頂點位于同一直線上,此時是兩個三角形 相交且重心距離最遠的情況。
重心距離檢測法設定一個重心距離閾值,當兩三角面片的重心距離大于該閾值時,則 認為這兩個三角面片不相交,過濾掉該三角面片對,不對它們進行進一步的精確求交檢測。
在應用過程中,可根據系統的實時性需求調整重心距離閾值,以可接受的碰撞對遺漏率 換取期望的實時性。
(4)基本幾何元素間的精確檢測,平面同側過濾法過濾掉不必要的線段平面求交; 判斷質點在兩個時刻的位置是否位于三角面片的同側,如在同側則表明質點并未穿透面
片,因而不需要進行點面求交計算,從而達到優化目的。
判斷質點當前時刻與下一時刻位置是否位于三角面片同一側的方法如下
第一步由三角面片的法向(法向已知)及三角面片的一個頂點得到三角面片所在平面
的方程;
第二步將當前時刻與下一時刻的質點位置分別帶入方程的表達式得出值X; X=0,表示 點在平面上;X〉0表示點位于平面正側;X 〈O表示點位于平面負側。
由于平面方程ax+by+cz+d=0的表達式ax+by+cz+d為一次運算,計算復雜度低,故該方 法耗時較少。
四叉包圍盒樹法實驗本實驗將基于四叉包圍盒樹的碰撞檢測方法與傳統的基于二叉包 圍盒樹的方法進行對比。首先對兩種包圍盒樹中的包圍盒個數進行對比,數據如表l所示-表l包圍盒數量(個)
7i 17X17 255 1023 213853 —
由表1可看出,與二叉包圍盒樹相比,采用四叉包圍盒樹對織物進行劃分減少了包圍盒 的總個數,從而可減少系統的計算開銷。
下面對以上兩種方法的檢測效率進行實驗對比。創建一塊初始方向為水平的織物,固定 織物的中心質點,然后運行系統讓織物自然垂下。分別采集兩種方法在IO秒內檢測到的碰 撞對個數(見表2)和10秒內的平均幀率(見表3)。 表2檢測到的碰撞對個數(個)
質,、數目"~~i"^"i i7xi7
一二叉玩 3—048—8— — —504—1—54—' —895692— 四叉樹 21960 186565 352657
質n r四表3包圍盒樹法平均幀率5^比(FPS)
質點數目i5X5 "~~: 17X17
二叉樹 :65.09 56.82 16.65
四叉樹 i 68. 58 62. 20. 37. 64
由表2、表3可知,四叉包圍盒樹法比二叉包圍盒樹法獲得的需要精確求交的碰撞對數量 明顯減少,即四叉包圍盒樹法可過濾掉更多未發生碰撞的碰撞對,從而減少后面點面和邊邊 精確求交的次數。
從圖6可看出,質點數量越多,采用本發明方法對系統效率的提高就明顯。 三角面片重心距離檢測法實驗本實驗用以驗證三角面片重心距離檢測法的有效性。重
心距離參數取為最大邊長的1.1倍。創建一塊初始方向為水平的織物,固定織物的中心質點,
然后運行系統讓織物自然垂下。分別統計采用該方法前后檢測到10萬個碰撞對時系統運行 的平均幀率,見表41表4、表5。 表41檢測到的碰撞對(個)
,點數, ~~" 9X9 17X1
呆使用i心運禽檢須0, Tooooo 「To00—。 " iooocr
jflS—運—「83193 — —76025— "63606 —
表5平均幀率對比(FPS)
質點數目 5X5 ^
—未使用i—心距M檢測73. 46 71. —量:lS國運禽齒ii法— 一 —國一74:一90 一一 — 74: 36 : 56. 75
由表4、表5可知,采用重心距離檢測法后,當質點數越多時,過濾掉的碰撞對數也越多, 系統運行幀率得到較明顯的提升。
重心距離參數實驗驗證重心距離參數對三角面片重心距離檢測法效率的影響。
記三角面片最長邊邊長為L,分別取重心距離參數值為1.5L, 1.4L, 1.3L, 1. 2L, 1. 1L, L, 0.9L, 0. 8L, 0. 7L, 0. 6L, 0. 5L。
創建一塊質點數為17x17個、初始方向為水平的織物,固定織物的中心質點,然后運行 系統讓織物自然垂下。
統計不同重心距離參數值下,總碰撞對數達到IO萬個時系統的碰撞對過濾率和碰撞對遺 漏率(見表6)。
表6 碰撞對過濾率和碰撞對遺漏率
X j
7 i 9
1 ! 4
8碰撞對過濾率碰撞對遺漏率
19.92%3. 10%
21.10%3. 93%
22.79%5. 25%
25.93%7. 42%
29.59%9. 89%
36.39%12. 91%
—48.02%18.76%
55.97%25. 72%
64.02%32. 23%
70.38%39. 96%
81.10%49.21%
由表6和圖7可看出重心距離檢測的方法,可以在損失少量有效碰撞對的前提下,提高
系統運行效率;距離值參數與有效碰撞檢測丟失率的關系為距離值參數設置的越大,碰撞 對遺漏率就越大。我們可以根據系統的運行需求,靈活的調節距離參數,以達到在可接受的 碰撞對遺漏率的前提下提升系統運行幀率的目的。
參
5:4 CO 2 一
L L 一 L
1 o : 9 I
L L TIP L
8 ; 7 6 , 5
o: o: o o : o
權利要求
1、一種基于四叉包圍盒樹的柔性織物自碰撞檢測方法,其特征在于通過以下步驟實現(1)利用織物幾何基元的空間位置關系,構建結構緊密的四叉包圍盒樹;(2)基于四叉包圍盒樹,采用法向量錐法,排除掉不可能相交的三角面片對;(3)根據兩三角面片重心間的距離,過濾掉距離大于給定閾值的三角面片對;(4)基本幾何元素間的精確檢測,平面同側過濾法過濾掉不必要的線段平面求交。
2、 根據權利要求l所述的基于四叉包圍盒樹的柔性織物自碰撞檢測方法,其特征在于: 所述步驟(1)中的利用織物幾何基元的空間位置關系,構建結構緊密的四叉包圍盒樹方法 如下(1.1) 采用自上而下的方法遞歸建立四叉樹;將織物按照4x4分割, 一直分割到三角 面片為止,即葉子結點為三角面片;樹的根結點是包圍整個織物的包圍盒,葉結點是包圍織 物的基本幾何元素三角面片的包圍盒,中間結點則對應于各級子部分的包圍盒;(1.2) 每一個時間步長內,采用后序遍歷四叉樹的方法更新四叉包圍盒樹每個結點的 錐頂角和包圍盒信息。
3、 根據權利要求l所述的基于四叉包圍盒樹的柔性織物自碰撞檢測方法,其特征在于 所述步驟(2)中的基于四叉包圍盒樹,采用法向量錐法,排除掉不可能相交的三角面片對, 方法如下(2.1) 遞歸計算四叉包圍盒樹各結點的圓錐的頂角"值;(2.2) 檢測四叉包圍盒樹各結點,若結點對應區域的圓錐頂角《<"/2,判斷這塊區域 沒有發生自碰撞,停止進一步檢測;若"2;r/2,判斷這塊區域有可能發生了自碰撞,需要 進一步檢測。
4、 根據權利要求l所述的基于四叉包圍盒樹的柔性織物自碰撞檢測方法,其特征在于 所述步驟(3)中的根據兩三角面片重心間的距離,過濾掉距離大于給定閾值的三角面片對 方法如下(3.1) 計算三角面片的重心位置;(3.2) 計算兩三角面片的重心距離;(3.3) 當兩三角面片的重心距離大于設定的重心距離閾值時,則認為這兩個三角面片 不相交,過濾掉該三角面片對,不對它們進行進一步的精確求交檢測。
5、 根據權利要求l所述的基于四叉包圍盒樹的柔性織物自碰撞檢測方法,其特征在于 所述步驟(4)中的基本幾何元素間的精確檢測,平面同側過濾法過濾掉不必要的線段平面求交,方法如下(4.1) 計算質點在前后兩個時刻的位置;(4.2) 判斷質點前后兩個時刻位置是否位于三角面片的同側,如在同側則表明質點并 未穿透面片,不需要進行點面求交計算。
全文摘要
一種基于四叉包圍盒樹的柔性織物自碰撞檢測方法,其特點在于對織物幾何基元建立四叉包圍盒樹,并采用基于四叉包圍盒樹的法向量錐法、三角面片重心檢測法和平面同側過濾法分別在粗略檢測和精確求交階段過濾掉不可能相交的三角面片,從而大大減少了相交測試的計算量。其步驟是(1)利用織物幾何基元的空間位置關系,構建結構緊密的四叉包圍盒樹;(2)基于四叉包圍盒樹,采用法向量錐法,排除掉不可能相交的三角面片對;(3)根據兩三角面片重心間的距離,過濾掉距離大于給定閾值的三角面片對;(4)基本幾何元素間的精確檢測,平面同側過濾法過濾掉不必要的線段平面求交。
文檔編號G06T17/00GK101593367SQ20091008790
公開日2009年12月2日 申請日期2009年6月25日 優先權日2009年6月25日
發明者兵 何, 柳 成, 王莉莉, 趙沁平, 郝愛民 申請人:北京航空航天大學