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.