www.wikidata.de-de.nina.az
Binary Space Partitioning BSP deutsch binare Raumpartitionierung oder BSP Baum ist eine Technik in der Informatik zur Partitionierung multidimensionaler Daten durch eine Menge von Hyperebenen Die so erstellte Datenstruktur ist ein Binarbaum und wird BSP Baum genannt Die wohl verbreitetste Anwendung von BSP Baumen ist die raumliche Unterteilung geometrischer Objekte BSP findet vor allem Verwendung bei Grafik Engines von Computerspielen fur Objekte oder Teile der Welt die sich wahrend des Spiels geometrisch nicht mehr verandern Eine weitere Anwendung findet sich beim Raytracing Ein Spezialfall der BSP Baume sind k d Baume oft auch als axis aligned BSP Trees achsenparallele BSP Baume bezeichnet Bei kd Baumen sind die unterteilenden Hyperebenen immer entlang der Achsen des Koordinatensystems ausgerichtet Inhaltsverzeichnis 1 Verfahren 2 Anwendungen und Alternativen 2 1 Algorithmus fur eine Liste von Polygonen 3 Beispiel 1 3 1 Aufbauen des Baumes 3 2 Durchlauf des Baumes 4 Beispiel 2 4 1 Aufbauen des Baumes 5 Siehe auch 6 Literatur 7 Weblinks 8 EinzelnachweiseVerfahren BearbeitenBeim BSP wird der gesamte Raum anfangs durch eine zunachst beliebig wahlbare Teilungsebene in zwei Teile geteilt Fur beide Halbraume wird dann das gleiche gemacht wie zuerst mit dem gesamten Raum das heisst die Welt wird rekursiv immer weiter unterteilt Jeder innere Knoten des Binarbaumes reprasentiert somit eine Teilungsebene wahrend die zwei Teilbaume eines inneren Knotens dann jeweils einen Teil des Raums reprasentieren Das Ende der Unterteilung ist meist dann erreicht wenn in einem Teilraum nur mehr ein Datenelement der Ausgangsmenge z B ein geometrisches Grundobjekt wie ein Dreieck oder Polygon vorhanden ist Die Teilungsebenen fallen aus praktischen Grunden oft mit den Polygonen der geometrischen Objekte zusammen Beim Erstellen des BSP Baums wird dann ein Polygon aus dem aktuellen Teilraum gewahlt mit dessen Ebene der Teilraum weiter unterteilt wird Dabei wird einerseits darauf geachtet dass sich ungefahr gleich viele Polygone auf jeder Seite der gewahlten Ebene befinden andererseits dass moglichst wenige Polygone des Teilraumes durch die Ebene zerschnitten werden weil das Zerschneiden zu mehr Polygonen fuhrt wodurch sich die benotigte Zeit erhoht um z B die Polygone zu zeichnen Ziel bei der Erstellung des BSP Baumes ist es einen Baum zu erzeugen welcher bei der spateren Traversierung ein optimales Laufzeitverhalten aufweist Ublicherweise wird versucht dies durch die Erzeugung eines balancierten Baumes zu erreichen Die Daten der Ausgangsmenge konnen entweder ausschliesslich in den Blattern des Baumes oder sowohl in den Blattern als auch in den inneren Knoten gespeichert sein beispielsweise indem das Polygon das zur Teilung verwendet wurde einem der beiden entstandenen Teilraumen zugeschlagen wird oder direkt im gleichen Datenelement wie die Ebene gespeichert wird Man nennt den BSP Baum dann leaf based blattbasiert bzw node based knotenbasiert Anwendungen und Alternativen BearbeitenDurch die BSP Technik konnen viele Berechnungen wie Kollisionserkennung oder die Verdeckungsberechnung von Polygonen wesentlich schneller erfolgen Beispiele fur die Verwendung von Binary Space Partitioning in Computerspielen sind die Game Engines von Doom dabei handelt es sich um zweidimensionales BSP d h die Teilungsebenen sind eigentlich Teilungsgeraden der Quake Reihe und von Doom 3 Beim Raytracing werden BSP Baume als Beschleunigungstechnik verwendet um nur bei moglichst wenigen Primitiven einen Schnittpunkttest durchzufuhren Weitere Methoden zur hierarchischen Unterteilung des Raumes sind Quadtrees und Octrees Algorithmus fur eine Liste von Polygonen Bearbeiten Der folgende rekursive Algorithmus erstellt einen BSP Baum fur eine Liste von Polygonen in der Ebene 1 Wahle ein Polygon P aus der Liste aus Erzeuge einen Knoten N im BSP Baum und fuge P in die Liste der Polygone an diesem Knoten hinzu Fuhre fur jedes andere Polygon in der Liste folgende Schritte aus Wenn dieses Polygon vollstandig vor der Ebene liegt die P enthalt verschiebe dieses Polygon in die Liste der Knoten vor P Wenn dieses Polygon vollstandig hinter der Ebene liegt die P enthalt verschiebe dieses Polygon in die Liste der Knoten hinter P Wenn dieses Polygon von der Ebene geschnitten wird die P enthalt teile es in zwei Polygone auf und verschiebe sie in die jeweiligen Listen von Polygonen hinter und vor P Wenn dieses Polygon in der Ebene mit p liegt fugen Sie es der Liste der Polygone an Knoten N hinzu Wende diesen Algorithmus auf die Liste der Polygone vor P an Wende diesen Algorithmus auf die Liste der Polygone hinter P an Die Abbruchbedingung fur die Rekursion ist erreicht wenn die Liste der Polygone vor P oder die Liste der Polygone hinter P leer ist Beispiel 1 BearbeitenAufbauen des Baumes Bearbeiten nbsp Abbildung 1 Beispiel fur eine Zerlegung mit vier StreckenIn Abbildung 1 ist ein Beispiel fur die Zerlegung eines Raumes mit vier Strecken zu sehen In dem rotlichen Kasten sieht man den daraus resultierenden binaren Baum Zunachst teilt Strecke 1 den Raum in zwei Halbraume gekennzeichnet durch die blau gestrichelte Linie und die Strecke 2 in die beiden Teilstrecken 2a und 2b Die Orientierung der Normalen der Strecken klassifiziert die beiden Halbraume nun als einen Halbraum vor der Strecke und einen Halbraum dahinter Folglich werden die Teil Strecken die sich davor befinden in den linken die die sich dahinter befinden in den rechten Teilbaum des Baumes eingefugt und mit den beiden entstehenden Halbraumen fortgefahren Betrachtet man zunachst die Strecke 2b so teilt diese den Raum wieder in zwei Halbraume vor Strecke 1 Jedoch befindet sich keine weitere Strecke im selben Halbraum vor ihr Strecke 4 wurde durch die Zerlegung von Strecke 1 in den Bereich hinter Strecke 1 verbannt Hinter Strecke 2b befindet sich mit der gleichen Argumentation ebenfalls nichts mehr das in den Baum eingeordnet werden musste und das Verfahren terminiert fur diesen Teilbaum Strecke 2a hingegen teilt den Raum wieder in zwei Teilraume und Strecke 4 wird in den Halbraum davor Strecke 3 in den Halbraum dahinter eingeordnet Die Strecken 3 und 4 zerteilen den Raum zwar erneut in jeweils wieder zwei Halbraume fugen jedoch nichts weiter in den Baum ein so dass der Baum im rotlichen Kasten entstanden ist Durchlauf des Baumes Bearbeiten Nimmt man nun den Betrachter dort an wo sich der Kasten mit dem BSP Baum befindet die Blickrichtung ist hier nicht weiter wichtig so ergibt sich die Durchlauf und damit Zeichenreihenfolge der Strecken wie folgt Beginnend von der Wurzel Knoten 1 werden zunachst die Knoten die vom Betrachter aus gesehen hinter dieser Strecke liegen gezeichnet anschliessend die Strecke selbst und danach die Strecken die sich vor der Strecke also auf der Seite des Betrachters befinden Im vorliegenden Fall sieht der Durchlauf des Baumes wie folgt aus 3 2a 4 1 2b Zunachst betritt man den Baum uber die Wurzel 1 Nun muss man zunachst alle Strecken hinter der Strecke 1 zeichnen und begibt sich also in den rechten Teilbaum und landet dort bei der Wurzel 2a Nun muss man auch dort erst die Knoten hinter dieser Wurzel zeichnen und steigt wieder in den rechten Teilbaum ab und landet beim Knoten 3 Dieser ist ein Blatt und kann sofort ausgegeben werden Danach wird Strecke 2a gezeichnet und anschliessend die Knoten davor also 4 Nun ist auch dieser Teilbaum abgearbeitet und man zeichnet schliesslich die Knoten 1 und 2b Beispiel 2 Bearbeiten nbsp Beispiel fur eine mogliche Zerlegung eines Objektes mittels eines BSP Baumes In der Computergrafik wird der BSP Baum haufig auch zum Speichern von Informationen uber die Geometrie eines Objektes benutzt Derartige BSP Baume werden manchmal als leaf storing BSP trees bezeichnet da die Informationen vorrangig in den Blattern abgelegt werden Die nebenstehende Abbildung beschreibt die Erstellung eines solchen Baumes Es ist zu beachten dass die Normale der Kanten werden fur die Zuordnung auf der Vorder oder Ruckseite alle in Richtung inneres des Objektes Raumes zeigen Aufbauen des Baumes Bearbeiten Zu Beginn wird das Objekt an einer beliebigen Kante hier die Kante D unterteilt und als Wurzel fur den BSP Baum benutzt Es ist zu beachten dass die Auswahl der Startkante mit entscheidend fur die spatere Traversierungsgeschwindigkeit ist welche deutlich besser bei einem balancierten Baum ist Im Folgenden werden alle verbleibenden Kanten in vor bzw hinter dem Knoten D gelegen eingeteilt Fur diese Entscheidung wird haufig wie auch hier die Normale der Gerade genommen welche in Richtung vor dem Objekt zeigt Wie bereits zuvor erwahnt zeigen alle Normalen der Kanten in diesem Beispiel in das Innere des Objektes Wie in diesem ersten Schritt zu sehen ist wird die Kante A und die Kante G in jeweils zwei Teile unterteilt da diese sich mit der ins Unendliche verlangerten Kante D schneiden Damit ergibt sich der aktuelle Baum D A1 G2 H I J K L M N O P A2 B C E F G1 Im Folgenden werden nun die Teilbaume wieder unterteilt In dem Beispiel der Teilbaum A sub 1 sub G sub 2 sub H I J K M N O P Es wird die Kante N ausgewahlt und die restlichen Kanten des Teilbaumes wieder entsprechend in Vorder und Ruckseite der Kante N eingeteilt Auch in diesem Schritt mussen wieder Kanten Kante A1 und Kante K unterteilt werden Das Teilstuck A1 der Kante A wird noch einmal in zwei Teile unterteilt Damit ergibt sich der aktuelle Baum D N A2 B C E F G1 A12 G2 H I J K1 A11 K2 L M O P Unter der Verwendung der Kante I wird der linke Teilbaum unterhalb von Knoten N wieder nach oberem Schema unterteilt Dies ergibt den folgenden Baum D N A2 B C E F G1 I A11 K2 L M O P A12 G2 H J K1 Da der linke Teilbaum nur ausschliesslich aus dem Knoten A12 besteht kann der linke Ast nicht weiter unterteilt werden und somit wird der rechte Zweig vom Knoten I abgearbeitet Es wird die Kante J fur die Unterteilung gewahlt und die Kanten in diesem Teilraum entsprechend wieder in linker und rechter Teilbaum eingeordnet Hieraus ergibt sich der folgende Baum D N A2 B C E F G1 I A11 K2 L M O P A12 J K1 G2 H Nachdem nun der linke Teilbaum unter Knoten J vollstandig verarbeitet wurde der linke Teilbaum besteht nur aus einem Knoten hier K1 wird mit dem rechten Teilbaum fortgefahren Es wird Kante H gewahlt und der resultierende Baum sieht folgendermassen aus D N A2 B C E F G1 I A11 K2 L M O P A12 J K1 H G2 Identisch wird fur alle weiteren Teilbaume welche mehr als einen Kind Knoten besitzen vorgegangen Am Ende ware eine mogliche Losung fur den BSP Baum D N E I O F C A12 J P L G1 B K1 H A11 M A2 G2 K2 Es ist zu beachten dass der vorhergehend erstellte BSP Baum nur eine mogliche Losung darstellt Da eine Kante fur die Unterteilung des Baumes gewahlt werden muss beginnend mit der Kante fur die Wurzel hin zu einer Kante fur die Unterteilung der Kinder eines jeden Knotens kann eine Vielzahl von BSP Baumen konstruiert werden welche den Raum korrekt unterteilen Je nach Anwendung kann die Leistungsfahigkeit im Hinblick auf Traversierung der verschiedenen BSP Baume stark schwanken In den meisten Fallen wird versucht die Erzeugung eines entarteten Baumes zu vermeiden Siehe auch BearbeitenQuadtree OctreeLiteratur BearbeitenHenry Fuchs u a On Visible Surface Generation by A Priori Tree Structures In SIGGRAPH 80 Proceedings S 124 133 ACM New York 1980 ISBN 0 89791 021 4 Christer Ericson Real Time Collision Detection The Morgan Kaufmann Series in Interactive 3 D Technology Verlag Morgan Kaufmann S 349 382 Jahr 2005 ISBN 1 55860 732 3Weblinks BearbeitenBSP FAQ englisch Java Applet zu BSPEinzelnachweise Bearbeiten GeeksforGeeks Binary Space Partitioning Abgerufen von https de wikipedia org w index php title Binary Space Partitioning amp oldid 235739066