Computergrafik 2D Rendering Hearn/Baker 32., 3.4-3.6,5. 5.8, 6. 6.8, 6. Based on material b Werner Purgathofer, Gerhard Reitmar and Dieter Schmalstieg
2D Racasting Inhalt Einfaches Rendering Model 2D Transformationen & Transformationspipeline 2D Clipping 2
2D Rendering - GUIs 3
2D Rendering - Web Pages 4
Creating an Illusion The environment The imaging process = rendering The camera 5
A simple model ais height piels Environment = Screen space Scene objects defined in piel coordinates Check for ever piel the closest object Paint piel with that color ais width piels 6
A simple model ais height piels Environment = screen space Scene objects defined in piel coordinates Check for ever piel the closest object Paint piel with that color ais width piels 7
Grundlegende grafische Primitive Punkte, Linien Polgone, Rechtecke Kreise und Bögen Characters Füllen von Flächen Piel Arras - Bilder 8
Punkte, Linien und Polgone P = (,) V = (, ) V 2 = ( 2, 2 ) Gegeben durch Eckpunkte (Verte) im Koordinatensstem Polgone als Liste von Vertices ais V = (, ) V N = ( N, N ) ais 9
Simples Rendering Racasting Für jedes Piel: Teste, ob Teil eines Objekts ais Ein Sehstrahl (Ra) wird in die Szene geworfen (Ra Casting) ais
Simples Rendering Racasting 2 Pielzentrum mit Primitiv schneiden Distanz zu Punkt/ Linie bestimmt Größe, Dicke ais Polgon Innen-Aussen-Test ais
Berechnung eines Treffers Piel C mit Koordinaten ( c, c ) Punkt P = (,) mit Größe r d(p,c) = P C < r Linie L: V V 2, Abstand C zur Linie: d(l,c) = (C V ) n n n = ( 2, 2 ) T = nächster Punkt zu C auf L n V = (, ) T V 2 = ( 2, 2 ) d(l,c) C T = V + (V 2 -V ) V 2 -V (C V ) (V 2 V ) V 2 -V 2
Polgon Innen-Aussen Test Sende Strahl in eine beliebige Richtung Darf keinen Eckpunkt treffen C C 2 Anzahl der Schnitte bestimmt die Lage des Punktes zum Polgon C 3 3
Innen-Aussen-Tests: Vergleich Imparitätsregel Nullwindungs - Regel 4
Simple Model Revisited Sichtfenster Objekte unabhängig vom Ausgabesstem modellieren Ausschnitt und Lage unabhängig von der Szene wählen ais ais 5
2D-Transformationen für komplee Szenen Model Transformationen Objekte Welt/Szene 6
2D Model Transformationen Elementare Transformationen Matrizen & homogene Koordinaten Gemischte Transformationen 7
8 Elementare Transformationen: Translation Versetzt einen Punkt von einer Position P an einen Punkt mit der Position P' mittels Translation des Vektors T t t t t T, P, P Notation: T P P P T P
Elementare Transformationen: Translation Festkörper-Transformation Objekt wird transformiert, indem die Grenzpunkte transformiert werden T P 3 P 2 P 9
Elementare Transformationen: Rotation Rotation des Objekts um einen Winkel und um einen Drehpunkt ( r, r ) positiver Winkel Rotation gegen den Uhrzeiger 2
Elementare Transformationen: Rotation = r. cos = r. sin (, ) = r. cos(+ ) = r. cos. cos r r. sin. r sin =.cos.sin (,) r = r. sin(+ ) = r. cos. sin r r. sin. cos cos sin sin cos 2
Elementare Transformationen: Rotation Verwendung einer Transformationsmatri cos sin sin cos P R P with R cos sin sin cos RP cos sin sin cos cos sin sin cos 22
Elementare Transformationen: Skalierung s, s P s s P = S P P S Beispiel: eine Linie wird mit s =s =.33 skaliert, um sie näher an den Koordinatenursprung zu bewegen 23
Elementare Transformationen: Skalieren Uniforme Skalierung: s s Nicht-uniforme Skalierung: s s Fipunkt: ( f, f ) 24
25 Transformationsmatrizen Skalierung Rotation X-Spiegelung Translation s s cos sin cos sin = (+d, +d (' ') )...?
Anstatt Homogene Koordinaten () verwendet man h h mit = h /h, = h /h h Sehr oft h=, z.b. Auf diesem Weg können alle Transformationen in Matri-Form erfasst werden 26
27 Homogene Koordinaten (2) Translation Rotation Skalierung t t cos sin sin cos s s P t T t P ), ( P R P ) ( P s s S P ), (
28 Inverse Matrizen ), ( ), ( t t T t t T ) ( ) ( R R ),/ (/ ), ( s s S s s S Translation Rotation Skalierung
Gemischte Transformationen n Transformationen werden nacheinander auf einen Punkt P angewendet, diese werden anhand M, M 2,..., M n dargestellt. P = M P P = M 2 P... P (n) = M n P (n-) kürzer: P (n) = (M n...(m 2 (M P) )... ) 29
Transformationen sind nicht kommutativ! Umgekehrte Reihenfolge der Abfolge der Transformationen könnte eine Auswirkung auf die Position des transformierten Objektes haben In (a) wird das Objekt zuerst versetzt, dann rotiert In (b) wird das Objekt zuerst rotiert, dann versetzt (a) (b) 3
Gemischte Transformationen(2) P (n) = (M n... (M 2 (M P) )... ) Matrizenmultiplikationen sind assoziativ: (M M 2 ) M 3 =M (M 2 M 3 ) (aber nicht kommutativ: M M 2 M 2 M ) 3
Gemischte Transformationen(2) P (n) = (M n... (M 2 (M P) )... ) Matrizenmultiplikationen sind assoziativ: (M M 2 ) M 3 =M (M 2 M 3 ) (aber nicht kommutativ: M M 2 M 2 M ) Daher können alle Transformationen folgendermaßen geschrieben werden: P (n) = ( M n... M 2 M ) P konstant für alle Bilder, Objekte, etc.!!! 32
33 Einfache gemischte Transformationen Gemischte Translation: Gemischte Rotation: Gemischte Skalierung: ), ( ), ( ), ( 2 2 2 2 t t t t T t t T t t T ) ( ) ( ) ( 2 2 R R R ), ( ), ( ), ( 2 2 2 2 s s s s S s s S s s S
Rotation um allgemeinen Drehpunkt T (, r r ) R( ) T (, r r ) R(,, ) r r Ursprüngliche Position und Drehpunkt Translation des Objekts, Drehpunkt ist im Ursprung Rotation um den Ursprung Translation, sodass der Drehpunkt zurückkehrt 34
allgemeine Fipunkt-Skalierung T(, f f ) S( s, s ) T(, f f ) S(,, s, s f f ) Ausgangsposition und Fipunkt Translation des Objekts, Fipunkt ist im Ursprung Objekt wird im Ursprung skaliert Translation so, dass der Fipunkt zurückkehrt 35
Allgemeine Skalierungsrichtungen R ( ) S( s, s 2 ) R( ) Ausgangs- Position Nach 45 Rotation Nach (,2) Skalierung Rotation zurück um -45 36
37 Translation von (3,4), dann Rotation um 45 und dann Vergrößern um den Faktor 2 in -Richtung. M = T(3,4) = 2. M 2 = R(45 ) = 3. M 3 = S(2,) = 4 3 cos 45 sin 45 sin 45 cos 45 2 M = M 3 M 2 M Beispiel ()
38 M = M 3 M 2 M cos 45 sin 45 sin 45 cos 45 4 3 2 = 3sin 45 + 4cos 45 cos 45 sin 45 3cos 45 4sin 45 sin 45 cos 45 = 2 = = = = 3sin 45 + 4cos 45 cos 45 sin 45 6cos 45 8sin 45 sin 45 2cos 45 Beispiel (2)
39 um -Achse: Rf = um -Achse: Rf = Spiegelung
Beispiel Spiegelung um die Achse mit Winkel = 4
Spiegelung um -Achse =. Rotation um 2. Spiegeln um -Achse 3. Rotation um. 2. 3. + + 4
Bsp: Spiegelung um die Achse mit Winkel. M = R() = 2. M 2 = S(,) = 3. M 3 = R() = cos( sin( cos sin sin cos sin( cos( P = M 3 (M 2 (M P)) = (M 3 M 2 M ) P. 2. 3. 42
M 3 M 2 M = cos sin cos( = sin cos sin( cos sin cos sin = sin cos sin cos = = Bsp: Spiegelung um die Achse mit Winkel cos 2 sin 2 2sincos 2sincos sin 2 cos 2 = cos2 sin2 sin( cos( sin2 cos2 = 43
Andere Transformationen: Spiegelung um einen Punkt Spiegelung um den Ursprung Rf O (=R(8º)) = 44
Spiegelung an einer allgemeinen Linie Spiegelung unter Beachtung der Linie L : =m+b T(,b) R() Rf R() T(,-b) m = tan() L b 45
Andere Transformationen: Scherung () sh Entlang der -Achse Referenzlinie = X-Richtung Scherung 46
Andere Transformationen: Scherung (2) sh sh ref Referenzlinie = ref Allgemeine X-Richtung Scherung Entlang X-Achse 47
Andere Transformationen: Scherung (3) Allgemeine Y-Richtung Scherung Entlang Y-Achse Referenzlinie =ref sh sh ref 48
Transf. zwischen Koordinatensstemen Ein kartesisches Sstem bei (, ) positioniert mit Richtung in einem kartesischem Sstem M R( ) T(,, ) Position der Referenzframes nach der Translation des Ursprung des '' Sstems zum Koordinatenursprung des Sstems 49
Affine Transformationen a a b a a b Parallele Linien parallele Linien Endpunkte Endpunkte Jede affine Transformation ist eine Kombination aus Translation, Rotation, Skalierung, Spiegelung, Scherung Affine Transformation, welche nur aus Translation, Rotation und Spiegelung besteht: Winkel-, längeerhaltend 5
Viewport-Transformation Fensterausschnitt (Clipping Window): was angezeigt wird Viewport: wo angezeigt wird Gerätekoordinaten: Pielpositionen am Displa Transformation & Ausschneiden 5
2D-Transformationen für komplee Szenen Model Transform ationen Objektkoordinaten Weltkoordinaten View Transform ationen Sichtkoordinaten 52
Transformation WK SK Aufstellen eines rotierten Weltfensters in Sichtkoordinaten und des zugehörigen normalisierten Koordinaten-Viewport Viewport Weltkoordinaten Sichtkoordinaten 53
Sicht-Koordinatensstem Abb. Sicht- Koordinaten zu Welt-Koordinaten in 2 Schritten: (a) Verschiebe die Sichtkoordinaten zum Weltursprung (b) Rotiere Achsen SK zur Deckung mit WK M WK, SK RT 54
MK 2D-Transformations-Pipeline konstruiert Welt-Koordinaten f. Szene und wendet Modell-Koordinaten- Transformationen an WK transformiert Welt-Koordinaten in Sicht- Koordinaten SK transformiert Sicht- Koordinaten zu normalisierten Koordinaten NK transformiert normalisierte Koordinaten zu Geräte- Koordinaten GK 55
Normalisierte Koordinaten Normalisierte Koordinaten ~ Clipping Window Transformiert zu Viewport in Window oder Screen 56
Viewport-Transformation () Punkt (w, w) in einem Fensterausschnitt wird abgebildet auf Viewport-Koordinaten, sodass relative Positionen in den zwei Bereichen gleich sind. 57
Viewport-Transformation (2) Translation + Skalierung + Translation M T v S T w 58
Viewport-Transformation (3) T w T(w min,w ma ) T v T(v min, v ma ) 59
Viewport-Transformation (4) S ( v ma v min w ma w min, v ma v min w ma w min ) 6
M v min v min v ma v min w ma w min Viewport-Transformation (4) v ma v min w ma w min v ma v min w ma w min v ma v min w ma w min v min v ma v min w ma w min w min v min v ma v min w ma w min w min w min w min 6
Simple Model Revisited Sichtfenster Objekte unsichtbar außerhalb des Sichtfensters Entfernen = Clipping von nicht benötigten Objekten/Objektteilen ais ais 62
Clipping Teilweise oder vollständig unsichtbare Teile Dürfen nicht ignoriert werden! Dürfen nicht gezeichnet werden! ignoriert scrolled müssen ausgeschnitten werden (wenn möglich in Weltkoordinaten) Spitzen Kanten 63
Clipping-Operationen Entferne Objekte ausserhalb des Clip-Fensters Clip-Fenster Rechteck, Polgon, kurvige Begrenzungen Anwendung in Welt- oder Sichtkoordinaten Kombiniert mit Rasterisierung Auszuschneidende Objekte Punkte, Linien, Polgone, Kurven, Tet,... 64
Möglichkeiten für Clipping Analtisch = in Weltkoordinaten Reduziert Anzahl der WK GK Transformationen Während Rasterisierung = Als Teil des Rasterisierungsalgorithmus effizient für komplee Primitive Piel für Piel-Test Größter Aufwand, implizit im Racasting 65
Linien-Clipping () Vor Clipping Nach Clipping Linien-Clipping an einem rechteckigen Clip-Fenster 66
Linien-Clipping (2) Ziele Einfache Fälle schnell eliminieren Überschneidende Berechnungen vermeiden Für Endpunkte (, ), ( end, end ) schneide parametrische Repräsentation = + u ( end ) = + u ( end ) mit Fensterrändern: Schnittpunkt u 67
Cohen-Sutherland Linien-Clipping Verteilung der Bereichscodes auf Linienendpunkte: bit: links bit2: rechts bit3: unten bit4: oben Binäre Bereichscodes nach Linienendpunkte werden entsprechend relativer Position zu Clipping-Rechtecks vergeben 68
Cohen-Sutherland Linien-Clipping Oder des Codes von beiden Punkten Linie gänzlich sichtbar Und des Codes von beiden Punkten Linie gänzlich unsichtbar Alle anderen Codes Überschneidung! 69
Cohen-Sutherland Linien-Clipping Linien die sich von einer Koordinatenregion zu einer anderen ausdehnen, durchlaufen vielleicht das Clip-Fenster oder sie schneiden die Clipping-Grenzen, ohne das Fenster zu streifen. 7
Cohen-Sutherland Linien-Clipping Verbleibende Linien Schnittpunkttest mit Grenzlinien des Clipping-Fensters Links, rechts, unten, oben Aussenteil verwerfen Schnittpunkttest wiederholen, bis zu 4 Vertikal m( ), {w min,w ma } Horiz. ( ) / m, {w min, w ma } 7
Cohen-Sutherland Linien-Clipping Durchlaufen des Clipping-Fensters Schnittpunkt mit Grenzen, ohne das Clipping-Fenster zu streifen Vertikal m( ), {w min,w ma } Horiz. ( ) / m, {w min, w ma } 72
Polgon-Clipping Modifizierung des Linien-Clipping Ziel: ein od. mehrere geschlossene Bereiche Anzeige eines Polgons, aufbereitet anhand eines Linien- Clipping Algorithmus Anzeige eines flächig ausgeschnittenen Polgons 73
Sutherland-Hodgman Polgon-Clipping Verarbeitet Polgongrenzen als Ganzes, statt in Abhängigkeit von jeder Fensterkante Output: Liste der Eckpunkte Original- Polgon clip links clip rechts clip unten clip oben Clipping eines Polgons gegen aufeinanderfolgende Fenstergrenzen 74
Sutherland-Hodgman Polgon-Clipping Vier mögliche Kantenfälle out in Output: V, V 2 in in V 2 in out V out out kein Output Aufeinanderfolgende Verarbeitung von Polgonkanten gegen den linken Fensterrand 75
für Kante: V 2 :=. Eckpunkt Sutherland- Hodgman V :=V 2 V 2 :=nächster Eckpunkt V 2 Ergebnisliste nein V 2 sichtbar? ja nein V sichtbar? ja nein V sichtbar? ja V = ausgeschnittene Kante V V 2 Ergebnisliste 76
Sutherland-Hodgman Polgon-Clipping Clipping eines Polgons gegen linke Fensterränder, beginnend mit Eckpunkt. Vorbereitete Nummern werden verwendet, um die Punkte in der Output-Eckpunkt-Liste für diesen Fensterrand zu kennzeichnen. fertig! 77
Sutherland-Hodgman Algorithm: Kombination der vier Duchläufe Das Polgon wird gegen alle vier Ränder separat ausgeschnitten, das produziert drei dazwischen liegende Ergebnisse Um die vier Tests rekursiv aufzurufen (oder man verwendet eine Clipping-Pipeline), wird jeder Ergebnispunkt sofort bearbeitet, sodass nur eine Ergebnisliste produziert wird 78
Sutherland-Hodgman Clipping Beispiel Pipeline der Randclipper um dazwischen liegende Eckpunktlisten zu vermeiden 3. clip: links 2 2 3 2 2. clip: unten Verarbeitung der Eckpunkte des Polgons durch eine Grenz- Clipping-Pipeline. Nachdem alle Eckpunkte durch die Pipeline verarbeitet wurden, ist die Eckpunktliste des Polgons [,2,2,2 ] 79
Sutherland-Hodgman Polgon-Clipping Rand-Linien für konkave Polgone: Splitten in separate konvee Teile, oder letzter Check der Output-Eckpunkt-Liste Abschneiden des konkaven Polgons mit dem Sutherland- Hodgeman Clipping produziert 2 verbundene Bereiche 8
Füllflächen von Polgonen Polgonklassifizierungen: konve: kein Innenwinkel > 8 konkav: nicht konve Splitten von konkaven Polgonen Vektormethode: Alle Kreuzprodukte der Vektoren haben dasselbe Vorzeichen konve Rotationsmethode Rotiere Polgonkanten um die -Achse, immer dieselbe Richtung konve 8
Rotationsmethode Für jeden Eckpunkt v(k) Versetze v(k) Ursprung Rotiere im Uhrzeigersinn v(k+) auf -Achse Wenn v(k+2) unter -Achse dann konkav Teile entlang -Achse 82
Fragen? 83