您好,登錄后才能下訂單哦!
一個模擬變形物體最簡單額方法就是將其表示為彈簧質點系統(Mass Spring Systems),因為方法簡單,這個框架對于學習物理模擬和時間積分的各種技術都比較理想。一個彈簧質點包含了一系列由多個彈簧連接起來的質點,這樣的系統的物理屬性非常直接,模擬程序也很容易編寫。
但是簡單是有代價了:
1.物體的行為依賴于彈簧系統的設置方法;
2.很難通過調整彈簧系數來得到想要的結果;
3.彈簧質點網格不能直接獲取體效果。
在很多的應用中這些缺點可以忽略,在這種場合下,彈簧質點網格是最好的選擇,因為夠快夠簡單。
今天首先說明一下Mass Spring Systems的理論基礎,然后來實現繩子的real-time模擬。
假設有N個質點,質量為mi,位置為xi,速度為vi , 1<i<N.
這些質點由一組彈簧S連接,彈簧參數為(i, j, lo, ks, kd). i,j 為連接的彈簧質點,lo為彈簧完全放松時的長度,ks為彈簧彈性系數,kd為阻尼系數,由胡科定律知彈簧施加在兩頂點上的力可以表示為:
由受力守恒知 fi+fj = 0. fi和fj的大小和彈簧伸長成正比關系。
對于阻尼的計算,
大小和速度成正比,并且符合力守恒,則對于一個質點,其受力方程為:
在模擬算法中,牛頓第二定律是關鍵,f = ma。在已知質量和外力的情況下,通過 a=f/m 可以得到加速度,將二階常微分方程寫成兩個一階方程:
可以得到解析解:
初始狀態為 v(to) = vo, x(to)=xo.
積分將時間t內所有的變化加和,模擬的過程就是從 to 開始不斷地計算 x(t) 和 v(t),然后更新質點的位置。
最簡單的數值解法就是利用有限的差分近似微分:
其中delta t 是為時間步長,t為幀號,帶入之前的公式得:
這個就是顯式的歐拉解法,下一時刻的狀態完全由當前狀態決定。
整個過程的偽代碼如下:
// initialization forall particles i initialize xi , vi and mi endfor // simulation loop loop forall particles i fi ← fg + fcoll + ∑ f(xi , vi , x j , v j ) endfor forall particles i vi ← vi +
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。