Was sind Distanzfelder und wie sind sie auf die Kollisionserkennung anwendbar?


12

Als ich auf "Distanzfelder" stieß, suchte ich nach effizienten Methoden zur Kollisionserkennung in einer Szene mit statischen und dynamischen Objekten.

Ich habe versucht, dieses Konzept zu suchen und zu verstehen, aber ich konnte nur Artikel finden, die in einer sehr komplexen Sprache verfasst waren. Kann jemand in einfachen Worten erklären, was Distanzfelder sind und wie sie zur Kollisionserkennung verwendet werden können?


Meinten Sie entfernungskarten?
LearnCocos2D

Antworten:


13

Ein Distanzfeld ( oder eine Entfernungstransformation oder eine Entfernungskarte ) ist eine Gitterstruktur, bei der jede Zelle im Gitter die kürzeste Entfernung von dieser Zelle zu einer Zelle mit einer anderen Eigenschaft darstellt. Am häufigsten ist diese "andere Eigenschaft" ein Randtyp einer Zelle, z. B. eine Wand, die ein Spieler nicht passieren kann, oder die Oberfläche eines Gitters.

Entfernungsfelder haben eine große Anwendbarkeit. Sie können sich beispielsweise vorstellen, wie sie zur Implementierung der Bewegungsführung verwendet werden könnten (indem Sie Entfernungskarten für gefährliche oder wünschenswerte Objekte erstellen und Bewegungsentscheidungen durch diese gewichten).

Sie haben jedoch ausdrücklich nach einer Kollision gefragt. Das Verwenden von Distanzfeldern zur Kollisionserkennung zwischen zwei sich bewegenden Objekten kann schnell ineffizient werden, da das Wiederherstellen von Distanzfeldern mit zunehmendem Feldumfang sehr langsam werden kann (insbesondere in 3D) Methoden zur Verbesserung der Generierungszeit ein Forschungsbereich sind ).

Die Distanzfeldkollision wird daher hauptsächlich verwendet, um die Kollision eines dynamischen Objekts mit einem statischen Objekt zu erfassen. Am häufigsten habe ich dies für getan gesehen Kollision von Stoffgegenständen (oder anderen verformbaren Gegenständen) mit anderen feststehenden Gegenständen in der Szene zu erkennen .

Grob gesagt wird dies erreicht, indem ein vorzeichenbehaftetes Distanzfeld für das statische Objekt verwendet wird, wobei ein Vorzeichen (häufig negativ) eine Zelle innerhalb des Netzes darstellt und ein anderes (offensichtlich häufig positiv) eine Zelle außerhalb des Netzes darstellt. Die Partikel des Gewebenetzes können in den lokalen Raum des statischen Netzes transformiert werden, und die Positionen "vor" und "nach" eines Partikels während eines gegebenen Stoffsimulationsschritts können mit dem Distanzfeld verglichen werden, um festzustellen, ob sich das Vorzeichen geändert hat (und somit ist eine Kollision aufgetreten). Dies ist die Methode, die in diesem Papier von 2003 zur Stoffsimulation erörtert wurde .

Beachten Sie, dass ich nicht die Verwendung von Distanzfeldern als einzige Kollisionserkennungsmethode vorschlagen würde. Sie können für das, was sie können, ziemlich effizient sein, aber sie können nicht alles. Der beste Weg, um eine effiziente Kollisionserkennung zu erreichen, ist häufig die hierarchische Verwendung mehrerer Methoden mit zunehmender Genauigkeit beim Durchlaufen der Hierarchie.


5

Was sind Distanzfelder?

In der Geometrie und Computergrafik sowie in der Bildverarbeitung ist ein Distanzfeld (in einfachen Worten) eine Beschriftung jeder Zelle (Pixel in der Bildverarbeitung) mit der Distanz des nächsten polygonalen Objekts oder eines Pixels mit speziellen Eigenschaften in der Bildverarbeitung .

Mit anderen Worten, es ist eine Bezeichnung für jede Zelle, die den Wert eines nächstgelegenen Objekts mit einer durch die Karte definierten speziellen Eigenschaft hat. Das Objekt variiert je nach Anwendung.

Bildbeschreibung hier eingeben

Das obige Bild enthält eine Entfernungskarte für Grenzpixel. Beachten Sie, wie jedes Pixel den Abstand zum nächsten Grenzpixel enthält. Die Entfernung wird anhand der Entfernung von Manhattan berechnet.

Es gibt verschiedene Möglichkeiten, die Entfernung zu berechnen. Typische Ansätze sind:

Wie ist es bei der Kollisionserkennung anwendbar?

Indem Sie eine Entfernungskarte für Objekte in der Szene verwalten, können Sie anhand der Entfernung überprüfen, ob zwei Objekte kollidieren. Leider ist die Wartung einer solchen Karte teuer. Und dies wird normalerweise in sich selbst schneidenden Objekten wie Stoffsimulationen verwendet, bei denen Entfernungskarten aufgrund der Art des Objekts effizienter gepflegt und aktualisiert werden können.


Warum kann dies bei sich überschneidenden Objekten "effizienter" durchgeführt werden?
Lucidbrot
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.