Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "BSP Binary Space Partitioning Yves Kronenburg. Binary Space Partitioning - BSP Motivation Painters Algorithmus BSP Trees BSP Trees 2D BSP Trees 3D Gliederung."—  Präsentation transkript:

1 BSP Binary Space Partitioning Yves Kronenburg

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

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

4 Binary Space Partitioning - BSP Motivation

5 Objekte müssen schnell und korrekt aufgebaut werden!

6 Binary Space Partitioning - BSP Motivation z-Buffer Algorithmus 1.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. 3.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.

7 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.

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

9 Binary Space Partitioning - BSP Painters Algorithmus

10

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

12 Binary Space Partitioning - BSP Painters Algorithmus

13

14

15

16 Objekte, die sich kreisförmig überlappen, lassen sich mit dem PA nicht zeichnen.

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

18 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.

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

20 Binary Space Partitioning - BSP BSP Trees

21 l1 l5 l2l3 l4l5 BSP Baum l3 l2 l4

22 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+ h-h-

23 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 +.

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

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

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

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

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

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

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

31 Binary Space Partitioning - BSP BSP Trees 2D s3s3 s2s2 s1s1 5 Fragmente 3 Fragmente s1s1 s2s2 s3s3

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

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

34 Binary Space Partitioning - BSP BSP Trees 2D s3s3 s2s2 s1s1 5 Fragmente 3 Fragmente s1s1 s2s2 s3s3

35 Wir definieren eine Distanzfunktion wie folgt: Anzahl der schützenden Segmente zwischen s i und s j Binary Space Partitioning - BSP BSP Trees 2D Abschätzung der Fragmente Sei s i 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. Falls l(si) sj schneiden kann sonst

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

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

38 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.

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

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

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

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

43 Binary Space Partitioning - BSP BSP Trees 3D

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

45 Quellenverzeichnis 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 ) Bild: Microsoft Flight Simulators X Bild: Sims 3 Bild: Quake 2


Herunterladen ppt "BSP Binary Space Partitioning Yves Kronenburg. Binary Space Partitioning - BSP Motivation Painters Algorithmus BSP Trees BSP Trees 2D BSP Trees 3D Gliederung."

Ähnliche Präsentationen


Google-Anzeigen