水で満たされた領域を定義するにはどうすればよいですか?


9

私の小さなゲームエンジンを見栄えの良い水のシミュレーションで強化したいと思います。それに取り掛かるには、ゲームで水を表現する適切な方法を見つける必要があります。残念ながら、私は多くの異なる表現を知りませんので、私はあなたに尋ねます。少し前に私が尋ねた同様の質問があります。しかし、問題を明確に定式化していないので、答えは正しいですが、私が探していたものではありません。

一部のゲームでは、水は高さレベルによって定義されます。たとえば、高さが0未満のすべては水中です。私はこの表現を(主に古い)ゲームで見ました。問題は、浸水していない屋外の洞窟で、湖や海ごとに水位が異なることです。

水の発生のもう1つの、より正確な表現は、粒子です。すべての水滴は、ワールドスペースのポイントとして保存されます。それらをレンダリングするために、メタボールなどの手法を使用して、単一のメッシュを構築することができます。それらの間のダイナミクスを簡単に計算できるので、この表現はリアリズムにとって素晴らしいでしょう。残念ながら、リアルタイムでメタボールの海を計算できるマシンはありませんでした。

エンジンで水を表す他の方法はありますか?動的な湖が欲しいので、静的なジオメトリによって水域を定義することはできません。たとえば、プレーヤーが地形を変更して湖を広げた場合、水はその湾を満たし、その湖の全体的な水位はわずかに低下するはずです。


2
エンジン内の地形はどのように編成されていますか?ボクセル対ハイトマップ対ポリスープ(メッシュ)テレインには、さまざまなテクニックがあります。
Exilyth 2013年

それはメッシュとして与えられ、水はその地形メッシュを他の静的メッシュと異なるように交換すべきではありません。
danijar 2013年

1
取引または扱いますか?
トム「ブルー」ピドック

1
そのようなメタボールアプローチの非常に優れたデモはいくつかありますが、水のシミュレーションが物理的に信じられるという事実に完全に焦点を当てていない実際のゲームでは、それを使用できるとは思いません。メッシュだけでは理由がわかりません。また、メッシュを周囲に合わせたり、物理シミュレーションに基づいて生成したりしても問題にはなりません。しかし、それは本当に必要な場合にのみ行いたいことです。半現実的な水のシミュレーションの参照として、「ダストから」を確認することをお勧めします。
スリン2013年

1
可変サイズのソリューションは、「メタボールの海」問題に対するものでした。また、水の量を変更するのではなく、パフォーマンスを最適化する手段であるため、もちろん、量に応じてサイズの変動に制限があります。滝、支流、海岸、小川などの詳細が必要なエリアについては、プレーヤーと地表の近さなどの特別な考慮事項を追加してください。
Attackfarm 2013年

回答:


3

よく使われていることは言えませんが、最初に考えたのは、さまざまな体積の水を表すさまざまなサイズの粒子を持つ粒子システムを使用することです。水の上部では小さな粒子を使用して表面と波のうねりを形成し、プレーヤーに最も近い水では最小の粒子を使用して水しぶきと小さなうねりをシミュレートしますが、水が深くなるほど、粒子が大きくなります。 。これにより、任意のサイズの水をシミュレートする動的な数の粒子、変化するときの水のダイナミクス、およびある程度の制御されたパフォーマンスレベルが可能になります。

この実装には問題があるように見えますが、比較的単純で「十分に良い」ソリューションのように見えますが、ビューア/プレーヤーはシミュレーションの逸脱に気付くことはありません。


2

ボクセルベースの地形を使用している場合、ボクセルごとの地面の密度を保存することに加えて、0との間にクランプされた水の値を保存することもできます1 - groundDensity。水の描画は、マーチングキューブを実行して水の値を渡すのと同じくらい簡単です。水をシミュレートすることは少し難しいでしょうが、基本的な前提は、次のようなシステムを解くことです。

  1. 地表下の水はボクセルの残りを埋めるはずです
  2. 地表水は同じ総密度でなければなりません、 groundDensity + waterDensity、その隣接
  3. 隣人の総密度がその総密度よりも小さい場合、水はそのすぐ隣のボクセルに置き換えられます。

理想的なアルゴリズムは、ボクセルごとに1つの実行パスである計算シェーダーで実行されます。空想を得たい場合は、追加のシミュレーション効果のためにそのボクセル内に水の速度を保存することもできます。たとえば、速度に比例する量の水を、速度ベクトルが「指す」セルに分配しようとします。この速度データは、波の移動、急流の描画などにも使用できます。


質問の下のコメントで指摘されているように、残念ながらボクセル地形はありません。とにかくありがとう。
danijar 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.