2014-03-19 5 views
30

Hallo Ich mache ein Voxel-Spiel in Java und während der Erforschung der verschiedenen Dinge, die ich lernen müsste, bemerkte ich, dass viele Spiele AABB für die Kollisionserkennung verwenden. Und dann erinnerte ich mich daran, in Minecraft auch AABB zu sehen. Aber wenn ich google was AABB ist, kommt es nur mit anderen Völkern Code oder eine Organisation aus dem Geschichtsbuch. Stackoverflow, was ist AABB?Was ist AABB - Kollisionserkennung?

Antwort

35

AABB steht für "Axis-Aligned Bounding Box."

Es ist eine ziemlich rechen- und speichereffiziente Darstellung eines Volumes, die normalerweise verwendet wird, um zu sehen, ob sich zwei Objekte berühren.

Da es achsversetzt ist, "passt" es nicht wirklich gut zu Ihrem realen 3D-Objekt. AABB-Prüfungen werden oft als grobe erste Näherung verwendet, um zu sehen, ob Objekte kollidieren können. Wenn die AABB-Prüfung bestanden wird, werden detailliertere Überprüfungen durchgeführt.

Beispiel:

Stellen Sie sich Ihre Welt 2D ist, und Sie es auf ein Blatt Millimeterpapier zeichnen. Sie haben einige Objekte in der Welt (ein Ball, ein Baum, was auch immer). Um ein AABB für eines der Objekte zu erstellen, zeichnen Sie ein Rechteck um das Objekt, sodass Ihre Linien parallel zu den Rasterlinien auf dem Papier sind.

Wenn Sie die AABB für zwei Objekte haben, können Sie einige ziemlich einfache Berechnungen durchführen, um zu sehen, ob diese AABBs überlappen. Wenn sie sich nicht überschneiden, können sich diese beiden Objekte möglicherweise nicht berühren, so dass es für Ihren Kollisionsalgorithmus leicht voreilig ist.

Diese verallgemeinern zu 3D (und mehr-Ds) ziemlich leicht.

Sie möchten vielleicht auch gamedev.stackexchange.com auschecken.

+0

auch da ein Voxel Spiel ist meist Würfel ich glaube nicht, dass es Achse ausgerichtet ist ein Problem obwohl, wenn ich ein RPG machen würde und ich wollte meine Person realistisch aussehen mit einer Wand zu schlagen, die ein gutes Stück entfernt ist. – SemperAmbroscus

+0

thx ich habe mich bereits bei gamedev registriert dachte einfach, dass es einfacher war hier zu posten – SemperAmbroscus

+0

@FeatheredOrcian: Ja, wenn deine Voxel schon achsversetzt sind, dann sind AABBs toll. Sie müssen sie möglicherweise nicht einmal separat speichern, sondern können ihre Daten aus Ihren Voxeldaten ableiten. – jwd

4

Aligned Bounding Box Achse

Grundsätzlich ist es das kleinste Cuboid, die vollständig die Form enthalten kann, in der Regel von einem Paar von 3D-Koordinaten definiert ist.

Es ist sehr schnell auf Kollisionen zwischen zwei AABB zu überprüfen, da Sie nur den Bereich der X-, Y- und Z-Werte für die Ecken überprüfen müssen.