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