Ein Octree (3D) verwendet dieselben Konzepte wie ein Quadtree (2D). Wenn Sie den Wikipedia-Artikel über Quadtrees lesen und verstehen, sollten Sie in der Lage sein, dieselben Konzepte in 3D anzuwenden.
Mit diesen beiden Bäumen können Sie bereichsbezogene Suchvorgänge verwenden, mit denen die Anzahl der erforderlichen Vergleiche erheblich reduziert werden kann, um herauszufinden, welche Objekte sich in einem bestimmten Bereich befinden. Dies kann je nach Spiel nützlich sein, um Vis-Culling oder sogar Kollisionen durchzuführen.
Das Grundkonzept besteht darin, dass der Weltraum in "Eimer" unterteilt ist: Quadrate für 2D oder Würfel für 3D. Bei einer leeren Welt beginnen Sie mit einem einzelnen Quadrat- oder Würfeleimer, der die gesamte Welt abdeckt. Wenn Sie der Welt Objekte hinzufügen, beginnen Sie am Stammknoten und arbeiten sich basierend auf der Position und Größe des Objekts in den Baum hinein. Wenn der Zielbereich die Kapazität erreicht, unterteilen Sie ihn, indem Sie Quadrate in 4 kleinere Quadrate (Quadtree) oder Würfel in 8 kleinere Würfel (Octree) aufteilen. Jedes Objekt, das Sie der Welt hinzufügen, wird nur so tief in den Baum eingefügt, wie es physisch vollständig in die Grenzen des Eimers passt. Wenn ein Objekt nicht in die Grenzen des aktuellen Buckets passt, müssen Sie das Objekt in den kleinsten übergeordneten Bucket verschieben, in den es vollständig passt.
Beachten Sie, dass die Verwendung eines Quadtree oder Octree zu viel des Guten ist, wenn Sie nicht viele Objekte in Ihrer Welt haben. Für beide gibt es auch Open-Source-Lösungen.
n-Bäume sind das bekannteste, aber nicht das einzige verfügbare räumliche Partitionierungssystem. Es gibt viele, viele andere. Ein bisschen mehr Informationen über die Daten, über die Sie verfügen, tragen wesentlich dazu bei, die beste Wahl zu finden. Ändern Ihre Boxen ihre Größe oder bewegen sie sich? Wie gross sind sie? Wie viele sind es? Haben Sie viele Einfügungen / Entfernungen?
quelle