Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling...

65
Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

Transcript of Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling...

Page 1: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

Computergraphik Grundlagen

VII. Clipping und Culling

Prof. Stefan Schlechtweg Hochschule Anhalt

Fachbereich Informatik

Page 2: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

Inhalt – Lernziele

1.  Definition und Anwendung von Clipping 2.  Sichtbarleitsbestimmung

1.  Warum Sichtbarkeitsbestimmung? 2.  Probleme und Anforderungen 3.  Allgemeine Vorgehensweise

3.  Culling-Verfahren 1.  Entfernen verdeckter Rückseiten 2.  Clipping am Sichtkörper 3.  Portal Rendering 4.  Zusammenfassung

4.  Clipping-Algorithmen 1.  Clipping von Liniensegmenten an

Rechtecken 2.  Clipping von Polygonen 3.  Clippen in 3D 4.  Zusammenfassung

5.  Hidden Surface Removal 1.  Depth Sort 2.  Z-Buffer-Algorithmus

6.  Sichtbarleitsbestimmung in OpenGL 7.  Zusammenfassung

  Clipping und Culling im Prozeß der Bilderzeugung einordnen und Begriffe verstehen

  Effiziente Clipping- und Culling-Algorithmen in 2D und 3D kennenlernen

  Anwendung von Clipping-Algorithmen bei der Sichtbarkeitsbestimmung und beim Entfernen verdeckter Flächen verstehen

2

Page 3: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3

lokal → Welt

Lokale Koordinaten

Modellierung der Geometrie

einzelner Objekte

Weltkoordinaten

Plazierung der Objekte

Plazierung der Lichtquellen

Plazierung der Kamera

Beleuchtungs- berechnung

Kamerakoordinaten

Entfernen verdeckter Rückseiten

Normalisierte Projektionskoordinaten

Clipping gegen Sichtkörper

(Normalisierte) Bildschirm- koordinaten

Rasterkoordinaten

Entfernen verdeckter Modellteile

Shading

Entfernen verdeckter Modellteile Tr

ansf

orm

atio

n in

Kam

erak

oord

inat

en

Viewing-Transformation

Proj

ektio

n

Rastertransformation

Rasterung

Page 4: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

1.  Definition und Anwendung von Clipping

  Definition: –  Clippen — „Abschneiden“ einer geometrischen Beschreibung an einem

Clipkörper.   Anwendungen:

–  Fenstersysteme: Abschneiden der dargestellten Geometrie an den Fenstergrenzen (Bestandteil des Graphiksystems von Fenstersystemen)

–  Abschneiden von 3D-Geometrien am Sichtkörper (Pyramidenstumpf bzw. Quader)

–  Abschneiden eines verdeckten Polygons an einem davor liegenden Polygon (HSR)

–  Exploration von Daten mit einer Clipebene

4

Page 5: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

1.  Definition und Anwendung von Clipping

  Anwendungen von Clipping: –  Clippen am Sichtkörper (links) –  Clippen bei der Bestimmung verdeckter Kanten (Mitte) –  Clippen am Viewport (rechts)

5

Quelle: Angel (2000)

Page 6: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

1.  Definition und Anwendung von Clipping

Was heißt also Clippen? 1.  Entscheiden, welche Graphikprimitive komplett gezeichnet werden. 2.  Entscheiden, welche Teile von Graphikprimitiven gezeichnet werden

→ Schnittpunktberechnungen zwischen Graphikprimitiven und Clipgeometrie → Geschlossene Polygone bzw. Polyeder sind nach dem Abschneiden nicht mehr geschlossen. Berechnung von verbindenden Kanten/Flächen.

3.  Beim Rendering muß das Clippen für jedes Polygon in 3D und für die sichtbaren Polygone nach Projektion in 2D durchgeführt werden. → Zahl der Schnittpunktberechnungen minimieren.

6

Page 7: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

1.  Definition und Anwendung von Clipping

  Was heißt „Culling“? – Abschneiden (Verwerfen) ganzer Objekte

aufgrund von Sichtbarkeitseigenschaften – Kein „Clippen“, d.h. kein Zerteilen von

Polygonen – Verschiedene Arten:

•  Backface culling •  Occlusion culling •  View volume culling

7

Page 8: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

2.  Sichtbarkeitsbestimmung 2.1. Warum Sichtbarkeitsbestimmung?

  Szenen bestehen üblicherweise aus vielen Polygonen.   nur ein Teil davon ist wirklich auf dem Bild zu sehen   aber – Berechnungen müßten mit allen Polygonen ausgeführt

werden: –  Transformationen –  Beleuchtungsberechnungen –  Rasterung

  erste Idee: alle die Polygone entfernen, die sowieso nicht zu sehen sind, weil: –  sie vom Betrachter wegzeigen (Rückseiten) –  außerhalb des Kamerasichtkörpers liegen

8

Page 9: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

2.  Sichtbarkeitsbestimmung 2.2. Probleme bzw. Anforderungen

  Effizienz – es ist zu zeitaufwendig, Teile der Szene zu rendern, die nicht sichtbar sind

  Genauigkeit – Ergebnis muß akkurat sein auch bei bewegten Betrachterstandpunkten

  unter Umständen große komplexe Modelle   nur wenig ist üblicherweise sichtbar – auch bei

komplexen Modellen   Komplexität – Berechnungen in 3D können unter

Umständen viele kleine Polygone erzeugen

9

Page 10: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

2.  Sichtbarkeitsbestimmung 2.3. Allgemeine Vorgehensweise

1.  Entferne die Teile der Szene, bei denen man durch einfache Tests feststellen kann, ob sie sichtbar sind oder nicht – vorzugsweise komplette Objekte bzw. Polygone •  Back Face Culling •  View Volume Culling •  Occlusion Culling •  Portal Rendering

2.  Bestimme und entferne Teilpolygone, die aufgrund von Verdeckungen unsichtbar sind

10

Page 11: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.1. Entfernen verdeckter Rückseiten

  Polygone entfernen, die vom Betrachter wegzeigen (engl.: backface culling)

  Grundlage: Normalen der Polygone –  Definition: immer nach außen zeigend –  Berechnung:

•  gegeben im Modell •  Bestimmen aus zwei Kanten (Kreuzprodukt)

11

Page 12: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.1. Entfernen verdeckter Rückseiten

  Backface Culling (Eliminieren von Polygonen mit einer vom Betrachter abgewandten Normale)

  Erster Schritt beim Entfernen verdeckter Polygone   Vorgehen:

–  Bilde Skalarprodukt aus Np⋅V –  Polygon ist prinzipiell sichtbar, wenn Np⋅V>0 (und damit der

Cosinus zwischen beiden Vektoren < 90° Vorzeichentest ist schneller als Winkelberechnung)

–  wichtig: Vektoren vorher normalisieren

  Einfacher Test, weil Betrachterstandpunkt im Ursprung des Kamerakoordinatensystems

  Backface culling entfernt ca. 50% aller Polygone.

12

Page 13: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.1. Entfernen verdeckter Rückseiten

  Einfacher Test auf Sichtbarkeit eines Polygons mit Hilfe von: –  Polygonnormale Np (nach außen zeigend) –  Vektor V(iew) vom Polygon zum Betrachterstandpunkt

  Ist der Winkel (Np,V) > 90°, dann zeigt die Normale (und damit die Außenseite des Polygons) vom Betrachter weg → Polygon ist nicht sichtbar.

13

Np

V

Quelle: Angel (2000)

Page 14: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.1. Entfernen verdeckter Rückseiten 3.1.1. Normalenberechnung

  Normalen sind wichtig für die Sichtbarkeitsbestimmung und die Beleuchtungsberechnung.

  Die Normale n ist ein Vektor, der senkrecht zu einer Ebene steht und (per definitionem) bei einem Körper nach außen zeigt.

  Idee: Kreuzprodukt zweier Polygonkanten   Wdh. Kreuzprodukt: Vektor, der senkrecht auf dem durch die beiden

gegebenen Vektoren aufgespannten Parallelogramm steht und dessen Länge der Maßzahl der Fläche dieses Parallelogramms entspricht.

  also: –  nehmen zwei Kanten des Polygons, –  berechnen Kreuzprodukt, –  normieren den Ergebnisvektor

  Frage: Ist das die korrekte Normale nach obiger Definition?

14

Page 15: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.1. Entfernen verdeckter Rückseiten 3.1.1. Normalenberechnung

  Normale wird unter Nutzung des Kreuzproduktes folgendermaßen berechnet:

n = (p2-p0) × (p1-p0)   Reihenfolge der Punkte ist wichtig, weil a × b = -b × a.   Typische Konvention in der CG: Eckpunkte im Uhrzeigersinn

angeordnet.   Bei Polygonen mit > 3 Eckpunkten: nutze die ersten 3 Eckpunkte für

die Normalenberechnung.

15

Page 16: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.2. Clipping am Sichtkörper

  begrenztes Sichtfeld von Betrachter (Kamera) enthält typischerweise nur wenige Objekte (im Vergleich zur Gesamtzahl an in der Szene enthaltener Objekte)

  Idee: Entfernen aller Objekte außerhalb des Sichtkörpers verringert Berechnungsaufwand

  Sichtkörper –  perspektivische Projektion: Pyramidenstumpf in allgemeiner Lage –  Parallelprojektion: Quader in allgemeiner Lage

16

Page 17: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.2. Clipping am Sichtkörper

  unterschiedliche Größe und Lage des Sichtkörpers ergeben Probleme –  Clippen an schrägen Ebenen des Pyramidenstumpfes –  Position der Ebenen für jede „Kamera“ unterschiedlich –  also: analytisch Clippen – aufwendig

  Lösung: Transformation des Sichtkörpers in einen einheitlichen, kanonischen Sichtkörper

17

•  Begrenzung horizontal und vertikal zwischen -1 und 1 •  Begrenzung in der Tiefe zwischen 0 und (-)1 •  Transformationen durch Skalieren des ursprünglichen Sichtkörpers •  Transformation Bestandteil der Viewing-Transformation

Page 18: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.2. Clipping am Sichtkörper

  Kanonischer Sichtkörper –  entsteht während der Transformation der Szene –  bei Parallelprojektion lediglich Skalierungen

notwendig –  bei perspektivischer Projektion ist eine nicht-lineare

Verzerrung erforderlich, die auch die perspektivische Verkürzung bewirkt

–  Standard-Lage und –Größe vereinfacht nachfolgende Operationen

–  Bereich von -1 bis +1 in x und y wird dann auf Fensterkoordinaten (Pixel) abgebildet.

18

Page 19: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

CG2 Hidden Surface Removal 19

3.  Culling-Verfahren 3.3. Portal-Rendering

  Ziel: sehr schnelle Elimination großer Szenenbereiche, die nicht sichtbar sind

  Aber: keine exakte Sichtbarkeitsbestimmung, eher eine schnelle „quick and dirty“-Entscheidung, ob Teile des Szene sichtbar sein können

  Möglicherweise sichtbare Szenenteile werden potentially visible set genannt (PVS)

  Ziel also: Bestimmen des PVS und danach dann exakte Sichtbarkeitsbestimmung

  Portal-Rendering ist ein Beispiel für eine solche Technik der Bestimmung des PVS

Page 20: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

CG2 Hidden Surface Removal 20

3.  Culling-Verfahren 3.3. Portal-Rendering

  Anwendung: Architekturmodelle (walk-throughs), Spiele (z.B. Quake)   Grundidee:

–  Architekturmodelle typischerweise hohe Tiefenkomplexität und häufige Verdeckungen –  Anteil der sichtbaren Objekte typischerweise sehr klein –  Unterteilung der Szene in Zellen und Portale

  Zelle: Polyhedron im Raum   Portal: transparente 2D-Region an einer Zellgrenze, die aneinandergrenzende Zellen

verbindet   Zellen können andere Zelle nur durch die Portale „sehen“   Architekturmodelle:

–  Zellen sind die Räume, deren Grenzen entlang der Wände verlaufen –  Portale korrespondieren mit Fenstern und Türen, aber auch Spiegel

  Zerlegung des Raumes in Zellen   Vor dem Rendern: Feststellen, welche Zellen für den Betrachter sichtbar sind

Page 21: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

CG2 Hidden Surface Removal 21

3.  Culling-Verfahren 3.3. Portal-Rendering

Quelle: David Luebke, Chris Georges, University of North Carolina at Chapel Hill

Page 22: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

CG2 Hidden Surface Removal 22

3.  Culling-Verfahren 3.3. Portal-Rendering

  Idee des Verfahrens –  Vorbereitung.

•  In das PVS werden nur Zellen aufgenommen (konventionelle Verfahrensweise)

•  erzeuge einen Nachbarschaftsgraphen, der benachbarte Zellen verbindet –  Während des Renderings:

•  starte mit der Zelle, in der der Beobachter steht •  traversiere den Nachbarschaftsgraphen (einen Teil davon) •  rendere die sichtbaren Zellen

  Wichtig: Eine Zelle ist nur sichtbar, wenn man sie durch eine Folge von Portalen sehen kann

  Sichtbarkeitstests reduzieren sich daher auf das Testen von Sichtlinien durch (eine Folge von) Portale(n)

Page 23: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

3.  Culling-Verfahren 3.4. Zusammenfassung

  Culling-Verfahren eignen sich nicht für alle Szenen gleich

  Culling muß schnell sein – große Szenen (mit vielen Objekten) profitieren am meisten

  Hardwareunterstützung in modernen Grafikkarten vorhanden

  Culling lohnt sich aber nicht immer

23

Page 24: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen

  zweiter „Schritt“ bei der Sichtbarkeitsbestimmung: Entfernen der Teilpolygone, die von anderen verdeckt werden

  vorteilhaft, wenn dies nicht so viele sind, deshalb vorher Culling   Clipping oft aufwändig, da viele einzelne Polygone zu testen sind   verschiedene Verfahren arbeiten entweder in 3D mit

Objektkoordinaten oder in 2D mit Pixelkoordinaten   zunächst: grundlegende Algorithmen   danach: oft verwendete Clipping-Verfahren

24

Page 25: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken

  Lagebeziehungen zwischen Linie (p1, p2) und Rechteck: 1.  p1 und p2 innerhalb (AB)

Linie komplett innerhalb (accept) 2.  p1 und p2 außerhalb und

jenseits der gleichen Kante (CD) Linie komplett außerhalb (reject)

  Bei 1. und 2. nutzt man Konvexität einer Linie 4.  p1 und p2 außerhalb aber in Bezug auf verschiedene

Kanten → testen, ob es zwei Schnittpunkte gibt (GH)

5.  p1 innerhalb p2 außerhalb (EF) Berechne Schnittpunkt zwischen p1; p2 und dem Rechteck

6.  p1 außerhalb und p2 innerhalb Vertauschen von p1 und p2 und dann vorgehen wie Fall 5

25

Quelle: Angel (2000)

Page 26: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken

  Test, ob Punkt p im achsenparallelen Rechteck (xmin, xmax, ymin, ymax):

if (p(x)>=xmin && p(x)<=xmax && p(y)>=ymin && p(y)<=ymax)

inside = true;

  Schnittpunktberechnungen: 1.  Identifizieren der geschnittenen Rechteckkante

Tests separat durchführen, ggf. kommen zwei Kanten in Frage (siehe EF)

2.  Schnittpunktberechnung mit dieser (diesen) Kante(n)

26

Quelle: Angel (2000)

Page 27: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken 4.1.1. Cohen-Sutherland-Algorithmus

  Entscheidung, ob und an welcher Kante geclippt werden muß, ist essentiell und muß schnell geschehen, da oft aufgerufen

  Variante über if-Abfragen zu aufwendig

  Suche nach effizienteren Lösungen   Cohen-Sutherland-Algorithmus

27

if (p(x)>=xmin && p(x)<=xmax && p(y)>=ymin && p(y)<=ymax)

inside = true;

Page 28: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken 4.1.1. Cohen-Sutherland-Algorithmus

  Bestimme für jeden Eckpunkt (x, y) ein Bitfeld, das angibt, ob Eckpunkt jenseits des entsprechenden Wertes ist.

1. Bit: y > ymax,

2. Bit: y < ymin,

3. Bit: x > xmax,

4. Bit: x < xmin

28

0000 0001 0010

1000

0100 0110

1010 1001

0101

Page 29: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken 4.1.1. Cohen-Sutherland-Algorithmus

  Zuweisen der Bitcodes zu den Linienenden –  AB: 1001 bis 0110 –  CD: 1001 bis 1010 –  EF: 0000 bis 0000 –  GH: 0100 bis 0010

29

0000 0001 0010

1000

0100 0110

1010 1001

0101

A

B

D C

E

F

G

H

Page 30: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken 4.1.1. Cohen-Sutherland-Algorithmus

  outcode (p1) und outcode (p2) seien die Bitfelder der Eckpunkte   Trivialer Fall: Wenn beide Outcodes 0000 sind, dann liegt die Linie komplett

im Clip-Rechteck, also wenn outcode(p1) | outcode(p2) == 000

  Trivialer Fall: wenn die UND-Verknüpfung beider Outcodes ungleich 0000 ist, dann verwirf die Linie, sie liegt garantiert außerhalb, nämlich vollständig auf einer Seite des Fensters

  wenn die ODER-Verknüpfung beider Outcodes ungleich 0000 ist, dann könnte die Linie innerhalb sein, also müssen Schnittpunkte berechnet werden

if (outcode (p1) | outcode (p2) == 0000) accept; if (outcode (p1) & outcode (p2) != 0000) reject; if (outcode (p1) | outcode (p2) != 0000) intersect (p1, p2, x_min, x_max, y_min, y_max)

30

Page 31: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

31

0000 0001 0010

1000

0100 0110

1010 1001

0101

A

B

D C

E

F

G

H

Linie CD C: 1001 D: 1010 |: 1011 &: 1000 also: verwerfen

Linie AB A: 1001 B: 0110 |: 1111 &: 0000 also: testen

Linie EF E: 0000 F: 0000 |: 0000 &: 0000 also: akzeptieren

Linie GH G: 0100 H: 0010 |: 0110 &: 0000 also: testen

Page 32: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken 4.1.2. Schnittberechnung

  Parametrische Liniendarstellung: p(t) = (1-t) p1 + t p2 für t≥0 und t≤1

  Wenn es einen Schnittpunkt zwischen (p1; p2) und einer Rechteckkante (r1; r2) gibt, dann gibt es Parameter s und t, mit s ∈(0,1) und t ∈(0,1) so daß

r(s) = (1-s) r1 + s r2 = p(t).

  Lösung: Gleichungen für x und y-Komponente der Punkte aufstellen und gleichsetzen (2 Gleichungen; 2 Unbekannte)

32

Page 33: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken 4.1.2. Schnittberechnung

  Beispiel: Schnittpunktberechnung mit der unteren Rechteckkante (xmin;ymin) (xmax; ymin) Schnittpunktberechnung an horizontalen und vertikalen Kanten vereinfacht sich.

(1-t) x1 + t x2 = (1-s)xmin + s xmax

(1-t) y1 + t y2 = (1-s)ymin + s ymin

(1-t) y1 + t y2 = ymin

-t y1 + t y2= ymin - y1

33

Page 34: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.1. Clippen von Liniensegmenten an Rechtecken 4.1.3. Zusammenfassung

Clipprozedur für eine Linie (x1;y1) (x2; y2) an einem Rechteck erzeugt neue Linie (x3;y3) (x4; y4), wobei (x3;y3) und (x1;y1) sowie (x2; y2) und (x4; y4) gleich sein könnten.

34

Quelle: Angel (2000)

Page 35: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.2. Clippen von Polygonen 4.2.1. Clippen von Polygonen an Rechtecken

  Grundsätzlich kann das Clippen von Polygonen (p1;p2; …; pn) an Rechtecken durch sukzessives Clippen der Linien (pi;pi+1) durchgeführt werden.

  Problem: Konkave Polygone → Durch Clippen kann ein konkaves Polygon in mehrere Polygone zerfallen.

  Lösungsmöglichkeiten: Unterteilung des Polygons in konvexe Polygone (z.B. Triangulierung) oder Einführen von zusätzlichen Kanten.

35

Quelle: Angel (2000)

Page 36: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.2. Clippen von Polygonen 4.2.1. Clippen von Polygonen an Rechtecken

Clippen von konkaven Polygonen

36

Einfügen von zusätzlichen Kanten, um geschlossenes Polygon zu repräsentieren

Triangulierung eines konkaven Polygons. Zusammenhang zwischen Dreiecken und Polygon muss repräsentiert werden.

Quelle: Angel (2000)

Page 37: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.2. Clippen von Polygonen 4.2.1. Clippen von Polygonen an Rechtecken

Clippen in einer Pipeline-Architektur: sukzessive an den 4 Rändern clippen.

37

Quelle: Angel (2000)

Page 38: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.2. Clippen von Polygonen 4.2.2. Clippen von Polygonen an Polygonen

  oftmals benötigt –  Entfernen verdeckter Flächen –  2D-Zeichenprogramme

  Problem hier: Es können alle möglichen Polygone auftreten –  konvex/konkav –  mit/ohne Löcher

  Triangulierung bzw. Zerlegung der Polygone in einfachere keine Lösung, da der Zusammenhang der Ursprungspolygone verloren geht

  Algorithmus von Weiler-Atherton

38

Page 39: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.2. Clippen von Polygonen 4.2.3. Algorithmus von Weiler-Atherton

  Algorithmus kann konkave Polygone mit Löchern gegen konkave Polygone mit Löchern clippen

  Bezeichnungen: –  zu clippendes Polygon: subject polygon SP –  Polygon, an dem geclipt werden soll: clip polygon CP

  Kanten des resultierenden Polygons sind identisch mit (Teil-)Kanten des CP, d. h. es werden keine neuen Kanten erzeugt.

  minimale Anzahl resultierender Polygone

39

Page 40: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.2. Clippen von Polygonen 4.2.3. Algorithmus von Weiler-Atherton

  SP und CP werden als zirkuläre Liste von Eckpunkten beschrieben   dabei:

–  Beschreibung äußerer Kanten im Uhrzeigersinn –  Beschreibung innerer Kanten (Löcher) entgegen dem Uhrzeigersinn

  Das Innere des Polygons ist beim Verfolgen der Kanten immer rechts von der Kante.

  Schnittpunkte zwischen SP und CP treten immer paarweise auf (eine SP-Kante betritt das CP und eine verläßt es)

40

Page 41: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.2. Clippen von Polygonen 4.2.3. Algorithmus von Weiler-Atherton

  Idee des Algorithmus: –  starte an einem Schnittpunkt, bei dem deine SP-Kante in das CP

eintritt –  folge der Außenkante des SP im Uhrzeigersinn bis zum

nächsten Schnittpunkt –  drehe am Schnittpunkt nach rechts und folge der Außenkante

des CP im Uhrzeigersinn bis zum nächsten Schnittpunkt –  drehe wieder nach rechts und folge dem SP –  so weiter bis Startpunkt wieder erreicht wurde

  gleiche Vorgehensweise bei inneren Kanten, dann entgegen dem Uhrzeigersinn

41

Page 42: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

42

1

2

3

4 5

6

7

8

SP

CP

Page 43: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

43

3

1

2

4

SP

CP

Page 44: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.3. Clippen in 3D

  Wesentlicher Unterschied zwischen 2D und 3D: 2D: Schnittpunktberechnungen zwischen zwei Linien

(Clipgeometrie durch Begrenzungslinien charakterisiert) 3D: Schnittpunkte liegen i. a. nicht auf den Kanten der Clip-

geometrie. Schnittpunktberechnungen zwischen Linien und Flächen.

Linie: p1 p2

Ebene: p0 und n (Normale, senkrecht)

(I) p(t) = (1-t) p1 + t p2

(II) n (p(t) –p0) =0

44

Page 45: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.3. Clippen in 3D

  Erweiterung des Cohen-Sutherland-Algorithmus durch Ergänzen der Bitfelder pro Eckpunkt (2 zusätzliche Bits repräsentieren Vergleich mit zmin und zmax)

  Für Schnittpunktberechnung in parametrischer Form wird eine 3. Gleichung ergänzt, die sich auf die z-Koordinaten bezieht.

45

Quelle: Angel (2000)

Page 46: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.3. Clippen in 3D

  Clippen von Linien gegen achsenparallele Quader (Sichtbereich bei der Parallelprojektion). Vereinfachung wie im 2D-Fall.

  Clippen von Linien gegen Pyramidenstumpf (perspekt. Projektion): Scherung des Sichtkörpers → achsenparalleler Quader entsteht.

  Bei einer Pipeline-Architektur wird sukzessive gegen die 6 Begrenzungsflächen eines Quaders getestet.

46

Page 47: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

4.  Clipping-Algorithmen 4.4. Zusammenfassung

  Clippen ist eine wichtige Aufgabe im Renderingprozess. –  Clippen der Geometrie in 3D am Sichtkörper. –  Clippen der transformierten und projizierten Polygone an den

Viewportgrenzen   Clippen von komplexeren Geometrien wird auf Clippen von

Polygonen und schließlich von Linien zurückgeführt.   Clippen ist aufwändig, weil Schnittpunktberechnungen (Linie-Linie

bzw. Linie-Fläche) nötig sind.   Effiziente Verfahren reduzieren die Zahl der notwendigen

Schnittpunktberechnungen, z.B. durch Bounding Box-Tests.

47

Page 48: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal

  Anwendung von Clipping-Algorithmen in der Rendering-Pipeline   Bestimmen der Teile des Modells, die nicht von anderen Teilen des

Modells verdeckt werden (oder der Teile, die verdeckt werden)   Hidden Line bzw. Hidden Surface Removal   Visible Line bzw. Visible Surface Detection

48

Page 49: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal

  Viele Verfahren zur Lösung der Aufgabe: –  Unterschiedliche Herangehensweise

•  mit Objektgenauigkeit (d.h. analytische Verfahren in 3D) •  mit Pixelgenauigkeit (d.h. Verfahren in „2D“)

–  Unterschiedliche Komplexität –  Unterschiedliche Algorithmenklassen –  Keine detaillierte Behandlung hier, nur depth-sort und z-Buffer-

Algorithmus (später)

49

Page 50: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal

  Aus dem Kamarakoordinatensystem werden die Koordinaten in der (2D-)Bildebene berechnet

  Projektionstransformation   Änderung zu den bisher behandelten Transformationen:

z-Werte bleiben erhalten, so dass jeder Objektpunkt einen Tiefenwert besitzt.

  Tiefenwerte werden für das Entfernen verdeckter Teile des Modelles beim z-Buffer-Algorithmus benötigt.

50

Page 51: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal

Mögliche Konstellationen zwischen den Polygonen A und B:   B vor A und Projektion B und A überlappt (B verdeckt A teilweise)   A vor B und Projektion A und B überlappt (A verdeckt B teilweise)   Projektion von A und B überlappt nicht (beide komplett sichtbar)   Ein Polygon vor dem anderen und Projektion des vorderen umschließt

Projektion des hinteren (hinteres Polygon komplett verdeckt)   Projektion des vorderen Polygons komplett in der Projektion des hinteren

enthalten (vorderes Polygon wird „über“ das hintere gezeichnet.)

51

Quelle: Angel (2000)

Page 52: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.1. Depth-Sort (Objektbasierter Algorithmus)

  Sortiere die Polygone nach Entfernung zum Betrachterstandpunkt und zeichne dann von hinten nach vorn

  Problem: Bei Polygonen, bei denen sich die Abstände zum Betrachterstandpunkt und die Projektion überlappen, ist die Zeichenreihenfolge unklar.

  Lösung: Teile solche Polygone solange, bis Polygonteile entstehen, die sich eindeutig sortieren lassen.

52

Page 53: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.1. Depth-Sort (Objektbasierter Algorithmus)

  Schrittweises Vorgehen: 1.  Sortiere Polygone von vorne nach hinten

(kleinste zur größten z-Koordinate) 2.  Mehrdeutigkeiten auflösen durch

umsortieren und Aufteilen von Polygonen 3.  Alle Polygone der (eventuell umsortierten)

Liste von hinten nach vorne (Aufsteigende Reihenfolge der kleinsten z-Koordinate) zeichnen

53

Page 54: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.1. Depth-Sort (Objektbasierter Algorithmus)

  Mehrdeutigkeiten auflösen (Schritt 2) –  P sei das am weitesten entfernte Polygon –  Testen gegen andere Polygone Q, deren z-Ausdehnung die von

P überlappt um zu testen, daß Q nicht durch P verdeckt werden kann und deshalb P als erstes gezeichnet werden kann

–  Maximal 5 Tests (in angegebener Reihenfolge) notwendig 1.  Überlappen sich die x-Ausdehnungen der Polygone nicht? 2.  Überlappen sich die y-Ausdehnungen der Polygone nicht? 3.  Liegt P komplett auf der entgegengesetzten Seite der Ebene in

der Q liegt vom Betrachterstandpunkt aus gesehen? 4.  Liegt Q komplett auf der gleichen Seite der Ebene in der P liegt

vom Betrachterstandpunkt aus gesehen? 5.  Überlappen sich die Projektionen beider Polygone auf die (x,y)-

Ebene nicht?

54

Page 55: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.1. Depth-Sort (Objektbasierter Algorithmus)

–  Wenn alle 5 Tests fehlschlagen → Annahme, daß Q von P verdeckt wird

–  Daher: Test, ob Q als erstes (am weitesten entferntes) Polygon gezeichnet werden kann → Tests 3 und 4 nochmals durchführen mit vertauschten Polygonen

1.  Liegt Q komplett auf der entgegengesetzten Seite der Ebene in der P liegt vom Betrachterstandpunkt aus gesehen?

2.  Liegt P komplett auf der gleichen Seite der Ebene in der Q liegt vom Betrachterstandpunkt aus gesehen?

55

Page 56: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.1. Depth-Sort (Objektbasierter Algorithmus)

  Probleme bei der Sichtbarkeitsbestimmung: –  Zyklisch überlappende Polygone –  Ein Polygon „zersticht“ ein anderes (engl. Piercing).

  Lösung: Teilen in solche Polygone, die sich eindeutig in Tiefenrichtung sortieren lassen (schwierig)

56

Quelle: Angel (2000)

Page 57: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.2. Z-Buffer-Algorithmus

  Effizienter Algorithmus zum Erkennen der sichtbaren Teile einer Szene, der in Bildschirmkoordinaten arbeitet (besser: im Bildraum)

  ist in Hardware implementiert (NVidia, ATI, …).   Voraussetzung: Alle Polygone liegen transformiert vor, wobei die

Bildschirmkoordinaten eine transformierte z-Koordinate besitzen, die die Tiefe angibt.

  Technische Voraussetzung: zwei „Bitmaps“ –  Framebuffer enthält das eigentliche Bild –  Z-Buffer enthält Tiefenwerte

57

Page 58: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.2. Z-Buffer-Algorithmus

  Algorithmus 1.  Fülle den Framebuffer mit der Hintergrundfarbe 2.  Fülle den z-Buffer mit der maximal möglichen Tiefe 3.  Zeichne alle Polygone nacheinander:

a)  Bestimme für jeden Punkt des Polygons die Position im Bild, die Farbe und den Tiefenwert

b)  Vergleiche den Tiefenwert an der Position mit dem, der dort im z-Buffer gespeichert ist

c)  Wenn der Tiefenwert des Polygonpunktes kleiner ist (weiter vorne), dann zeichne die Farbe in den Framebuffer und setze den Tiefenwert im z-Buffer auf den neuen Tiefenwert, sonst wird nichts verändert

  Was heißt “jeder Punkt des Polygons”? –  Polygon wird abgetastet; –  Berechnung wird für diskrete Punkte des Polygons durchgeführt.

58

Page 59: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.2. Z-Buffer-Algorithmus

59

initialisiere z-Buffer foreach Polygon do foreach Pixel in der Projektion des Polygons do

pz = z-Wert des Polygons an Position (x, y) if pz < z-Buffer(x, y) then WritePixel(x, y, c)

WriteZ(x, y, pz) fi

od

od

  Polygone können in beliebiger Reihenfolge behandelt werden   Tiefenwerte (z-Werte) müssen bei den vorangehenden

Transformationen mit transformiert bzw. erhalten werden

Page 60: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.2. Z-Buffer-Algorithmus

60

Quelle: Wikipedia

http://gris.uni-tuebingen.de/edu/projects/grdev/applets/zbuffer/html/index.html

Page 61: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.2. Z-Buffer-Algorithmus

61

Page 62: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

5.  Hidden Surface Removal 5.2. Z-Buffer-Algorithmus

  Vorteile –  einfach –  auch in Hardware zu implementieren → schnell –  Polygone können in beliebiger Reihenfolge bearbeitet werden –  jedes Polygon einzeln behandelt –  kann auch für nicht-polygonale Flächen genutzt werden

  Nachteile –  Genauigkeitsproblem, da z-Werte durch perspektivische

Verkürzung „komprimiert“ werden –  kein Antialiasing –  alle Polygone müssen behandelt werden

62

Page 63: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

6.  Sichtbarkeitsbestimmung in OpenGL

63

  OpenGL-Realisierung: glutInitDisplayMode( GLUT_DOUBLE| GLUT_RGB | GLUT_DEPTH);

glEnable( GL_DEPTH_TEST); glClear( GL_DEPTH_BUFFER_BIT);

Page 64: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

7.  Zusammenfassung

  Entfernen von Rückseiten der Polygone (Normale und Vektor zur Kamera betrachten)

  Entfernen verdeckter Flächen(teile) durch bildbasierte oder objektbasierte Algorithmen

  Beispiele: –  Objektbasiert: Sortierung der Polygone nach Abstand zur

Kamera (Sortierreihenfolge nicht immer eindeutig) –  Bildbasiert: z-Buffer

64

Page 65: Computergraphik Grundlagen - mttcs.org · Computergraphik Grundlagen VII. Clipping und Culling Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik

65

Video: Lifted

  Academy Award Nomination for Best Animated Short Film 2007