在過去的幾十年中,基於物理的三維物體動態模擬成爲了計算機圖形學的研究熱點,其中最多見的方法是基於力(force-based)的模擬方法,好比彈簧質點模型(http://www.cnblogs.com/shushen/p/5473264.html),它把物體抽象成一系列質點以及鏈接這些質點的彈簧,而後經過離散化牛頓運動定律來模擬物體的運動狀況。最近,基於位置的模擬方法在剛體、彈性體以及流體模擬方面都取得了不錯的效果,基於位置(position-based)的模擬方法雖然沒有基於力的模擬方法計算準確,可是它計算快速穩定,使其適用於實時交互應用領域。下面將詳細介紹基於位置模擬算法的主要原理。html
基於位置的模擬方法將研究物體抽象成N個粒子和M個限制條件的集合,整個算法流程如上圖所示。首先初始化每一個粒子的位置xi0和速度vi0(第1-3行),而後對於時間步長Δt而言,經過歐拉積分方法獲得粒子下一時刻新的位置(第5-6行),新的位置pi並非下一時刻的最終位置,而是下一時刻的預測位置,接着生成限制條件(第7行),並經過迭代方法不斷修正預測位置pi使其知足限制條件(第8-10行),最後利用修正後的預測位置更新下一時刻的最終位置xi和速度vi(第11-14行)。算法
假設限制條件:C(x) = 0,一階泰勒展開獲得:,因而位置修正量爲:
。函數
一種最簡單的限制條件是距離限制,以兩個粒子爲例,其距離限制函數爲:spa
那麼距離限制函數對各自的位置導數分別爲:3d
其中。htm
因而能夠獲得粒子的位置修正量爲:blog
本文爲原創,轉載請註明出處:http://www.cnblogs.com/shushen。get
參考文獻:it
[1] Bender, Jan, et al. "A Survey on Position-Based Simulation Methods in Computer Graphics." Computer Graphics Forum 33.6 (2014): 228-251.io