2011-08-05 16 views
7

高さマップ上を移動する流体の量を近似する方法を探しています。私が考えることができる最も簡単な解決策は、小さな直径(< 0.1m)の多数の描画されていない球として近似することです。私は水の表面を表す目に見える平面を球体の「上」に置いて、休息した場所に置きます。私の知る限りでは、管理された物理エンジンには流体シミュレータが組み込まれていないので、質問があります。高さマップ上の流体の流れをシミュレートする

実装は、球の動きをシミュレートすることができるJigLibXなどの物理エンジンを使用することで構成されます。平面の高さを決定するために、私は、グループ化の最上層にある各球の最大の高さを平均化することを考えていました。

私はパフォーマンスは素晴らしいとは思っていませんが、それはリアルタイムで近づくでしょうか?そうでない場合は、このシミュレーションを使用してフローのプリベークを行うことができますか?

私はこれが理にかなっていることを望みます。これが実現可能かどうか、あるいはこれに近づくより良い方法があるかどうかについての意見や提案が本当に必要です。

任意の助けてくれてありがとう、Venatu

(その関連する、私のターゲットプラットフォームは、C#を使用して、XNA 4.0である場合。Windowsのみ、この時点で時間内に、それほどのPhysX/Havokは、シミュレーションの可能性ですが、私は希望

+0

をあなたが研究を見てしたい場合があります[vterrain.orgに記載されている](http://vterrain.org/Water/ )。特に河川シミュレーションに関する研究。 – Bart

+0

私はちょうどあなたのように何かを実装しようとしています、小さな球がたくさん!この計画は、球が景観を侵食し、うまくいけば河川の谷を削ることを可能にすることです。 –

答えて

2

PhysXのようなものをまだ使用していない状態でリアルタイムの流体力学を実際に見たことはありません。おそらく計算が複雑なためです。私がそれを見るようにあなたのアプローチの問題は、彼らが落ち着いたときにすべての球の接触を休ませることになり、多くの処理能力を必要とします。休憩中の連絡先の多くは、最も強力なデスクトップであっても、パフォーマンスをすばやく食べることで知られています。

あなたがこのルートを下っているなら、私は、水のある部分に加えられた力が残りの部分に伝播するためにばねを使用するばねに基づく物理学を使用して弾力性のある固体体としてモデル化することを推奨します。これにより、スプリングのブレークポイントを設定し、ボディが2つ以上のボディに分かれたときにそのボディを分離することができます(逆戻りして戻ってくることもできます)。これにより、スプレーなどの基盤が得られます。また、モデルを近似するために使用するパーティクルとスプリングの数を選択できるため、パフォーマンス面でより多彩なアプローチです。

これは大きく複雑なトピックですが、少なくともいくつかの洞察を提供していただければ幸いです。

1

液体をリアルタイムでシミュレートする最も一般的な方法は、平滑粒子流体力学です。

いくつかの便利なリンク:自分自身をシミュレーションでさらに

http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics

http://http.developer.nvidia.com/GPUGems/gpugems_ch38.html

http://www.plunk.org/~trina/thesis/html/thesis_toc.html

あなたはまた、このようなスイープ・アンド・などの一部の特殊な幅広い相衝突検出アルゴリズムが必要になりますプルーンまたはハッシングセル。

あなたが正しいです、流体力学のための2次元ソリューションは完成していません。

関連する問題