- 相關(guān)推薦
擬穿衣中織物模型的建立和碰撞檢測的處理
摘 要:結(jié)合實現(xiàn)靜態(tài)虛擬穿衣中的實際問題,詳細地介紹了基于彈簧質(zhì)點模型的織物變形模型和基于AABB層次包圍盒的碰撞檢測算法。借助層次空間分解法的思想,將縫合衣片的相對位置同人模自身的結(jié)構(gòu)信息相結(jié)合,靈活地構(gòu)造人模AABB樹,減少了不相交元素的碰撞檢測次數(shù),從而提高了算法的效率。最后還給出了實現(xiàn)整個虛擬穿衣過程的具體步驟。關(guān)鍵詞:織物變形仿真;彈簧質(zhì)點模型;碰撞檢測;空間分解法;層次包圍盒法;顯式歐拉方法
1 前言隨著計算機技術(shù)和人類社會經(jīng)濟的發(fā)展,對于紡織服裝業(yè)CAD/CAM的應(yīng)用要求也越來越高,二維服裝CAD系統(tǒng)已經(jīng)不能滿足要求,人們迫切希望借助計算機完成一些更加實用的三維功能。若能直接將二維服裝CAD系統(tǒng)設(shè)計的衣片,在計算機上真實地模擬出穿在人體上的效果,便可以幫助設(shè)計師直接在計算機上進行著裝效果檢查、服裝裁剪片縫合檢查等工作。這樣就可大大提高服裝從設(shè)計階段到生產(chǎn)階段間的效率,具有非常重要的實用價值。要通過計算機實現(xiàn)這一功能,有兩個關(guān)鍵的問題必須解決:1)建立合適的織物變形模型;2)選擇高效而實用的碰撞檢測算法。
研究織物變形仿真的方法通常分為三類:幾何的、物理的和混合的(幾何和物理方法的混合)。純幾何的造型方法很難反映織物的物理特性,因此基于物理的方法研究,近年來已占據(jù)了主導(dǎo)地位。在織物變形物理仿真模型中[1],按比擬織物結(jié)構(gòu)的方式又可分為兩大類:1)離散質(zhì)點型模型:比較典型的有Feynma等建立的質(zhì)點網(wǎng)格模型、Breen等建立的粒子模型和XProvot等建立的彈簧質(zhì)點模型;2)連續(xù)介質(zhì)型模型:比較典型的有Terzopoulos等建立的彈性變型模型、Liling等建立的空氣動力模型、Aono建立的波傳播模型、Collier等建立的有限元模型等。
以上的織物變形物理仿真模型,由于其建模的原理和方法不盡相同,因此,它們適用于不同的應(yīng)用場合有其各自的優(yōu)缺點。
我們結(jié)合設(shè)計虛擬穿衣功能的實際,認為XProvot所建立的彈簧質(zhì)點模型,模型簡單,易于計算機實現(xiàn),在模擬衣片復(fù)雜的動態(tài)變形過程時,能夠取得比較真實的模擬效果和較快的模擬速度。
在模擬三維服裝穿在人體上的真實效果時,會遇到大量的碰撞現(xiàn)象:衣片同人模之間以及衣片自身間的一種相互滲透和穿越。只有很好地解決了滲透和穿越的問題,才能逼真地完成虛擬穿衣的模擬過程。因此,碰撞檢測是整個模擬過程的關(guān)鍵。碰撞檢測非常耗時,最簡單的碰撞檢測算法是對兩個碰撞體中的所有基本幾何元素(通常為三角形)進行兩兩相交測試。
現(xiàn)有的碰撞檢測算法大致可劃分為兩大類:空間分解法(spacedecomposition),和層次包圍盒法(hierarchicalboundingvolumes)。前者是將整個虛擬空間劃分成相等體積的小單元格,只對占據(jù)同一單元格或相鄰單元格的幾何對象進行相交測試。比較典型的方法有八叉樹和BSP樹。層次包圍盒法的核心思想是利用體積略大而幾何特性簡單的包圍盒將復(fù)雜幾何對象包裹起來,在進行碰撞檢測時,首先進行包圍盒之間相交測試,只有包圍盒相交時,才對其所包裹的對象,做進一步求交計算。在構(gòu)造碰撞體的包圍盒時,若引入樹狀層次結(jié)構(gòu),可快速剔除不發(fā)生碰撞的元素,減少大量不必要的相交測試,從而提高碰撞檢測效率。比較典型的包圍盒類型有沿坐標(biāo)軸的包圍盒AABB(axisalignedboundingboxes),包圍球(sphere),方向包圍盒OBB(orientedboundingbox)等。
在本文中,我們充分利用了AABB層次包圍盒法的優(yōu)勢,同時在構(gòu)建靜態(tài)人模的AABB樹時,又借助層次空間分解法中子空間在空間排列上的有序性和相關(guān)性的思想,將縫合衣片的相對位置同人模自身的結(jié)構(gòu)信息相結(jié)合,靈活地構(gòu)造人模AABB樹,這樣減少了需相交測試的元素,從而提高了碰撞檢測的效率。
2 織物的變形模型
2.1 織物變形模型的描述
我們建立的織物變形模型是以XProvot的彈簧質(zhì)點模型作為基礎(chǔ),將織物設(shè)想為一個個質(zhì)點集合,質(zhì)點間相互關(guān)系歸結(jié)為質(zhì)點間的彈簧作用。其中彈簧分為三類:結(jié)構(gòu)彈簧、剪切彈簧和彎曲彈簧,具體構(gòu)成如圖1所示。圖1 織物模型離散成規(guī)則網(wǎng)格
1)結(jié)構(gòu)彈簧:在質(zhì)點Pij和Pi+1,j間,以及Pij和Pi,j+1間的彈簧為結(jié)構(gòu)彈簧,結(jié)構(gòu)彈簧是為了保持質(zhì)點間初始狀態(tài)時的距離。
2)剪切彈簧:在質(zhì)點Pij和Pi+1,j+1間,以及Pi+1,j和Pi,j+1間的彈簧為剪切彈簧。剪切彈簧是為了防止織物在自身平面過渡和不真實的變形,而給織物的一個剪切剛性。3)彎曲彈簧:在質(zhì)點Pij和Pi+2,j間,以及Pij和Pi,j+2間的彈簧為彎曲彈簧,彎曲彈簧是為了防止織物彎曲。2.2 質(zhì)點的位移在縫合衣片過程中,衣片上所有質(zhì)點因受力而產(chǎn)生一定的位移,質(zhì)點位移我們選用Nowton運動定律來描述:F外力(i,j)+F內(nèi)力(i,j)=ma(i,j)其中,m是質(zhì)點P(i,j)的質(zhì)量。在本文中,我們假定布料是各向均質(zhì)的,因此,質(zhì)點的質(zhì)量可由衣片總質(zhì)量除以質(zhì)點總數(shù)得到,a(i,j)是該點加速度,F外力(i,j)是該點所受的外力,F內(nèi)力(i,j)是該點所受的內(nèi)力。為了簡化模型,在我們?nèi)S服裝CAD系統(tǒng)中,只考慮兩種外力:縫合力和重力?梢杂靡韵鹿絹肀硎:F外力(i,j)=F縫合力(i,j)+F重力(i,j)
在衣片縫合過程中,為了將不同的衣片縫在一起,我們在衣片對應(yīng)縫合邊上加載縫合力。在模型中,縫合力被定義成對應(yīng)縫合點之間距離的線性函數(shù)。對兩個縫合點pi,j和qi,j間的縫合力,可以按如下公式計算:F縫合力(i,j)=Cs Dis(pi,j,qi,j) Npi,j-qi,j式中Cs為縫合力系數(shù),該系數(shù)與織物的縫合性能有關(guān),通常,較難變形的布料采用較大的縫合力系數(shù);Dis(pi,j,qi,j)表示兩縫合點pi,j和qi,j間的距離;Npi,j-qi,j表示從pi,j點指向qi,j點的單位方向矢量。為了獲得較真實的仿真效果,我們在變形模型中考慮了衣片所受的重力。質(zhì)點所受的重力可按如下公式計算:F重力(i,j)=mi,j g式中mi,j為質(zhì)點pi,j的質(zhì)量。在彈簧質(zhì)點模型中,唯一考慮的彈性內(nèi)力是彈簧的彈性變形力,由于采用的是理想的彈簧質(zhì)點系統(tǒng),可以利用胡克(Hooke)定律來計算彈簧的彈性變形力:F內(nèi)力(i,j
)=-∑(k,l)∈Rk(Pi,jPk,l-‖Pi,jPk,l‖0Pi,jPk,l‖Pi,jPk,l‖) 其中,k是彈簧的彈性變形系數(shù),R是P(i,j)鄰點的集合,‖Pi,jPk,l‖0表示質(zhì)點P(i,j)與質(zhì)點P(k,l)之間的原始距離,彈簧的彈性變形系數(shù)k可以? 讕菟?∮彌?锏牟牧閑閱懿問??呷范ā?/P>
2.3 織物變形模型的求解我們選擇顯式歐拉方法來求解織物變形模型。求解公式如下:ai,j(t+△t)=1mi,jFi,j(t)Vi,j(t+△t)=Vi,j(t)+△tai,j(t+△t)Pi,j(t+△t)=Pi,j(t)+△tVi,j(t+△t)其中,Fi,j是質(zhì)點P(i,j)所受所有力的合力,mi,j(t)是質(zhì)點P(i,j)的質(zhì)量,ai,j(t)、Vi,j(t)和Pi,j(t)分別是質(zhì)點P(i,j)在時間t的加速度,速度和位置!鳎羰窍到y(tǒng)選定的時間步長。
3 基于AABB樹層次包圍盒的碰撞檢測
3.1 建立AABB樹一個碰撞體的AABB被定義為包含該碰撞體,且邊平行于坐標(biāo)軸的最小六面體。因此,描述一個AABB,僅需六個標(biāo)量。在構(gòu)造AABB包圍盒時,需沿著碰撞體局部坐標(biāo)系統(tǒng)的軸向(X,Y,Z)來構(gòu)造,所以所有的AABB包圍盒具有一致的方向。
AABB樹是基于AABB的二叉樹,按照由上至下的遞歸細分方式構(gòu)造生成的。在每一次遞歸過程中,要求取最小的AABB,需沿所選擇的剖分面將碰撞體分為正負兩半,并將所對應(yīng)的原始幾何元素(如三角面)分別歸屬正、負兩邊,整個遞歸過程類似于空間二叉剖分,只是每次剖分的對象是AABB,而不是空間區(qū)域。遞歸細分一直要進行到每一個葉子節(jié)點只包容一個原始幾何元素為止,所以具有n個原始幾何元素的AABB樹具有n-1個非葉子節(jié)點和n個葉子節(jié)點。對于剖分面的選擇,在本文中,選擇垂直AABB的最長軸,且平分該軸的平面。經(jīng)試驗證明,這種方式,在大多數(shù)情況下的算法復(fù)雜度僅為O(nlogn),較其它的剖分面選擇方法有了極大的提高。至于原始幾何元素的歸屬則應(yīng)依據(jù)幾何元素的重心P在最長軸上的投影坐標(biāo)。若投影坐標(biāo)大于剖分面的坐標(biāo)(mid),則在剖分面的正向,否則在負向,如圖2所示! D2 三角面歸屬負區(qū)域,因為其質(zhì)心投影坐標(biāo)小于剖分面的基準(zhǔn)坐標(biāo)
3.2。粒粒拢碌南嘟慌袛啵粒粒拢麻g的相交測試比較簡單,兩個AABB相交當(dāng)且僅當(dāng)它們在三個坐標(biāo)軸上的投影區(qū)間均相交。通過投影,我們即將三維求交問題轉(zhuǎn)化為一維求交問題。而對一維求交問題,我們則采用SAT(SeparatingAxesTest)[2]法。因SAT無需求交計算,只需比較兩個包圍盒分別在三個軸向上投影的重疊情況,即可得出相交測試結(jié)果,非常簡單,F(xiàn)以在一個軸向上的投影情況為例說明:圖3。粒粒拢拢笤冢剌S向相交判斷。
設(shè)A,B為兩包圍盒,X為投影軸,CA,CB分別為A,B的中心點,PA,PB為點CA,CB在X上的投影。RA,RB分別為包圍盒A,B在X上的投影。若RA+RB
PAPB,(如圖3所示)則在軸向X上A和B不相交,反之在軸向X上A和B鄰接或相53第5期高成英等:虛擬穿衣中織物模型的建立和碰撞檢測的處理 交。當(dāng)包圍盒A,B在三條軸向上的投影均相交時,則A,B相交。定義AABB的六個最大最小值分別確定了它在三個坐標(biāo)軸上的投影區(qū)間,因此AABB間的相交測試最多只需六次比較運算,非常簡單快速。
3.3 AABB樹的更新當(dāng)衣片移動、旋轉(zhuǎn)后,需要對AABB進行更新,根據(jù)定義AABB的6個最大最小值的組合,可以得到AABB的8個頂點,對這8個頂點進行相應(yīng)的旋轉(zhuǎn)和平移變化,并根據(jù)變化后的頂點計算新的AABB。當(dāng)衣片發(fā)生變形時,需要重新計算AABB樹中發(fā)生變形了的葉結(jié)點的AABB,再利用變形葉節(jié)點的新AABB來重新計算它們父節(jié)點的AABB。這種計算必須嚴格按照從下到上的方式進行。父節(jié)點AABB的具體求法為:令(Xmax1,Xmin1,Ymax1,Ymin1,Zmax1,Zmin1)和(Xmax2,Xmin2,Ymax2,Ymin2,Zmax2,Zmin2)分別是兩個變形葉結(jié)點的AABB,則父結(jié)點的AABB即為(max(Xmax1,Xmax2),min(Xmin1,Xmin2),max(Ymax1,Ymax2),min(Ymin1,Ymin2),max(Zmax1,Zmax2),min(Zmin1,Zmin2),只需6次比較運算就完成一個結(jié)點的更新,其效率遠遠高于重新構(gòu)造AABB包圍盒樹。
3.4 基于AABB樹的碰撞檢測算法基于AABB樹碰撞檢測算法的核心是通過有效地遍歷這兩棵樹,以確定在當(dāng)前位置下,兩個碰撞體的某些部分是否發(fā)生碰撞,這是一個雙重遞歸遍歷的過程。算法描述如下:step1:分別為人模和衣片構(gòu)造AABB樹。step2:人模的AABB樹的根結(jié)點遍歷衣片的AABB樹。如果發(fā)現(xiàn)人模AABB樹的根結(jié)點的包圍盒與衣片AABB樹內(nèi)部結(jié)點的包圍盒不相交,則停止向下遍歷;如果遍歷能到達衣片AABB樹的葉節(jié)點,再用該葉節(jié)點遍歷人模AABB樹。如果能到達人模AABB樹的葉節(jié)點,則進一步進行基本幾何元素間的相交測試。step3:檢測基本幾何元素間是否相交。3.5 自碰撞檢測在衣片縫合過程中,除了衣片同人模之間的碰撞外,由于衣片的動態(tài)變形,使得衣片與衣片自身間也有碰撞現(xiàn)象,因此必須進行進一步的自相交檢測。在系統(tǒng)設(shè)計中,我們利用三角形表面曲率來簡化計算。當(dāng)鄰近三角形法線的夾角較小時,它們不可能發(fā)生碰撞,只有當(dāng)夾角超過閾值,才有可能碰撞。我們?yōu)槊總三角形建立它的臨近三角形列表,通過判斷每個三角形的所有鄰近區(qū)域的三角形表面曲率,來排除大部分不可能相交的情況,從而簡化了計算。
4 虛擬穿衣的具體實現(xiàn)步驟
(1)讀入二維服裝CAD系統(tǒng)設(shè)計的衣片
(2)選擇所有需要縫合衣片的對應(yīng)的縫合邊
(3)將二維衣片離散并形成初始的彈簧質(zhì)點系統(tǒng)a)將衣片離散成規(guī)則四邊域網(wǎng)格,再將四邊域網(wǎng)格的對角線相連,形成規(guī)則三角形網(wǎng)格的彈簧質(zhì)點系統(tǒng)。三角形的頂點形成質(zhì)點,三角形的邊形成相應(yīng)的彈簧。衣片的三角化,正是為方便地建立衣片的AABB樹;b)按質(zhì)點間的相應(yīng)關(guān)系,加入各種彈力。在離散衣片時,需特別注意的是在(2)中所選擇的對應(yīng)縫合邊的長度一定要相等,且當(dāng)衣片離散化時,在對應(yīng)縫合邊上的原始幾何元素(這里為三角形)的個數(shù)也應(yīng)相同。若在(2)中所選擇的對應(yīng)縫合邊長度不等,或原始幾何
元素個數(shù)不同時,系統(tǒng)將需做一些預(yù)處理:將其中一條縫合邊的所有信息刪除,將另一條縫合邊的相應(yīng)信息賦給它。
(4)將衣片交互式地放置在人體模型附近的初始位置在該步驟中,首先,給每一縫合衣片賦一個別名(系統(tǒng)自定義的標(biāo)準(zhǔn)別名:左前片,右前片,左后片,右后片等),根據(jù)每一衣片的別名,衣片被自動地放置在人體模型附近的相應(yīng)初始位置上。
(5)分別為人模和衣片建立AABB樹本文中所涉及的兩個碰撞體,分別為人模和衣片,其中人模在整個動態(tài)模擬過程中為靜態(tài)的,因此,只需在初始化時構(gòu)造一次AABB樹即可。為了進一步提高碰撞檢測的效率,我們在構(gòu)造人模的AABB樹時,應(yīng)根據(jù)(4)中得到的縫合衣片別名,結(jié)合人模的幾何結(jié)構(gòu),靈活構(gòu)造人模的AABB樹。例如:假設(shè)我們在(4)中,得到衣片分別為:左前片,右前片,左后片,右后片。我們即可知,將要縫合的為一件四片裁剪片的上衣,所以在構(gòu)造人模的AABB樹,我們只取人模上半身數(shù)據(jù)來構(gòu)造人模的AABB,具體層次結(jié)構(gòu)如圖4所示。在進行人模和衣片間碰撞檢測時,根據(jù)衣片的別名分別進行局部檢測,(例如:左前片,就只需和人模AABB樹第三層最左邊的結(jié)點,左前半身的AABB進行碰撞檢測)有效地減少了需要碰撞檢測的元素。系統(tǒng)根據(jù)所縫合的衣片不同,建立的人模AABB樹亦不相同。圖4 人模的AABB樹層次結(jié)構(gòu)圖
(6)動態(tài)變形模型的計算根據(jù)衣片的縫合信息,我們在衣片的對應(yīng)縫合邊上加載縫合力。在縫合力、重力和衣片上各質(zhì)點間內(nèi)部彈力的共同作用下,二維衣片將逐步變形,并逐漸被縫合在一起,整個縫合過程是一個動態(tài)的迭代過程。在動態(tài)迭代過程中,要同時進行大量的人!缕g,及衣片—衣片間的碰撞檢測處理,并給出相應(yīng)碰撞響應(yīng)(當(dāng)有碰撞現(xiàn)象發(fā)生時,要重新調(diào)整碰撞點處的位置,避免發(fā)生穿越和滲透)的處理。縫合過程結(jié)束后,便可以得到縫合好的三維服裝穿在靜態(tài)人模上的效果。
5 結(jié)束語實驗證明,本文所采用的織物變形模型———彈簧質(zhì)點模型,模型簡單,能夠較真實地反映虛擬環(huán)境下的織物特性。所采用的基于AABB的層次包圍盒碰撞檢測算法,除了AABB層次包圍盒自身在碰撞檢測上的較高性能外,算法還從以下幾方面提高了碰撞的檢測效率:
1)將縫合衣片的相對位置同人模自身的結(jié)構(gòu)信息相結(jié)合,靈活地構(gòu)造人模AABB樹,減少了人模和衣片之間不可能相交元素碰撞檢測的次數(shù);
2)AABB包圍盒的相交判斷中,采用SAT方法進行包圍盒之間的交疊判斷,降低了算法的復(fù)雜度,提高算法效率。
3)衣片之間的碰撞判斷,利用了每個三角形相鄰區(qū)域的三角形表面曲率來簡化求交判斷。
參考文獻
[1] 張慶豐,樂清洪,馬澤恩.織物變形的物理仿真技術(shù)[J].計算機輔助設(shè)計與圖形學(xué)報,2001,(5):449-454.[2] LouchetJ.,ProvotX.,etal.Evolutionaryidentificationofclothanimationmodels[A].TerzopoulosD.,ThalmannD.,eds.ProceedingsoftheComputerAnimationandSimulation′95[C].NewYork:Springer-Verlag,1995.44-54.[3]。茫幔颍椋纾睿幔睿停,YangY.,MagnenatThalmannN.Dressinganimatedsyntheticactorswithcomplexdeformableclothes[A].ComputerGraphics(Proc.SIGGRAPH)[C],1992,26(2):99-104.[4]。郑幔睿洌澹睿拢澹颍纾澹睿牵牛妫妫椋悖椋澹睿簦茫铮欤欤椋螅椋铮睿模澹簦澹悖簦椋铮睿铮妫茫铮恚穑欤澹模澹妫铮颍恚幔猓欤澹停铮洌澹欤螅酰螅椋睿纾粒粒拢拢裕颍澹澹螅郏剩荩剩铮酰颍睿幔欤铮妫牵颍幔穑瑁椋悖螅裕铮? 歟螅?997,2(4):1-14.[5] VolinoP.,MagnenatThalmannN.EfficientSelf-collisionDetectiononSmoothlyDiscretizedSurfaceAnimationsUsingGeometricalShapeRegularity[J].ComputerGraphicsForum,(EuroGraphicsProc.),Blackwell,UK,1994,13:155-166.[6]。模澹螅猓颍酰睿停,GascuelM.P.Smoothedparticles:anewparadigmforanimatinghighlydeformablebodies[A].Thalmannded.ProceedingsoftheComputerAnimationandSimulation′96[C].NewYork:Springer-Verlag,1996.61-76.第22卷第5期2002年5月計算機應(yīng)用ComputerApplicationsVol.22,No.5May,2002
【擬穿衣中織物模型的建立和碰撞檢測的處理】相關(guān)文章:
Delphi 中動態(tài)鏈接庫(DLL)的建立和使用08-06
教材處理中的“顧后”和“瞻前”08-07
物理實驗中的摸擬法08-17
文件的建立和刪除操作08-16
蒙古的興起和元朝的建立08-17
網(wǎng)絡(luò)處理器軟件開發(fā)模型的研究08-06
建立和完善稅源監(jiān)控體系08-07