BSP Binary Space Partitioning

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Computer Graphics Shader
Eine dynamische Menge, die diese Operationen unterstützt,
Der k-d-Baum Richard Göbel.
Polynomial Root Isolation
Geometrische Datenstrukturen Haozhe Chen Aaron Richardson.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Christian Schindelhauer
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Durchlaufen eines Binärbaumes
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Gliederung Motivation / Grundlagen Sortierverfahren
Sortierverfahren Richard Göbel.
4. Sichtbarkeitsverfahren
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS 03/04 Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Algorithmentheorie 03 – Randomisierung (Closest Pair)
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Geometrisches Divide and Conquer
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Theorie und Praxis geometrischer Algorithmen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Punktbeschriftung mit vier Rechtecken gleicher Höhe (Anzahlmaximierung) Julia Löcherbach.
Effiziente Algorithmen
Effiziente Algorithmen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Splay Trees Von Projdakov Benjamin.
2. Die rekursive Datenstruktur Baum 2
Effiziente Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
K-SAT: Ein heuristischer Algorithmen- Vergleich Kann man den Brute Force Search Algorithmus schlagen?
Kapitel 6: Suchbäume und weitere Sortierverfahren
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Komplexität von Algorithmen
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Korrektheit von Programmen – Testen
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Delauny Triangulierung
Konvexe Hüllen (Convex Hulls)
Seminar im Fach Geoinformation IV
 Präsentation transkript:

BSP Binary Space Partitioning Yves Kronenburg

Binary Space Partitioning - BSP Gliederung Motivation Painters Algorithmus BSP Trees BSP Trees 2D BSP Trees 3D

Binary Space Partitioning - BSP Motivation Painters Algorithmus BSP Trees BSP Trees 2D BSP Trees 3D

Binary Space Partitioning - BSP Motivation Motivation – Bilder

Binary Space Partitioning - BSP Motivation Objekte müssen schnell und korrekt aufgebaut werden!

Binary Space Partitioning - BSP Motivation z-Buffer Algorithmus Die Szene wird so transformiert, dass die Blickrichtung die positive z-Achse ist. 2. Das erste Objekt wird in den Frame Buffer geladen. Zusätzlich werden dessen z-Koordinaten in den z-Buffer geschrieben. Das nächste Objekt wird analysiert. Wenn die z-Koordinate des Objekts in einem Pixel kleiner ist, als die z-Koordinate des z-Buffers in diesem Pixel, so wird an dieser Stelle der Frame Buffer und z-Buffer mit den neuen Werten überschrieben. 4. Wiederhole 3. bis alle Objekte durchlaufen.

Binary Space Partitioning - BSP Motivation z-Buffer Algorithmus Nachteile: Zusätzlicher Speicher für den z-Buffer benötigt Für jedes Pixel eines Objektes muss ein Test der z-Koordinate stattfinden.

Binary Space Partitioning - BSP Motivation Painters Algorithmus BSP Trees BSP Trees 2D BSP Trees 3D

Binary Space Partitioning - BSP Painters Algorithmus

Binary Space Partitioning - BSP Painters Algorithmus 1. 2. 3. 4. 5. 6.

Binary Space Partitioning - BSP Painters Algorithmus Objekte werden nach Ihrer Entfernung sortiert, weit entferntestes Objekt steht dabei an erster Stelle Objekte werden komplett gezeichnet, bereits gesetzte Pixel werden einfach überschrieben

Binary Space Partitioning - BSP Painters Algorithmus

Binary Space Partitioning - BSP Painters Algorithmus

Binary Space Partitioning - BSP Painters Algorithmus

Binary Space Partitioning - BSP Painters Algorithmus

Binary Space Partitioning - BSP Painters Algorithmus Objekte, die sich kreisförmig überlappen, lassen sich mit dem PA nicht zeichnen.

Binary Space Partitioning - BSP Painters Algorithmus Dafür müssen Texturen zerschnitten werden

Binary Space Partitioning - BSP Painters Algorithmus Welches Objekt zerschneiden? Wo zerschneiden wir das Objekt? Neusortierung für jeden Blickwinkel! Datenstruktur benötigt, die diese Informationen speichert und uns für jeden beliebigen Blickpunkt schnell ermöglicht, die Szene korrekt aufzubauen.

Binary Space Partitioning - BSP Motivation Painters Algorithmus BSP Trees BSP Trees 2D BSP Trees 3D

Binary Space Partitioning - BSP BSP Trees

Binary Space Partitioning - BSP BSP Trees l2 l1 l1 l3 l2 l4 l5 l4 l5 BSP Baum l3

Binary Space Partitioning - BSP BSP Trees Sei h eine Hyperebene. Dann beschreibt h+ den oberen Halbraum zu h und h- den unteren Halbraum. h+ h-

Binary Space Partitioning - BSP BSP Trees Sei h eine Hyperebene. Dann beschreibt h+ den oberen Halbraum zu h und h- den unteren Halbraum. Sei T der BSP Tree und sei S die Menge der Objekte die gezeichnet werden sollen. Wenn |S| ≤ 1, dann ist T ein Blatt mit der Information über das Objekt in S. Wenn |S| > 1, dann wird in die Wurzel v von T die Information über h gespeichert, sowie die Objekte aus S, die komplett in dieser Ebene liegen. Das linke Kind ist dann die Wurzel des BSP Trees T- mit den Objekten aus S, die in h- liegen, das rechte Kind die Wurzel des BSP Trees T+ mit den Objekten in h+.

Binary Space Partitioning - BSP BSP Trees Wie können wir aus einem BSP Tree mittels PA unsere Szene erstellen?

Binary Space Partitioning - BSP BSP Trees l2 l1 l1 l3 l2 l4 l5 l4 l5 BSP Baum l3

Binary Space Partitioning - BSP BSP Trees l2 l1 l1 l3 l2 l4 l5 l4 l5 BSP Baum l3

Binary Space Partitioning - BSP BSP Trees Algorithmus PaintersAlogrithm(T, pview) Sei v die Wurzel von T 2. If v ein Blatt 3. then Zeichne die Objekte aus v 4. else if pview ε hv+ 5. then PaintersAlogrithm(T -, pview) 6. Zeichne die Objekte aus v 7. PaintersAlogrithm(T +, pview) 8. else if pview ε hv- 9. then PaintersAlogrithm(T +, pview) 10. Zeichne die Objekte aus v 11. PaintersAlogrithm(T -, pview) 12. else (* pview ε hv *) 13. PaintersAlogrithm(T +, pview) 14. PaintersAlogrithm(T -, pview)

Binary Space Partitioning - BSP Motivation Painters Algorithmus BSP Trees BSP Trees 2D BSP Trees 3D

Binary Space Partitioning - BSP BSP Trees 2D Sei S nun eine Menge sich nicht kreuzender Liniensegmente. Unsere Objekte sind alle trianguliert

Binary Space Partitioning - BSP BSP Trees 2D Algorithmus 2dBsp(S) Input. Eine Menge S mit Segmenten {s1,…,sn} Output. Ein BSP Tree für die Menge S 1. If |S| ≤ 1 2. then erzeuge einen Baum T aus lediglich einem Blatt, in dem die Segmente aus S explizit gespeichert sind. 3. return T 4. else (* Benutze l(s1) als Trennlinie *) 5. S+ { s l(s1) + : s ε S} ; T+ 2dBsp(S+) 6. S- { s l(s1) - : s ε S} ; T- 2dBsp(S-) 7. Erzeuge einen BSP Baum T mit Wurzel v, linkem Unterbaum T-, rechtem Unterbaum T+ und mit S(v) = { s ε S : s l(s1)}. 8. return T

Binary Space Partitioning - BSP BSP Trees 2D 5 Fragmente s1 s1 s3 3 Fragmente s2

Binary Space Partitioning - BSP BSP Trees 2D Algorithmus 2dRandomBsp(S) Erzeuge aus der Menge S eine zufällige Permutation S‘ = s1,…, sn 2. T 2dBsp(S‘) 3. return T

Binary Space Partitioning - BSP BSP Trees 2D Abschätzung der Fragmente Sei si das nächste Segment welches vom Algorithmus als neue Trennlinie benutzt wird.

Binary Space Partitioning - BSP BSP Trees 2D 5 Fragmente s1 s1 s3 3 Fragmente s2

Binary Space Partitioning - BSP BSP Trees 2D Abschätzung der Fragmente Sei si das nächste Segment welches vom Algorithmus als neue Trennlinie benutzt wird. Es gibt Segmente, die andere Segmente vor dem Zerschneiden „schützen“ können. Wir definieren eine Distanzfunktion wie folgt: Anzahl der schützenden Segmente zwischen si und sj Falls l(si) sj schneiden kann sonst

Binary Space Partitioning - BSP BSP Trees 2D dist = 2 dist = 0 si dist = 1 dist = 0 dist = dist = 1

Binary Space Partitioning - BSP BSP Trees 2D Abschätzung der Fragmente Die Wahrscheinlichkeit, dass ein Segment si ein Segment sj schneidet, hängt also von seinem Distanzwert ab. p ( l(si) schneidet sj ) Hieraus ergibt sich ein Erwartungswert von: E ( Anzahl der Schnitte durch si )

Binary Space Partitioning - BSP BSP Trees 2D Abschätzung der Fragmente Für alle Segmente n folgt (bei linearer Betrachtung), dass 2 n ln n Schnitte erzeugt wurden. Daraus ergibt sich, dass die erwartete Anzahl an Fragmenten n + 2 n ln n ist.

Binary Space Partitioning - BSP BSP Trees 2D Laufzeitanalyse Die Laufzeit hängt direkt von der Anzahl der Fragmente ab.

Binary Space Partitioning - BSP BSP Trees 2D Laufzeitanalyse Zeile 1-4 maximal n mal, da durch S begrenzt. Algorithmus 2dBsp(S) Zeile 5 oder 6 wird für jedes Fragment einmal Aufgerufen Input. Eine Menge S mit Segmenten {s1,…,sn} Output. Ein BSP Tree für die Menge S 1. If |S| ≤ 1 2. then erzeuge einen Baum T aus lediglich einem Blatt, in dem die Segmente aus S explizit gespeichert sind. 3. return T 4. else (* Benutze l(s1) als Trennlinie *) 5. S+ { s l(s1) + : s ε S} ; T+ 2dBsp(S+) 6. S- { s l(s1) - : s ε S} ; T- 2dBsp(S-) 7. Erzeuge einen BSP Baum T mit Wurzel v, linkem Unterbaum T-, rechtem Unterbaum T+ und mit S(v) = { s ε S : s l(s1)}. 8. return T

Binary Space Partitioning - BSP BSP Trees 2D Laufzeitanalyse 2dBsp(S) läuft in O(n² log n)

Binary Space Partitioning - BSP Motivation Painters Algorithmus BSP Trees BSP Trees 2D BSP Trees 3D

Binary Space Partitioning - BSP BSP Trees 3D

Binary Space Partitioning - BSP BSP Trees 3D Algorithmus 3dBsp(S) Input. Eine Menge S ={t1,…,tn} mit Dreicken aus Output. Ein BSP Tree für die Menge S 1. If |S| ≤ 1 2. then erzeuge einen Baum T aus lediglich einem Blatt, in dem S explizit gespeichert ist. 3. return T 4. else (* Benutze h(t1) als Trennebene *) 5. S+ { t h(t1) + : t ε S} ; T+ 3dBsp(S+) 6. S- { t h(t1) - : t ε S} ; T- 3dBsp(S-) 7. Erzeuge einen BSP Baum T mit Wurzel v, linkem Unterbaum T-, rechtem Unterbaum T+ und mit S(v) = { t ε S : t h(t1)}. 8. return T

Quellenverzeichnis Bild: Microsoft Flight Simulators X Bild: Sims 3 „Computational Geometry – Algorithms and Applications“ von Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars Springer Verlag, Berlin, 3. Auflage (Mai 2008), Kapitel 12 (S.251-260) Bild: Microsoft Flight Simulators X http://www.gursch.eu/resources/msfsx_textbild_1136468426.jpg Bild: Sims 3 http://z.about.com/d/compsimgames/1/7/9/7/2/sims3pcscrnvday01.jpg Bild: Quake 2 http://www.bluesnews.com/screenshots/q2/quake2-15.jpg