【遊戲課】技術片段之——彈簧質點模型與布料動畫

簡介

在動畫中對人物衣物的建模是非常重要的,直接影響到真實感的體驗。廣泛採用的技術是彈簧質點模型。彈簧質點模型是一種物理模型,其核心是把布料的形狀用微分方程來表示。該模型結合布的物理屬性, 如質量、硬度和彈性等布的材料屬性, 運用力學理論建立起微分方程。


彈簧模型

1. 拉力彈簧: 拉力彈簧將一個質點和與它直接相連的質點連接。它產生的力用於抵抗布的拉伸或壓縮。
2. 交叉彈簧: 一個交叉彈簧跨過兩相鄰三角形的公共邊, 連接兩個有公共邊的三角形上的質點。在質點- 彈簧模型中, 交叉彈簧主要用於模擬布的彎曲力。


力模型

1.內力

a)彈簧力

假定一個彈簧Si, j連接兩個質點Pi 和Pj。根據虎克定律, 作用力F s (Si, j) 和彈簧變化長度成正比:




其中, ks i, j是彈簧的剛度, I i, j是彈簧的矢量, l0i, j是彈簧的原長, x i和x j是質點Pi 和Pj 的位置。

b)阻尼力

動態的布模擬中, 適當的阻尼力對維持系統的穩定性是非常重要的。例如, 爲了防止兩質點間出現不規則的振動, 一個強張力必須伴隨一個穩定的強阻尼力。在我們的質點- 彈簧模型中, 阻尼力Fd(Si, j) 和兩個相連質點的速度差成正比。其公式如下: Fd(Si, j) = kd 其中, kd i, j是阻尼常數, v i和v j是兩質點Pi和Pj 的速度。在質點i 上的內力Fint可以描述爲:



其中, n 是直接連接質點i 的質點數目。

2.外力

a)重力

在我們的模型中, 我們用規則的網格描述布模型; 因此, 我們認爲每個質點有相同的質量, 該質量等於布的總質量除質點的數量。在布模擬過程中, 作用在每個質點的重力是常數。

b)空氣阻力

根據Stocke 的阻力定律, 空氣阻力Fair和質點速度的n 次冪成正比。這個定律可近似表示如下:



其中, m i 是質點的質量, kr 是定義的空氣阻力的正常數, vi 是速度矢量, 其大小爲‖vi ‖, 方向爲vdi 。在我們的模型中, 我們將指數n 選爲1, 那麼空氣阻力表示爲:



考慮重力和空氣阻力, 作用在質點上的外力可以表示如下:



這樣, 作用在質點上的總力爲:


數值方法  歐拉方法

假設m i 是質點Pi 的質量; 在時刻t, 質點的位置爲xi , 速度爲vi , 加速度爲ai , 作用在質點上的力爲F i 。根據牛頓定律, 質點的加速度和作用力存在如下的關係: Fi = miai。因此ai =Fi/m i。

爲了求出每一時刻每個質點的速度和位置, 在我們的系統中, 運用了顯式的歐拉方法。這裏要求迭代步長h 足夠小, 而且假定在每個時間段加速度爲常數。根據歐拉方法, 下一時刻( t+ h) 的速度vi ( t+ h) 和時刻t 的速度vi ( t) 存在如下關係:
vi ( t+ h) = vi ( t) + aih= vi ( t) +Fim ih 
那麼, 下一時刻( t+ h) 的位置xi ( t+ h) 和時刻t 的位置xi ( t) 存在如下關係:
xi ( t+ h) = xi ( t) + vi ( t+ h) h


參考論文:《基於質點- 彈簧模型的布模擬方法》 褚蓮娣 2002

注:本文僅供學習交流使用,謝絕轉載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章