Wenn (zum Zwecke der Kollisionserkennung) 3D-Objekte in einem Spiel durch Kugeln dargestellt werden, was ist ein guter Algorithmus zum Erkennen einer Kollision zwischen Kugeln?
Wenn jedes Objekt eine Position ab dem letzten Frame und eine neue (gewünschte) Position hat, was ist ein guter Algorithmus, der Kollisionen identifiziert, bei denen sich die Kugeln im vorherigen Frame nicht überschnitten haben und sie sich im zweiten Frame möglicherweise nicht überschneiden. aber sie haben sich irgendwo dazwischen geschnitten?
quelle
Verwenden Sie einen Sweep-Test, wie in diesem Gamasutra-Artikel gezeigt.
quelle
Aus meinem Kopf:
Und das ist alles, was dazu gehört. Ich würde erwarten, dass das ziemlich schnell geht.
quelle
Hier ist ein weiterer schöner Gamasatura- Artikel.
quelle
Als jemand zu sprechen, der dies getan hat: Es ist den Aufwand nicht wert . Wenn Ihr Spieldesign es nicht unbedingt benötigt und es es mit ziemlicher Sicherheit nicht tut, werden Sie weitaus mehr Mühe darauf verwenden, die Arbeit zu beschleunigen, als Sie wirklich erwarten. Und es wird langsamer sein, als Sie es wollten.
quelle
Es gibt einen Artikel über das Ableiten der Kollisionserkennung mit Mathematik auf Flipcode . Es hat Kreis-Kreis. So können Sie den Kollisionspunkt genau erkennen und prüfen, ob überhaupt eine Kollision vorliegt.
quelle
Die Kollisionserkennung für sich bewegende Objekte wird in der Regel als "Berechnung des überstrichenen Volumens" bezeichnet. Hier finden Sie einige Codes / Artikel zu diesem Thema.
http://www.gpu-voxels.org/demos/ (Demo)
Quellcode-Bibliotheken:
https://github.com/fzi-forschungszentrum-informatik/gpu-voxels
https://libigl.github.io/tutorial/#swept-volume
https://github.com/gradientspace/geometry3Sharp
Artikel:
http://gamma.cs.unc.edu/SV/sm03.pdf
https://www.cs.columbia.edu/~allen/PAPERS/abrams.swept.pdf (Leider kein Quellcode)
http://www.realtimerendering.com/intersections.html (ziemlich umfangreiche Linksammlung)
quelle