4

Ich versuche, eine Starrkörper-Simulator zu schreiben, und während der Simulation bin ich nicht nur interessiert zu finden, ob zwei Objekte kollidieren oder nicht, sondern auch den Punkt als auch normal von Kollision. Ich habe viele Ressourcen gefunden, die tatsächlich sagen, ob zwei OBB kollidieren oder den Trennachsensatz nicht verwenden. Auch ich interessiere mich für die 3D-Darstellung von OBB. Nun, wenn ich die Achse mit minimalem Überlappungsbereich für zwei kollidierende OBB kenne, gibt es eine Möglichkeit, den Kollisionspunkt und den Normalfall der Kollision zu finden? Außerdem gibt es zwei Hauptfälle der Kollision, nämlich die erste und die zweite Kantenkante. Ich habe versucht, dieses Problem zu googlen, aber fast jede Lösung erkennt nur Kollision mit wahr oder falsch.Schnittpunkt zwischen Oriented Boxes (oder OBB)

Bitte jemand Hilfe!

+1

Normalerweise werden OBB-Tests als * konservativer * Test verwendet, um Objekte, die * nicht kollidieren können, schnell auszuschließen. (Manchmal als "breite Phase" bezeichnet). Wenn sich die OBBs kreuzen und die Objekte * kollidieren können, beginnt die "enge Phase". Dort prüfen Sie jeden Scheitelpunkt/Kante eines Objekts auf Kollisionen mit jeder Fläche/Kante des anderen Objekts. (Dies ist teuer - daher werden OBBs und Begrenzungsvolumenhierarchien verwendet!). Die "Kollisionserkennung" besteht dann darin, die nächsten Punkte für die V/F- und E/E-Paare zu berechnen. Wenn der Abstand dieser Punkte nahe Null ist, kollidieren die Objekte an diesen Punkten. – Marco13

+0

Der genaue Kollisionspunkt hängt in der Tat von der genauen Flugbahn ab. Können wir eine gerade Linie annehmen? Und ist die Linie mit einer der Boxen ausgerichtet? –

Antwort

0

Betrachten Sie die Szene in der Richtung der Bewegung (in anderen Worten, wenden Sie eine Änderung der Koordinaten an, so dass diese Richtung vertikal wird und die Höhe fallen lässt). Sie erhalten eine 2D-Figur.

Betrachtet man die Gesichter der beiden einander gegenüberliegenden Kästen, sieht man zwei Sechsecke, die jeweils in drei Parallelogramme aufgeteilt sind.

enter image description here

Dann

  • erkennen die Schnittstellen zwischen den Kanten in 2D. Aus den Abschnittsverhältnissen entlang der Kanten können Sie die tatsächlichen z-Abstände bestimmen.

  • Bestimmen Sie für alle Scheitelpunkte das Gesicht, auf das sie in der anderen Box fallen; und aus den 3D-Gleichungen der Durchstoßpunkt der Betrachtungslinie in die Gesichtsebene, daher der Abstand. (Wiederholen Sie diesen Vorgang für den Eckpunkten A und B)

die Abstände Vergleich wird Ihnen sagen, welche Kollision passiert zuerst und geben Sie die Koordinaten des ersten Treffpunkt (im transformierten System, das zurück zu absoluten Koordinaten).

Das Punkt-in-Gesicht-Problem ist einfach zu implementieren, da die Flächen konvexe Polygone sind.

Verwandte Themen