專利名稱:一種改進的柔性織物碰撞處理方法
技術領域:
本發明涉及一種改進的柔性織物碰撞處理方法,屬于柔性織物仿真技術領域。
背景技術:
織物自碰撞、織物與不規則物體的碰撞檢測與響應,是柔性織物仿真中的一個重 要研究內容。織物自身各部分之間的碰撞,稱為自碰撞;織物與外界其他物體的碰撞,如與 桌子、人體等的碰撞,稱為他碰撞。碰撞處理的過程分為粗略檢測階段、精確檢測階段和碰 撞響應階段。在以往的研究工作中,Provot在粗略檢測階段,提出了法向量錐法與包圍盒樹結 合的方法,用于在大范圍上剔除不可能相交的區域。基元的精確檢測階段,研究者們提出了不同的檢測策略。在一個碰撞步長內, Provot只做一次連續碰撞檢測(CXD),使用共面條件計算出碰撞時刻,若該碰撞時刻在步 長內,且又符合相交條件,即謂檢測到了碰撞。Bridson做了改進,在步長起點處,先做一次 逼近檢測(Proximity),一旦檢測到基元對之間最小距離小于織物厚度,即作彈開處理,該 方法在檢測的準確性上優于Provot。Selle等人又在Bridson的基礎上,提出了新的策略, 先是把碰撞步長分成k份(k為8 16),在做連續碰撞檢測前,做k次逼近檢測和運動積 分,以圖放大逼近檢測效率高的優勢,另外加入了穿透檢測,進一步提高了檢測準確性。針對碰撞響應,研究者們采用了不同的響應方式進行計算。Provot在檢測到碰撞 后,即簡單處理,直接修改相關質點的速度法向上,作非彈性碰撞處理,即法向速度反向且 有一定損耗;切向上,等效庫倫摩擦,對切向速度作直接修改。Bridson采用了沖量補償的 形式進行修改,即對逼近或已經發生碰撞的基元對施加具有排斥(R印ulsion)效果的沖量 (Impulse),并把該沖量按一定的坐標分配規則分配到基元對相關的質點上,根據動量定理 修改質點的速度;同樣模擬摩擦效果也采用等效的沖量補償形式。Selle的方法由于加入 了穿透檢測,對于穿透的情況,采用吸引沖量的形式進行補償。傳統碰撞處理方法主要存在以下一些問題(1)法向量錐法結合四叉包圍盒樹的應用上,沒有完全利用空間連續性,每次檢測 只檢測父節點的法向量錐角。而由于四叉樹兩兩子節點各自包含的三角面片區域之間是相 鄰的,只要相鄰即可以應用法向量錐法進行剪枝,否則,判斷相鄰區域的軌跡包圍盒肯定是 相交的,而事實上它們不一定發生了碰撞,這樣就造成了冗余的檢測。(2)傳統的法向量錐法中,自底向上的由子節點計算父節點的錐軸和錐角的方法 上有一定的錯誤,沒有考慮子節點的半錐角大于等于n/2的情況;而且沒有考慮到三角面 片的運動連續軌跡。(3)在一個碰撞步長內,對可能碰撞的基元對作精確檢測,目前已有的檢測策略各 有利弊,Provot和Bridson的方法效率較高,但正確性不高,多有穿透發生,Selle方法保證 了正確性,犧牲了效率。考慮到效率與正確性的平衡,需要一套更為合理的檢測策略。(4)碰撞響應形式上,原有的方法在對碰撞基元進行處理時,或者直接修改質點速
3度,或者以沖量補償的形式對其速度進行修改,均沒有對碰撞表面基元的受力(支持力和 摩擦力)進行直接模擬。原有的響應方法對摩擦力的模擬并不明顯,不能滿足某些特殊仿 真場景的需要。針對以上問題,本發明提出了一種改進的柔性織物碰撞處理方法,其核心內容可 以總結為在粗略檢測階段,采用適用于四叉包圍盒樹的連續法向量錐法,借助兩兩子樹間 計算法向量錐信息用于剪枝的方法,進行不可能相交的區域的進一步過濾;精確檢測階段, 采用一套合理的步長內基元檢測策略,有效地保證碰撞檢測的正確性;碰撞響應階段,結合 沖量補償模型和接觸面受力模型計算碰撞響應,能夠逼真的模擬非彈性碰撞和庫倫摩擦的 效果。
發明內容
本發明要解決的技術問題是克服現有技術的不足,提供一個適應柔性織物自碰 撞、織物與不規則物體碰撞檢測與響應的方法,提高碰撞處理的正確性和仿真的效率。本發明采用的技術方案對織物三角網格根據空間關系建立四叉包圍盒樹,使用 AABB包圍盒;在粗略檢測階段,結合四叉包圍盒樹,使用改進的連續法向量錐法,較傳統方 法進一步剔除掉不可能相交的區域;在精確檢測階段,對于一個步長內可能相交的基元對 實施一套合理的基元檢測策略,并在檢測過程加入了穿透檢測和處理,盡可能的提高正確 率,保證無穿透;在碰撞處理方式上,采用沖量補償模型和接觸面受力模型兩種方式進行處 理。該方案實現的步驟,如圖1所示(1)對織物三角網格根據空間關系建立四叉包圍盒樹;(2)結合四叉包圍盒樹,使用改進的連續法向量錐法,剔除掉不可能相交的區域;(3)對于一個步長內可能相交的基元對,實施一套合理的基元檢測策略,并在檢測 過程加入了穿透檢測和處理;(4)采用沖量補償模型和接觸面受力模型結合的方式計算碰撞響應。本發明與現有技術相比的有益效果是提高仿真效率,通過采用適用于四叉樹的連續法向量錐法,過濾掉了更多未發生 碰撞的碰撞對,從而減輕后續精確檢測階段的負擔。通過一套合理的基元精確檢測策略,在 較高的運算效率上保證了碰撞處理的準確性,仿真過程中基本無穿透現象發生。碰撞響應 上,直接對支持力和摩擦力的模擬,使得庫倫摩擦的仿真效果更為明顯,滿足了特殊仿真場 景的要求。
圖1 一種改進的柔性織物碰撞處理方法步驟示意圖;圖2連續法向量錐示意圖;圖3由子節點法向量錐計算父節點法向量錐示意圖;圖4a和圖4b夾角大于等于n的情況示意圖;圖5織物自碰撞仿真示意圖;圖6粗略檢測階段檢測出的碰撞對數對比圖;圖7織物-不規則物體碰撞仿真示意圖8a、圖8b、圖8c織物-轉動球體碰撞仿真示意圖。
具體實施例方式下面結合附圖及具體實施方式
對本發明進一步詳細說明。(1)利用織物幾何基元的空間位置關系,構建結構緊密的四叉包圍盒樹;采用自上而下的方法遞歸建立四叉樹。用四叉樹描述層次包圍體結構,將織物按 照4X4分割,一直分割到三角面片為止,即葉子結點為三角面片。(2)結合四叉包圍盒樹,使用改進的連續法向量錐法,剔除掉不可能相交的區域;第一步,計算三角面片的法向量錐,采用連續法向量錐法,計入整個步長內三角面 片法向量的變化軌跡,如圖2所示,nO和nl為三角面片在步長起、終點的法向,其圍成的圓 錐即三角面片的法向量錐。第二步,更新包圍盒樹的法向量錐信息,自底向上的計算樹節點的錐軸和錐角。當 子節點的半錐角小于n/2時,仍按傳統計算方法計算,如圖3所示,由子節點的錐軸向量normal」和n0rmal_2計算出父節點的錐軸向量;normal = normal_l+normal_2公式 1再計算出normal_l和normal_2的夾角3 ;最后,由夾角0計算出父節點的半錐角。a =旦 /2+max ( a ” a2)公式 2當子節點的半錐角大于或等于Ji/2時,如圖表4所示,(a)圖表示理想情況下nl、 n2夾角剛好等于Ji,公式1已無法計算出父節點的錐軸向量n(結果為0向量),而且在三 維坐標下,即使使用垂直條件,也無法確定其方向為n還是n'、!1〃…(均與!!“!^垂直)。 而(b)圖中夾角大于Ji的情況,如果按公式1,將得到錯誤結果n',正確的方向與織物開 口向相反n = -n'。由于無法確定父節點錐向量的方向,即不必繼續計算父節點的錐軸,令 其半錐角值等于大于n/2的某數,如此不會影響檢測的結果。第三步,檢測過程,在四叉樹中使用法向量錐法,為每個節點額外增設其子節點兩 兩間的法向量錐信息屬性,每次檢測前進行計算更新;檢測時,對兩兩子節點進行檢測時, 先檢測其法向量錐半錐角值是否大于等于n /2,如果是,說明可能碰撞,繼續檢測,如果不 是,停止檢測。算法偽代碼如下1 SelfCollisionRoughDetection(A)2 If A is not leaf then3 If A. alpha >= ji /2then4 For allchildren A[i]do5SelfCollisionRoughDetection (A[i])6For all children A[i],A[j](i ! = j) do7If A. childAlpha[i] [j] >= Ji/2then8BoundingVolumeIntersectionTest(A[i], A[j])9End if10 End ifllEnd if
5
(3)對于一個步長內可能相交的基元對,實施一套合理的基元檢測策略,并在檢測 過程加入了穿透檢測和處理;第一步,步長起點處,做一次當前位置的逼近檢測,并處理。第二步,連續性碰撞檢測,檢測步長內發生的碰撞,并處理。第三步,步長終點處,為防止誤差造成的意外穿透,做一次逼近檢測,并處理。第四步,步長終點處,做一次略寬范圍的逼近檢測(即判斷是否逼近的距離閾值 比一、三步驟所用的略大),并對符合逼近條件的基元相關質點計算其所受支持力和摩擦 力,用于下一步長的運動積分。以上處理過程均采用高斯_賽達爾迭代,即每對基元對被碰撞處理修改速度后, 立即用新的數據替代舊數據,后續的其他基元對的碰撞檢測運算均使用更新后的數據(基 元之間可能共享點)。另外,本文在檢測過程中加入穿透檢測,在處理前(可以在第一步的逼近檢測時) 先紀錄下基元的相對位置信息,然后在以后的碰撞時刻或逼近時刻(第二步、第三步),計 算此時碰撞基元對的相對位置,與歷史紀錄相對比,若相同,則仍用補償排斥沖量處理,若 不同,說明已穿透,則用補償吸引沖量的方式處理,使得基元對相互吸引運動,回歸到原來 的相對位置,從而起到修補穿透的效果。(4)采用沖量補償模型和接觸面受力模型結合的方式計算碰撞響應。在上述(3)節步驟一、二、三的檢測后,使用沖量補償模型計算碰撞響應。一是排 斥沖量,對于織物_織物自碰撞,采用完全非彈性碰撞,處理結果是彼此幾乎無相對運動; 織物_固定物體碰撞,非彈性碰撞,但沖量補償只作用在織物上,物體保持不動。二是吸引 沖量,自碰撞,采用相當于基元對兩者交換法向速度的沖量補償,使之恢復到不會穿透的狀 態;織物_固定物體碰撞,物體不動,對織物補償兩倍原相對沖量的負數,相當于以原速度 反向運動。沖量的分配采用按坐標分配原則。如(3)節步驟四所述,檢測后,使用支持力和摩擦力模型計算碰撞響應。在步長終 點處,做逼近檢測,滿足逼近條件的可以視為發生了接觸,對接觸面上的基元的受力進行了 直接的模擬,并且以顯示的形式將質點所受的支持力和摩擦力,都作為質點受到的外力參 與到下一步長的仿真運動積分。由于織物所受內力彈力、阻尼力均為隱式形式表示參與積分,因此在計算相關質 點支持力時,忽略其他力(彈力、阻尼力、彎曲力等),取重力在接觸表面法向上的分量,反 向,即為支持力Fn,摩擦力大小Ff = y *Fn,方向為相對運動方向的反向。將支持力與摩擦力作為質點所受外力的一部分參與到下一步長的仿真運動積分, 可以直接影響到下一步長積分的結果,即質點在下一步長的速度大小和方向。使得相關質 點在支持力和摩擦力作用下的運動行為的仿真效果,比僅僅只在碰撞步長內做補償性的速 度修改模擬出的效果更為明顯,這在某些仿真場景中是非常有必要的。如此,通過結合以上兩種模型計算碰撞響應,逼真的模擬出織物與織物間、織物與 不規則物體間的非彈性碰撞和庫倫摩擦的效果。改進的適用于四叉樹的法向量錐法實驗本實驗的仿真場景如圖表5所示,模擬 布料前后兩片的自碰撞現象,織物的面片數為512,仿真步長為0. 01。取仿真過程中自碰撞發生最密集的幾幀,統計本文改進方法和未改進方法每幀在粗略檢測階段檢測出的可能發生逼近/碰撞的三角面片對數。如圖表6所示,可以看出,本 文方法獲得的碰撞對數量明顯減少,即改進方法可過濾掉更多未發生碰撞的碰撞對,從而 減輕后續精確檢測階段的負擔,提高仿真效率。步長內基元檢測策略實驗為了驗證本文基元對檢測策略的準確性和效率,本實 驗設計了如圖表7所示的仿真場景,模擬一塊織物在重力下水平下落,與一個不規則物體 (兔子)發生碰撞,最后覆蓋在兔子表面。織物的面片數為512,兔子模型的面片數為5110, 仿真步長為0. 002。首先,準確性比較上,本實驗統計了 Pr0V0t、Brids0n、Selle和本文方法在仿真場 景中從第1幀到第1000幀發生穿透的次數,然后,本實驗對各方法的效率作了比較,統計了 相應的平均仿真幀率,統計結果如下表所示。
權利要求
一種改進的柔性織物碰撞處理方法,其特征在于通過以下步驟實現(1)對織物三角網格根據空間關系建立四叉包圍盒樹;(2)結合四叉包圍盒樹,使用改進的連續法向量錐法,剔除掉不可能相交的區域;(3)對于步長內可能相交的基元對,實施基元檢測策略,并在檢測策略中加入穿透檢測和處理;(4)對檢測到的碰撞對,采用沖量補償模型和接觸面受力模型結合的方式計算碰撞響應。
2.根據權利要求1所述的一種改進的柔性織物碰撞處理方法,其特征在于所述步驟(2)中的結合四叉包圍盒樹,使用改進的連續法向量錐法,剔除掉不可能相交的區域方法如 下(2. 1)計算三角面片的法向量錐,采用連續法向量錐法,計入整個步長內三角面片法向 量的變化軌跡;(2. 2)更新包圍盒樹的法向量錐信息,自底向上的計算樹節點的法向量錐信息,當子節 點的半錐角小于n/2時,按Provot方法計算;當子節點的半錐角大于或等于ji/2時,即不 必繼續計算父節點的錐軸;(2. 3)檢測過程,在四叉樹中使用法向量錐法,為每個節點額外增設其子節點兩兩間的 法向量錐信息屬性,每次檢測前進行計算更新;檢測時,對兩兩子節點進行檢測時,先檢測 其法向量錐半錐角值是否大于等于n /2,如果是,說明可能碰撞,繼續檢測,如果不是,停止 檢測。
3.根據權利要求1所述的一種改進的柔性織物碰撞處理方法,其特征在于所述步驟(3)中的對于步長內可能相交的基元對,實施基元檢測策略,并在檢測過程加入穿透檢測和 處理,方法如下(3. 1)在步長起點處,做一次當前位置的逼近檢測,并處理; (3. 2)做一次連續性碰撞檢測,檢測步長內發生的碰撞,并處理; (3. 3)在步長終點處,為防止誤差造成的意外穿透,做一次逼近檢測,并處理; (3. 4)步長終點處,做一次略寬范圍的逼近檢測,并對符合逼近條件的基元相關質點計 算其所受支持力和摩擦力,用于下一步長的運動積分;在3. 1,3. 2,3. 3所述的檢測過程中,加入穿透檢測和處理;3.1,3. 2,3. 3所述的處理過程,均采用高斯-賽達爾迭代。
4.根據權利要求1所述的一種改進的柔性織物碰撞處理方法,其特征在于所述步驟(4)中的對檢測到的碰撞對,采用沖量補償模型和接觸面受力模型結合的方式計算碰撞響 應,方法如下(4. 1)對檢測到的碰撞對計算碰撞響應,使用沖量補償模型,包括排斥沖量和吸引沖量;(4. 2)對在步長終點處最后檢測到的滿足逼近條件的基元對,視為發生了接觸,對接觸 面上的基元對采用支持力和摩擦力模型,計算碰撞響應;(4. 3)通過結合沖量補償模型和接觸面受力模型兩種模型,計算碰撞響應,模擬出織物 非彈性碰撞和庫倫摩擦的效果。
全文摘要
一種改進的柔性織物碰撞處理方法,其特點在于對織物三角網格根據空間關系建立四叉包圍盒樹,使用AABB包圍盒;在粗略檢測階段,結合四叉包圍盒樹,使用改進的連續法向量錐法,較傳統方法進一步剔除掉不可能相交的區域;在精確檢測階段,對于一個步長內可能相交的基元對實施一套合理的基元檢測策略,并在檢測過程加入了穿透檢測和處理,盡可能的提高正確率,保證無穿透;在碰撞響應方式上,采用沖量補償模型和接觸面受力模型兩種方式進行處理。其步驟是(1)對織物三角網格根據空間關系建立四叉包圍盒樹;(2)結合四叉包圍盒樹,使用改進的連續法向量錐法,剔除掉不可能相交的區域;(3)對于步長內可能相交的基元對,實施基元檢測策略,并在檢測策略中加入穿透檢測和處理;(4)對檢測到的碰撞對,采用沖量補償模型和接觸面受力模型結合的方式計算碰撞響應。
文檔編號G06F17/50GK101984443SQ201010540130
公開日2011年3月9日 申請日期2010年11月10日 優先權日2010年11月10日
發明者何兵, 宋健, 王莉莉, 趙沁平, 郝愛民 申請人:北京航空航天大學