1
衝突のために2Dビットマップ(地形に使用)を2Dポリゴンメッシュに変換するにはどうすればよいですか?
だから私は、破壊可能な地形などの通常のすべてのものを備えたワームに似た大砲タイプのゲームを作っています...そして、私に衝突法線やそのようなものを与えないピクセルごとの衝突を使うことができましたが。すべてをメッシュに変換することは、既存の物理ライブラリを使用できることも意味します。これは、自分で作成できるものよりも優れています。 私は、マーチングスクエアを使用してビットマップの輪郭を取得することでこれを行うと人々が言及しているのを見てきましたが、これらをメッシュに変換する方法については何も見つかりません(異なる高さを定義する輪郭線を持つ3Dメッシュを参照する場合を除き、これは私が望むものではありません)。現時点では、次のような基本的なマーチングスクエアの輪郭を取得できます(背景のグリッドのような線がマーチングスクエアの「セル」になります)。 よりスムーズで正確な結果を得るには、補間する必要がありますが、それが一般的な考え方です。これをメッシュに変換する方法についていくつかのアイデアがありましたが、それらの多くは特定の状況で機能しない可能性があり、完全に機能すると考えていたものは非常に遅く、仕上げさえしていませんまだ!理想的には、私が最終的に使用するものはどれも、急速に発射する武器や掘削ツールなどのケースですべてのフレームを実行するのに十分な速さである必要があります。 このようなものをメッシュに変換するための何らかの既存のアルゴリズム/テクニックがあるに違いないと思いますが、何も見つからないようです。Delaunay Triangulationのようなものを見てきましたが、私が知る限りでは、上記の例のように凹型の形状を正しく処理できず、地形内の穴も考慮されません。 比較のために思いついたテクニックを調べて、誰かがより良いアイデアを持っているかどうかを確認すると思います。まず最初に、マーチングスクエアの等高線を補間し、線の端から頂点を作成し、線がセルのエッジと交差する場所の頂点を取得します(重要)。次に、頂点を含む各セルについて、2つの頂点を使用してポリゴンを作成し、セルのコーナーを3番目の頂点(おそらく最も近いコーナー)として作成します。 各セルに対してこれを行うと、元のビットマップを正確に表すメッシュが必要になると思います(ビットマップの端にあるのはポリゴンだけで、その間にある大きな領域は空になります)。これに関する唯一の問題は、最初のマーチングスクエアですべてのピクセルを1回ループし、次にすべてのセル(画像の高さ+ 1 x画像の幅+ 1)を少なくとも2回ループすることです。画像...