「距離フィールド」とは何ですか?また、衝突検出にどのように適用できますか?


12

「距離フィールド」に出くわしたとき、静的オブジェクトと動的オブジェクトの両方を含むシーンでの衝突検出のためのいくつかの効率的な方法を見ていました。

この概念を検索して理解しようとしましたが、非常に複雑な言語で書かれた論文しか見つけることができませんでした。距離フィールドとは何か、どのようにそれらを衝突検出に使用できるのか、誰かが簡単な言葉で説明できますか?


距離マップという意味ですか?
LearnCocos2D

回答:


13

距離フィールド(または距離変換または距離マップ)はグリッド構造であり、グリッド内の各セルは、そのセルから他のプロパティを持つセルまでの最短距離を表します。ほとんどの場合、「その他のプロパティ」は、プレーヤーが通過できない壁やメッシュの表面など、セルの境界タイプです。

距離フィールドには多くの適用性があります。たとえば、それらを使用して移動ガイダンスを実装する方法を想像できます(危険または望ましいオブジェクトへの距離マップを作成し、それらによる移動決定に重みを付けることによって)。

ただし、衝突について具体的に尋ねました。距離フィールドを使用して2つの移動オブジェクト間の衝突検出を実行すると、フィールドの範囲が拡大するにつれて距離フィールドの再構築が非常に遅くなるため、すぐにかなり非効率になる可能性があります(特に3Dでは、生成時間を改善する方法は研究分野です)。

したがって、距離フィールド衝突は、主に動的オブジェクトと静的オブジェクトの衝突を検出するために使用されます。最も頻繁に、シーン内の布(または他の変形可能な)オブジェクトと他の固定オブジェクトとの衝突検出するためにこれが行われるのを見てきました。

粗いことに、これは静的オブジェクトに符号付き距離フィールドを使用することで実現されます。1つの符号(多くの場合負)はメッシュのセル表し、もう一方(明らかに正)はメッシュ外のセルを表します。クロスメッシュのパーティクルは静的メッシュのローカルスペースに変換でき、特定のクロスシミュレーションステップ中のパーティクルの「前」と「後」の位置を距離フィールドと照合して、符号が変化したかどうかを判断できます(そしてしたがって、衝突が発生しました)。これは、たとえば布のシミュレーションに関するこの2003年の論文で説明されている方法です。

唯一の衝突検出方法として距離フィールドを使用することはお勧めしません。彼らは得意なものに対してはかなり効率的ですが、すべてが得意というわけではありません。効率的な衝突検出を達成するための最良の方法は、多くの場合、複数のメソッドを階層的に使用することです。


5

距離フィールドとは何ですか?

ジオメトリおよびコンピューターグラフィックスおよび画像処理でも使用される距離フィールド(簡単な言葉で)は、最も近い多角形オブジェクトまたは画像処理の特別なプロパティを持つピクセルの距離を持つ各セル(画像処理のピクセル)のラベルです。

つまり、マップによって定義された特別なプロパティを持つ最も近いオブジェクトの値を持つ各セルのラベルです。オブジェクトはアプリケーションによって異なります。

ここに画像の説明を入力してください

上の画像には、境界ピクセルの距離マップが含まれています。各ピクセルに最も近い境界ピクセルまでの距離が含まれていることに注意してください。距離は、マンハッタン距離を使用して計算されます。

距離を計算するにはさまざまな方法がありますが、一般的なアプローチは次のとおりです。

衝突検出にどのように適用できますか?

シーン内のオブジェクトの距離マップを維持することにより、2つのオブジェクトが距離に基づいて衝突しているかどうかを確認できます。残念ながら、そのようなマップを維持するのは高価です。これは通常、クロスシミュレーションのような自己交差オブジェクトで使用されます。オブジェクトの性質により、距離マップをより効率的に維持および更新できます。


自己交差オブジェクトでこれを「より効率的に」実行できるのはなぜですか?
明id
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.