Der größte praktische Unterschied zwischen BSP-Bäumen und anderen Arten von 3D-Bäumen ist, dass BSP-Bäume optimaler sein können, aber nur unter statische Geometrie funktionieren. Dies liegt daran, dass BSP-Bäume im Allgemeinen sehr langsam aufzubauen sind und oft Stunden oder Tage für ein typisches statisches städtisches Spielniveau benötigen. Die zwei Hauptgründe, aus denen BSP-Bäume länger bauen, sind (a) sie verwenden nicht achsabgestimmte Teilungsebenen, die länger brauchen, um optimal zu finden, und (b) sie unterteilen Geometrie auf Achsengrenzen, wodurch keine Objekte gesichert werden Split-Ebenen überqueren.
Andere Arten von 3D-Bäumen (Octrees, Quadtrees, kd-tree, Bounding-Volume-Hierarchy) verwenden achsausgerichtete Bounding-Volumes, und Volumes (optional) dürfen sich überlappen, so dass enthaltene Objekte nicht müssen an Volumengrenzen geschnitten werden. Beide machen die Bäume weniger optimal als BSP-Bäume, aber schneller zu bauen und einfacher für dynamische Objekte zu ändern.
diese Faktoren in Situationen ...
Außenbereiche typischerweise Extrapolation verwenden Höhenfeld-basierten Darstellungen Boden, entweder einfache oder komplexere Height geo-Mip-Mapping-Techniken wie ROAM. Der Boden selbst nimmt nicht an der 3D-Raumaufteilung teil, sondern nur Objekte, die auf dem Boden liegen.
Welten mit vielen Instanzen einfacherer und ähnlicher Geometrie (Häuser, Bäume, Asteroiden usw.) verwenden oft einen Nicht-BSP-Baum (z. B. BVH), weil das Einfügen der Geometrie in einen BSP-Baum bedeuten würde Duplizieren und Teilen der Detailgeometrie für jede Instanz.
Umgekehrt wird ein großes statisches Netz ohne Instanziierung, z. B. eine städtische Umgebung oder eine komplexe Innenraumumgebung, in der Regel einen BSP-Baum verwenden, um die Laufzeit zu verbessern. Die Tatsache, dass der BSP-Tree Geometrie auf Knotengrenzen aufteilt, ist für die Rendering-Performance hilfreich, da die BSP-Knoten als vordefinierte Dreieck-Rendering-Stapel verwendet werden können. Der BSP-Tree kann auch für die Okklusion optimiert werden, so dass keine Teile des BSP-Baumes gezeichnet werden müssen, die bekanntermaßen hinter anderen Geometrien liegen.
Siehe auch: Octree vs BVH, Bounding Volume Hierarchy Tutorial, BSP Tutorial.
Gute Antwort, obwohl ich mir nicht sicher bin, was Sie meinen, indem Sie ein Objekt an die GPU "senden" anstatt an einzelne Dreiecke. Beziehen Sie sich auf VBO vs Sofort-Modus? Weil das mit beiden Annäherungen gemacht werden kann, dachte ich ... – Aktau
@DavidJeske Diese Antwort ist sechs Jahre alt. Eine lange Zeit in der Informatik. Dies könnte sich jetzt geändert haben. –
Der Kommentar, dass Zeichnen mit BSPs langsamer ist, ist falsch. BSPs wurden entwickelt, um große statische Geometrie zu optimieren. Sie wurden ursprünglich verwendet, um die Okklusion für die Software-Rasterung zu optimieren, und wurden seither auch zur Vorausberechnung von Zeichnungsstapeln für die Hardware-Rasterung verwendet. BSPs sind bei einer Vielzahl von Instanzen nicht geeignet, da die Objekte in das BSP instanziiert und unterteilt werden müssen. BSPs sind auch für dynamische Objekte schlecht, da sie zu langsam sind, um sie zu erstellen. –