ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】Soft bodyを実装する

成果物

www.youtube.com
Soft bodyを作ってみたいと思って調べてみたら、自分が思いついたものと全く同じ手法でシュミレーションをしている人がいたので、それをもとに、改良などを行い、再構築してみました。ちなみに、Sushi Catというゲームを見たのがきっかけで作ってみたいと思いました。
SUSHI CAT game - Play Sushi Cat online!

仕組み

ゴム風船のような仕組みで計算していて、ばねで出来た膜の計算と、圧力の計算で成り立っています。
http://panoramx.ift.uni.wroc.pl/~maq/soft2d/howtosoftbody.pdf
まず、膜の計算をして、頂点の分布を揃えたのち、面積から圧力を求め、その分だけ法線の向きに動かすことで膨張、収縮するようになっています。また、マウスとの衝突は、近すぎた場合、マウスとの距離を一定に保つことで実装しています。

コード

大幅に効率化して100行程に収めました。

もとにしたコードはこちらです。
GitHub - smacke/pressure-softbody: Pressurized soft body simulation in 2 dimensions.