2012-12-09 9 views
5

2Dゲームで現実的な流体(水)を作りたいと思っています。このゲームはTerrariaに似ています。私はあなたがシーン上の衝突粒子の束をどのように叩くことができ、それを上にレンダリングし、現実的な演技の水を聞くことができるか聞いたことがあります。タイルマップ2D現実的流体物理学

Terrariaはタイルベースの水を使用しています。

私は弾丸の3D物理を使うことを考えました(box2dには私が打つ限界があります)。衝突のないパーティクル効果のために、私はSPARKのようなものを使うことを考えています。私はそれが私に両方の世界の最高を与えると思うからです。

私が考えている問題は、各ブロックが16x16であることです。したがって、1600x900のシーンでは、約5000のタイルがあります。

したがって、これらのタイルが衝突可能であることを物理エンジンに伝える必要があります。もちろん、衝突しないと考えられる空きタイルがあります。

これについてアイデアはありますか?言語はC++ですが、私はそれが関連しているのか疑問です。

EDIT:私は洞くってグリッドベースの水を使用しなければならないと思います。私は、振り返ってみると、すべてのことをより困難にするだけでなく、どのような利益を得るのだろうか?

答えて

1

あなたの質問は流体のタイルについてですが、あなたは実際に粒子に基づいたアプローチについて質問しているようです。

この場合、「Smoothed Particle Hydrodynamics」(SPH)は、リアルタイム状況での2Dおよび3D流体シミュレーションで非常に一般的な手法です。

はい、基本的に単なるパーティクルシステムです。各パーティクルは、環境(重力、衝突など)の合理的な(数学的に安定した)方法で、特定の距離を保つという制約流体が非圧縮性であるために離れている。

粒子が十分な場合はポイントとしてレンダリングしたり、サーフェスを派生させるためのソースとして使用することもできます(例えばmarching-cubesを使用しても構いませんが、2Dでは気にしません) 。

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

これは、GPUに加速する実際のコードが比較的容易であるという利点を持っている、と。

確かに、何らかのタイルベースのアプローチを試すよりも優れたアプローチだと思うし、スプレーキックアップやオブジェクトのエッジにぶつかる波など、もっと面白い結果が得られるかもしれません。何か楽しい仕事をするのは難しいです、私はそれを行ってみましょう。

+0

うーん。私はあなたが私にこれを再現させていると思う、hehe。あなたは精緻化できますか?パーティクルをタイルマップに衝突させる方法のアイデアを教えてくれませんでした。さらに、どのようなライブラリがこれを持っていますか?この数学を自分自身で実装する方法はありません。 – user148459

+0

また、SPHにはどのような代替品がありますか?覚えておいて欲しいのは、これはパーティクルシミュレータではなく、2Dのゲームなので、SPHは過酷な気分になります。 – user148459

+0

現実的な流体が必要な場合は、おそらく最も簡単なアプローチです。それが過度だと思うのであれば、実際には流体のようなオプションはあまりないでしょう。 – JasonD

関連する問題