唐 勇,李 玲,劉志蕾,趙 靜,呂夢(mèng)雅
(1.燕山大學(xué) 信息科學(xué)與工程學(xué)院,河北 秦皇島 066004;2.河北省計(jì)算機(jī)虛擬技術(shù)與系統(tǒng)集成重點(diǎn)實(shí)驗(yàn)室,河北 秦皇島 066004)
布料的仿真是計(jì)算機(jī)圖形學(xué)研究的重要內(nèi)容,但是由于布料類(lèi)柔性織物的易變形性和靈活性,碰撞處理成為了布料仿真的主要瓶頸之一。碰撞一定會(huì)伴隨摩擦的產(chǎn)生,所以正確考慮摩擦接觸,對(duì)布料的仿真有著重要的作用。
2002年斯坦福大學(xué)的Bridson等[1]提出了一種方法,使用庫(kù)倫摩擦模型來(lái)計(jì)算摩擦力的大小,根據(jù)彈簧排斥力的大小計(jì)算彈性力,然后用彈性力來(lái)評(píng)估庫(kù)倫摩擦并且將排斥力與“撞擊區(qū)”故障保護(hù)相結(jié)合,通過(guò)連續(xù)碰撞檢測(cè)來(lái)檢測(cè)碰撞的剛化區(qū),這是最經(jīng)典的處理摩擦接觸的方法,同時(shí)也是本文理論研究的基礎(chǔ)。2008年康奈爾大學(xué)的Kaldor等[2]針對(duì)針織布結(jié)構(gòu)中的阻尼和摩擦滯后效應(yīng)的問(wèn)題提出了三組阻尼模型的方法,分別是質(zhì)量比例阻尼、接觸阻尼、非剛性運(yùn)動(dòng)阻尼,但是由于未采用適當(dāng)?shù)哪Σ聊P停詫?dǎo)致計(jì)算結(jié)果不精確。2010年愛(ài)荷華大學(xué)的Williams等[3]提出了一種織物本構(gòu)模型,能夠捕捉各向異性、非線(xiàn)性和滯后的主要特征,并且可以在非線(xiàn)性、薄殼體、大形變、有限元框架中實(shí)現(xiàn)一般的穿孔交互式建模,但是這種建模缺失了內(nèi)部摩擦,計(jì)算結(jié)果產(chǎn)生偏差導(dǎo)致系統(tǒng)穩(wěn)定性較弱。2011年法國(guó)國(guó)立計(jì)算機(jī)及自動(dòng)化研究院的Daviet等[4]引入了一種有效的求解器將精確的庫(kù)侖摩擦考慮在內(nèi),然而,布料的模擬計(jì)算效率較低且實(shí)時(shí)性弱。2013年奧地利科技學(xué)院的Miguel等[5]提出了一種實(shí)時(shí)更新參數(shù)的內(nèi)摩擦模型Dahl模型,并且證明這個(gè)模型能夠有效地解決布料滯后的現(xiàn)象。但是該模型對(duì)于具有非常低的彎曲剛度和密度比的織物來(lái)說(shuō),彎曲摩擦估計(jì)結(jié)果不精確,導(dǎo)致實(shí)驗(yàn)實(shí)時(shí)性差。2013年北京航空航天大學(xué)的王華民等[6]開(kāi)發(fā)了一個(gè)摩擦測(cè)量裝置,通過(guò)從現(xiàn)實(shí)世界捕獲的摩擦數(shù)據(jù)來(lái)推導(dǎo)出真實(shí)反映織物的復(fù)雜摩擦特性的摩擦模型,但是這種模型不能很好地捕捉靜態(tài)摩擦,所以對(duì)布料仿真摩擦接觸分析不精確。2017年賓夕法尼亞大學(xué)的Jiang等[7]使用物質(zhì)點(diǎn)法改進(jìn)拉格朗日方法,將布料建模為非牛頓流體并通過(guò)非光滑本構(gòu)法自動(dòng)考慮摩擦接觸,但布料模擬的計(jì)算效率較低。2018年浙江大學(xué)的唐敏等[8]提出了一種基于GPU的交互布料模擬的增量碰撞處理算法,利用基于優(yōu)化的求解器的連續(xù)迭代的空間和時(shí)間的相干性來(lái)進(jìn)行碰撞響應(yīng)計(jì)算,但是他們直接采用Bridson的摩擦模型,并沒(méi)有考慮對(duì)摩擦模型進(jìn)行改進(jìn)。2018年加州大學(xué)的Guo等[9]采用了離散殼模型,利用Jiang等[7]的方法處理接觸和碰撞,利用背景體積網(wǎng)格有效地處理復(fù)雜碰撞材料之間的接觸力,雖然能夠解釋布料接觸與精確的庫(kù)倫摩擦,但是在碰撞處理過(guò)程計(jì)算效率低。2018年明尼蘇達(dá)大學(xué)的Li等[10]提出了一種新的方法,使用物質(zhì)點(diǎn)方法和細(xì)分有限元法的組合模擬摩擦接觸的薄殼,但是很難保證實(shí)驗(yàn)的實(shí)時(shí)性。2019年胡安卡洛斯國(guó)王大學(xué)的Mickeal等[11]通過(guò)直接解決混合線(xiàn)性互補(bǔ)問(wèn)題并省略了線(xiàn)性互補(bǔ)問(wèn)題矩陣的構(gòu)造來(lái)解決碰撞接觸問(wèn)題,他們建議使用共軛殘差求解器作為碰撞響應(yīng)系統(tǒng)的主干可以精確地處理摩擦,但是實(shí)際情況中摩擦處理替換為共軛殘差求解器很難實(shí)現(xiàn),由于不能精確地處理摩擦導(dǎo)致布料模擬穩(wěn)定性弱。
綜上可知,布料的仿真在碰撞和摩擦接觸方面取得了很大的進(jìn)步,但是在布料模擬過(guò)程中,計(jì)算效率低、布料運(yùn)動(dòng)穩(wěn)定性差都成為了目前所要解決的問(wèn)題。基于此,本文提出了Dahl模型雙向摩擦特性的布料碰撞摩擦接觸處理方法。與之前的方法相比,改進(jìn)后的Dahl摩擦模型能夠進(jìn)行準(zhǔn)確的碰撞檢測(cè)和摩擦接觸,保證計(jì)算效率的同時(shí)增強(qiáng)了布料運(yùn)動(dòng)的穩(wěn)定性。
為了更好地實(shí)現(xiàn)布料的真實(shí)感與實(shí)時(shí)性模擬,本文采用正三角形劃分織物,在Choi等[12]提出的質(zhì)點(diǎn)彈簧模型的基礎(chǔ)上忽略未產(chǎn)生影響的剪切彈簧力,利用三角形的穩(wěn)定性保持織物穩(wěn)定,并采用對(duì)布料進(jìn)行建模。采用該質(zhì)點(diǎn)彈簧模型對(duì)布料進(jìn)行建模,簡(jiǎn)單高效,且滿(mǎn)足實(shí)時(shí)性需求。基于三角形網(wǎng)格的質(zhì)點(diǎn)彈簧模型的結(jié)構(gòu)如圖1所示。

圖1 三角網(wǎng)格質(zhì)點(diǎn)彈簧結(jié)構(gòu)Fig.1 Triangular mesh mass spring structure
本文在布料質(zhì)點(diǎn)受力的分析中采用牛頓第二運(yùn)動(dòng)定律,對(duì)布料質(zhì)點(diǎn)的質(zhì)量、加速度以及受到的力進(jìn)行了描述,即
(1)
式中,x表示質(zhì)點(diǎn)的位置矢量,是實(shí)驗(yàn)的求解目標(biāo);m表示質(zhì)點(diǎn)的質(zhì)量;Finter(x,t)表示質(zhì)點(diǎn)所受內(nèi)力;Fexter(x,t)表示質(zhì)點(diǎn)所受外力。本文中質(zhì)點(diǎn)所受的力是隨時(shí)間和位置所變化的。
如何有效解決超彈現(xiàn)象也是布料仿真中所面臨的問(wèn)題。在實(shí)際情況中,布料的受力與變形之間不僅是簡(jiǎn)單的線(xiàn)性關(guān)系,當(dāng)布料的彈性形變超出一定的范圍,就會(huì)產(chǎn)生復(fù)雜的非線(xiàn)性現(xiàn)象。
為了改善超彈現(xiàn)象,更加真實(shí)地模擬布料的受力情況,本文引入形變系數(shù)
B=|xij-d|/d,
(2)
通過(guò)設(shè)置形變系數(shù)的最大值Bmax來(lái)檢測(cè)布料彈性的形變系數(shù)B。若形變系數(shù)超過(guò)了最大值,說(shuō)明彈簧被過(guò)度的拉伸或者壓縮,則重新調(diào)整彈簧d的長(zhǎng)度,使得B=Bmax成立。其中d為不同彈性布料對(duì)應(yīng)的自然長(zhǎng)度,xij為彈簧從質(zhì)點(diǎn)i到質(zhì)點(diǎn)j的長(zhǎng)度。
Dahl模型是一個(gè)連續(xù)模型,它是由一個(gè)非線(xiàn)性方程和一個(gè)力的輸出方程所構(gòu)成的:
(3)
其中,z是摩擦模型的內(nèi)部狀態(tài);v是相對(duì)速度;σ0是剛度系數(shù);而F和Fc就是摩擦力和庫(kù)侖摩擦力。根據(jù)式(3)可知,穩(wěn)態(tài)時(shí)F=Fcsgn(v),即摩擦力等于庫(kù)侖摩擦力Fc。停滯時(shí),|F| 本文通過(guò)改變摩擦特性,控制速度和速度變量之間的關(guān)系,對(duì)Dahl模型做出如下改進(jìn): (4) 其中h(|v|)為符號(hào)函數(shù),取值如下: 式中,v為相對(duì)速度;sgn(v)表示符號(hào)函數(shù);Fs為靜摩擦力;σ0為剛度系數(shù);σ1為微分系數(shù);Fc為庫(kù)侖摩擦力;z0為外力作用下的位移;Δv為靜摩擦力對(duì)應(yīng)的速度段,Δv=0.001 m/s。 改進(jìn)后的Dahl模型更好地模擬布料的摩擦接觸現(xiàn)象而且同時(shí)增強(qiáng)了布料運(yùn)動(dòng)的穩(wěn)定性。 在布料模擬的過(guò)程中,為了增加真實(shí)感,常常給布料附加各種外力,使其與周?chē)奈矬w發(fā)生碰撞。碰撞檢測(cè)算法總體劃分為靜態(tài)干涉檢測(cè)算法和動(dòng)態(tài)碰撞檢測(cè)算法,但考慮到仿真的實(shí)時(shí)性,大多采用動(dòng)態(tài)碰撞檢測(cè)算法,其中比較經(jīng)典的算法有層次包圍盒法和空間分割法。考慮到本文選用的球體和桌子作為碰撞對(duì)象,所以采用簡(jiǎn)單易行的檢測(cè)方法。若碰撞對(duì)象為球體,則要判斷任意質(zhì)點(diǎn)到球心的距離是否小于球體的半徑。若碰撞剛體為桌子時(shí),則要檢測(cè)是否有質(zhì)點(diǎn)落在桌子所處空間的區(qū)域內(nèi)。 圖2為傳統(tǒng)的二分法處理碰撞問(wèn)題的示意圖,其核心是不斷地調(diào)整時(shí)間步長(zhǎng)。但是在仿真中為了得到精確的近似解往往需要大量的迭代,造成實(shí)驗(yàn)的實(shí)時(shí)性差。所以本文提出一種改進(jìn)的二分法。 圖2 二分法處理碰撞問(wèn)題示意圖Fig.2 Schematic diagram of the binary method fordealing with collision problems 圖3 改進(jìn)二分法流程圖Fig.3 Improved dichotomy flow chart 1) 首先確定一個(gè)閾值m,作為碰撞檢測(cè)時(shí)所允許的誤差值,當(dāng)質(zhì)點(diǎn)與剛體表面的距離小于m時(shí)認(rèn)為發(fā)生碰撞,否則認(rèn)為沒(méi)有發(fā)生碰撞。 4) 使用同樣的方法重復(fù)以上步驟直到質(zhì)點(diǎn)與剛體的距離小于假定的閾值為止。 圖3為改進(jìn)二分法的流程圖。其中,k表示當(dāng)前檢測(cè)質(zhì)點(diǎn);al表示距當(dāng)前質(zhì)點(diǎn)位置距離最小值;ah表示距當(dāng)前質(zhì)點(diǎn)位置距離最大值;bl表示第一次優(yōu)化后距當(dāng)前質(zhì)點(diǎn)位置距離最小值;bh表示第一次優(yōu)化距當(dāng)前質(zhì)點(diǎn)位置距離最大值。 基于質(zhì)點(diǎn)-彈簧的布料建模,本文采用改進(jìn)的排斥力模型處理布料之間的碰撞。如果檢測(cè)到質(zhì)點(diǎn)與剛體發(fā)生碰撞時(shí),則需要沿著碰撞面的法線(xiàn)方向添加一個(gè)與速度方向相反的排斥力。若與其碰撞的剛體是桌子時(shí),排斥力的大小為常數(shù),若為球體時(shí)排斥力為質(zhì)點(diǎn)與球心距離的函數(shù): Fp=g(Qs-Qc), (6) 其中,F(xiàn)p為排斥力,Qs為發(fā)生碰撞質(zhì)點(diǎn)的位置,Qc為碰撞球體球心的位置,g是映射函數(shù)。本文考慮到布料自碰撞時(shí)的摩擦現(xiàn)象,本文將在碰撞質(zhì)點(diǎn)速度相反的方向施加摩擦力,減少碰撞次數(shù),提高布料運(yùn)動(dòng)的穩(wěn)定性。 本文實(shí)驗(yàn)基于Windows 8 64位操作系統(tǒng),使用Unity3D開(kāi)發(fā)平臺(tái)建立了布料仿真模型。硬件環(huán)境為:Intel Core i7 4790 3.60GHz,16 G RAM,顯卡為NVIDIA GeForce GTX 750 Ti。 如圖4所示,圖4(a)為未引入形變系數(shù)的效果圖,被固定的兩端明顯的過(guò)度拉伸,圖4(b)為本文引入形變系數(shù)的效果圖,符合實(shí)際布料的懸掛效果,由實(shí)驗(yàn)結(jié)果可得,通過(guò)引入形變系數(shù)有效地解決了超彈現(xiàn)象增強(qiáng)了布料模擬的真實(shí)性。 圖4 超彈現(xiàn)象的實(shí)驗(yàn)對(duì)比圖Fig.4 Experimental comparison chart of hyperelastic phenomenon 如圖5所示,圖5(a)為不同風(fēng)場(chǎng)相同材質(zhì)(絲綢)布料與桌子之間的摩擦;圖5(b)為相同風(fēng)場(chǎng)不同材質(zhì)(絲綢、錦緞、棉麻)的布料與桌子摩擦的效果(μ為不同材質(zhì)布料的摩擦系數(shù),摩擦系數(shù)影響公式(5)中庫(kù)倫摩擦力Fc的大小)。從圖中可以看出,在風(fēng)場(chǎng)強(qiáng)度q的作用下,本文的方法不僅能夠正確模擬布料與剛體之間的摩擦而且避免了布料自碰撞所產(chǎn)生的穿透現(xiàn)象。 圖5 不同材質(zhì)和風(fēng)場(chǎng)布料與圓桌交互效果圖Fig.5 Different materials and wind field cloth and round table interaction diagram 圖6分別展示了文獻(xiàn)[10]和本文的方法模擬的剛體與連衣裙摩擦交互效果,文獻(xiàn)采用的是庫(kù)倫摩擦模型,而本文采用的是雙向摩擦特性的Dahl摩擦模型來(lái)進(jìn)行摩擦接觸處理,從視覺(jué)上可以看出,本文的方法更能夠準(zhǔn)確地模擬變化的摩擦系數(shù)μ的效果。 圖6 人體模型與布料摩擦接觸效果圖Fig.6 Rubbing contact effect diagram between human body model and cloth 圖7為本文與文獻(xiàn)[14]的對(duì)比圖,在模擬布料與小球的碰撞實(shí)驗(yàn)中,文獻(xiàn)所使用是改進(jìn)的基元相交檢測(cè)算法與能量耗散的方法來(lái)處理布料與物體的碰撞問(wèn)題,本文通過(guò)插值法的思想改進(jìn)積分時(shí)間步長(zhǎng)的二分法進(jìn)行了碰撞響應(yīng)處理,很明顯本文實(shí)驗(yàn)效果更加逼真細(xì)膩。表1描述了兩個(gè)對(duì)比實(shí)驗(yàn)場(chǎng)景中布料的屬性參數(shù)。在與文獻(xiàn)[12]對(duì)比時(shí),文獻(xiàn)中只給出了頂點(diǎn)與接觸點(diǎn)的平均數(shù)目沒(méi)有給出面片數(shù),所以采用相同布料分辨率作為依據(jù),由于本文在實(shí)驗(yàn)過(guò)程中整合了大量的計(jì)算,簡(jiǎn)化了計(jì)算過(guò)程,所以迭代次數(shù)存在較大差距。在布料與小球碰撞實(shí)驗(yàn)中,通過(guò)不同的方法模擬相同實(shí)驗(yàn)對(duì)比得到,本文方法在實(shí)時(shí)性上更具有優(yōu)勢(shì)。 圖7 本實(shí)驗(yàn)場(chǎng)景與文獻(xiàn)[14]的對(duì)比圖Fig.7 Comparison between the experimental scene and the literature [14] 表1 不同方法的實(shí)驗(yàn)性能對(duì)比表 Tab.1 Comparison of experimental performance of different methods 本文提出了一種基于雙向摩擦特性的Dahl模型對(duì)布料摩擦接觸進(jìn)行模擬仿真的方法,通過(guò)采用改進(jìn)的Dahl模型和二分法使得本文不僅有效地處理了布料與剛體之間的碰撞問(wèn)題,還降低了計(jì)算量,提高了仿真的速度,在人體與布料摩擦的試驗(yàn)中幀率增長(zhǎng)了47%,在布料與小球碰撞的實(shí)驗(yàn)中幀率增長(zhǎng)了10%。同時(shí)通過(guò)因?yàn)樾巫兿禂?shù)改善了布料的超彈現(xiàn)象,在超彈現(xiàn)象的實(shí)驗(yàn)中明顯可以看出,改進(jìn)后的布料仿真更具有真實(shí)感。 目前只考慮了各向同性的布料交互的情形,今后會(huì)繼續(xù)將本文的方法拓展到各向異性的布料,并實(shí)現(xiàn)各向異性布料的摩擦接觸。
3 碰撞響應(yīng)
3.1 時(shí)間步長(zhǎng)優(yōu)化二分法的碰撞響應(yīng)



3.2 碰撞響應(yīng)中的力學(xué)模型
4 實(shí)驗(yàn)結(jié)果與分析






5 結(jié)論