PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)

研究背景

PBD(Position based dynamics)是一種快速、穩(wěn)定、可控的數(shù)值模擬技術(shù),該方法直接操作物體節(jié)點(diǎn)位置,通過(guò)力與運(yùn)動(dòng)約束關(guān)系,更新節(jié)點(diǎn)位置,避免了傳統(tǒng)基于牛頓第二定律的高精度迭代計(jì)算。

 

PBD方法是一種基于幾何的方法,和有限元方法與無(wú)網(wǎng)格方法相比計(jì)算量更小,和質(zhì)點(diǎn)彈簧方法相比,提供了更好的穩(wěn)定性,并且可以直接控制模型的位置。雖然它的計(jì)算精度沒(méi)有上述方法高,但是提供了視覺(jué)合理、快速定性計(jì)算的途徑,在計(jì)算動(dòng)畫領(lǐng)域獲得應(yīng)用。該方法結(jié)合具體力學(xué)問(wèn)題,針對(duì)定性計(jì)算需求可以構(gòu)建快速的仿真場(chǎng)景。

算法簡(jiǎn)介

PBD的它的求解過(guò)程是:

  1. 初始化三維物體的質(zhì)量、速度和位置,然后通過(guò)一個(gè)簡(jiǎn)單的顯式歐拉積分步驟計(jì)算出三維物體中每個(gè)質(zhì)點(diǎn)的預(yù)測(cè)位置。

  2. 針對(duì)上述預(yù)測(cè)位置,根據(jù)約束函數(shù)梯度等信息將每個(gè)點(diǎn)投影到合適的位置。

算例

SiPESC課題組開展PBD的學(xué)習(xí)與程序開發(fā),初步實(shí)現(xiàn)典型算例求解。

1、布料模擬

通過(guò)添加拉伸約束和彎曲約束對(duì)布料進(jìn)行模擬。

A. 布四角固定在重力作用下的運(yùn)動(dòng)

PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)的圖1
PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)的圖2

B. 布上邊緣固定在重物拉扯下撕裂

PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)的圖3
PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)的圖4

C. 布自由落體時(shí)與物體碰撞(沒(méi)有考慮碰撞檢測(cè)和摩擦因素)

PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)的圖5
PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)的圖6

上述動(dòng)畫均屬于實(shí)時(shí)演示。

2、剛體模擬

同時(shí)我們結(jié)合AABB層次包圍盒碰撞檢測(cè)方法利用PBD方法對(duì)剛體進(jìn)行了模擬。如下圖,左邊是一個(gè)剛體做自由落體運(yùn)動(dòng)掉落在另一個(gè)剛體上,右圖是一個(gè)剛體在彈簧的作用下與比自己質(zhì)量大的剛體進(jìn)行碰撞。

PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)的圖7
PBD(基于位置動(dòng)力學(xué))算法的程序開發(fā)的圖8

另外,它也可以基于SPH方法對(duì)流體進(jìn)行仿真模擬。目前我們的研究階段主要是利用PBD方法對(duì)流體和柔性體耦合進(jìn)行模擬,計(jì)劃開展軟體機(jī)器人的仿真研究。

特別鳴謝:

感謝SiPESC軟件所李娜對(duì)PBD算法所做的研究工作。

來(lái)源: SiPESC 公眾號(hào)

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP