ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

粒子法による流体シミュレータ作りたい

2010年06月20日 18時55分34秒 | ソフト開発日記
見た目はさほど変わってないけど、
以前のしょっぱい流体シミュレータからちょこっとだけ進化。

以前は粒子数を増やしても、粒子(球)が重なっていき
どんどん沈んでいっちゃってた。
粒子を3倍に増やしても、水面の高さは変わらず、っていう具合に。

今回は粒子の跳ね返り後の速度を、粒子の接近具合に依存させてみました。
調べてみると、これが一般的な手法のようでした。

すると水面が沈むことなく、粒子を増やせばどんどん高くなるようになりました。
ただ粒子の重なりは完全に防げず、下にいくにつれて重なりが激しくなっており、
図らずも色の濃さが圧力を表してる感じになってます。

粒子数は800で、リアルタイム計算でそこそこヌルヌル動きます。
あとでっかい球をドラッグできるようにしました。
(一般的な物理エンジンでよくあるあんな感じ)

ここまで計算を全て3次元ベクトルで行ってきたので、
z方向に初期速度を与えれば即3Dになる。はず。

今度はこれをC++に移植してOpenGLで3Dアニメーションにしてみたい。
Java3Dは一回挫折したけど、Java3Dでもやれたらやってみたい。