回答:
Q-GamesがPixeljunk Shooterに使用したものを調べてください。それはかなり複雑な流体物理学を持つ2Dゲームです。彼らが自家製またはミドルウェアの物理エンジンを使用したかどうかはわかりませんが、情報はおそらくどこかにあるでしょう。
さて、私はこれを検討していませんが、ほとんどすべての物理エンジンがアイデアをエミュレートできるという事実を知っています。Box2Dなど
基本的に、粒子が跳ね回ったり、表面から離れたり、互いに離れたり(ガスに対しては速い)しますが、一定の重力のような効果も与えます(液体はすべて同じですが、一部のガスはゆっくりと上昇させることができます)。
外側の粒子をリンクすると、質量を表す多角形が得られます
または
単純に各粒子の上にピクセルまたは粒子のグラフィックを描画すると、代わりに質量のクラウド効果を実現できます。
具体的に流体を扱う唯一のライブラリは、Fluidicです。ただし、かなりアルファ版であり、リリースは1つだけです。物理ライブラリBulletは、流体のモデリングに使用される手法である「平滑化粒子流体力学」をサポートしています。ライブラリは3D向けですが、1つの軸に制約を適用して2Dで機能させることもできます。
私の推奨事項は、他の回答に関するいくつかのコメントですでに述べたように、Box2DやChipmunkなどの標準的な物理エンジンを使用し、いくつかの円を使用して水(重力あり)または気体(重力なし)をモデル化し、これらを組み合わせることです1つの水またはガスのボディに。粘性をシミュレートできるように、個々のボディにいくつかの制約を適用して、それらを「塊にする」ことができます。見ていこのビデオ(ビデオでは正方形としてモデル化)、個々の体がどのように連携するかを確認するが。ただし、このビデオで使用されている手法は、この段落で説明した手法とは異なります。このビデオを使用して、円が互いにどのように相互作用するかを把握し、使用する物理ライブラリに存在する制約でこれを模倣しようとすることができます。
おもしろいのは、複数の円を水域に結合する場合です。私が思いつく最も簡単な解決策は、各円をメタボールとして描画して、より大きな体の一部として表示することです。ここで、これらのボディの背後にある数学といくつかのサンプルコードを見つけることができます。
この質問が投稿されてから数年が経ちましたが、検索中に出くわしたので、更新するつもりでした。
GoogleはBox2Dシステム用のLiquidFun(オープンソース)をリリースしました。いくつかの制限がありますが、液体、砂などのパーティクルをかなりまともなパフォーマンスで始めるための簡単な方法です。
https://github.com/google/liquidfun
PixelJunkには素晴らしいアプローチがありますが、プライベートライブラリです。彼らは、GCD 2010での講演で驚くべき詳細レベルを共有しました。