Transformationen, deren Matrix als letzte Zeile nicht die Form: [... ] hat, gehören zur allgemeineren Klasse der perspektivischen Transformationen. Perspektivische Projektion von Punkten (,,z i ) auf ( *, *,) in der Projektionsebene z= mit Proj.zentrum ( Augenpunkt ) bei z=n (N>) in einem Rechts(koordinaten)system: */ = */ = N/(N-z i ) Versuch der Bildung eines Matrizenprodukts: N N - N = z i N N N-z i = (ähnliche Dreiecke) (N-z i ). * (N-z i ). * (N-z i ). (N-z i ). z N x y ( *, *,) (,,z i ) view plane
Konzept-Erweiterung: Homogene Koordinaten [,,z i,] T als Darstellung v. Punkt-Familien [w.,w.,w. z i,w] T, w : Wechsel von kartesischen zu homogenen Koordinaten durch W C Anhängen einer (oder einer y anderen Zahl, mit der zuvor alle Punkt-Koordinaten multipliziert wurden). Wechsel von homogenen zu kartesischen Koordinaten durch Division durch die letzte Komponente ( perspektivische Division, auch: Homogenisieren, engl. homogenize) und Weglassen dieser letzten Komponente. Geometrische Deutung 2D-Fall: Punkt C (x, y) wird in homog. Koord. als Gerade C (x h, y h, w h ) mit x h =w h. x, y h =w h. y dargestellt. x
Nebeneffekt der Homogenisierung: Gesamtskalierung /s = z i z i /s Homogenisierung s s sz i aufgrund d. Konvention zur Homogenisierung wirkungsgleich mit der Verwendung separater (aber einheitlicher) Skalierungsfaktoren s s s = z i s s sz i
Proj. Trf. Begriffliche und rechnerische Trennung: Die (hier: perspektivische) Projektion reduziert die Anzahl von Objekt-Dimensionen; die perspektivische Transformation verformt Objekte zur Vorbereitung einer Projektion (s.u.). N N N - N z i = N N N-z i perspekt. Division N /(N-z i ) N /(N-z i ) = * * Namensgebung: Koordinaten homogen, denn sie ermöglichen auch Perspektive als Matrizen-Multiplikation i.d. Grafik-Pipeline. -/N = z i -z i /N perspektivische Division N /(N-z i ) N /(N-z i ) = * *
Übung Übung: Im Konsole-Fenster sollen mit ASCII-Zeichen geladene 3D-Drahtmodelle (wire frame) dargestellt werden; sie sollen um die x-, y- und z-achsen drehbar und bei veränderlichem Projektionszentrum darstellbar sein. WireCullFill().exe
Anmerkungen zur Perspektive: Die perspektivische Division bewirkt, daß weiter entfernte Objekte (z i groß) in der Projektion kleiner erscheinen. y Verschiebung d. Projektionszentrums (N) verändert die Abbildungs-Unterschiede zwischen nah und fern. z x Verschiebung der Proj.ebene entlang der z-achse (auf z ) verändert nur den Abb.-Maßstab. (Dreiecke bleiben ähnlich.) Auslassen der perspektiv. Transformation erzeugt Parallelprojektion (orthograph. P., engl. orthographic p.); das entspricht einer Abb. mit Proj.zentr. im Unendlichen. N /(N-z i ) N /(N-z i ) = * *
Weitere Anmerkungen zur Perspektive: Gerade Linien und ebene Flächen werden als solche abgebildet: Punkt-Kollinearität und -Komplanarität bleiben erhalten; Teilungsverhältnisse von Strecken und Flächen bleiben dagegen nicht erhalten. Parallele Linien, die auch parallel zur Projektionsebene liegen, werden als Parallelen abgebildet; sonst laufen sie in einem Punkt zusammen, dem jeweil. Fluchtpunkt (engl. vanishing point). Geraden, die das Projektionszentrum enthalten, werden auf Punkte projiziert. Ebenen, die d. Proj.zentrum enthalten, werden auf Geraden projiziert. z x y
Häufige Anwendungen in künstlerischen und technischen Darstellungen: Ein- / Zwei- / Dreipunktperspektive (meist abweichend von der exakten Perspektive) Bild: http://mathworld.wolfram.com/perspective.html
In Praxis und Literatur meist verbreitetes Paradigma: Perspektivische Projektion v. Punkten (,,z i ) auf ( *, *,-N) i.d. Projektionsebene z= -N (N>) mit Projektionszentrum am Koordinaten-Ursprung eines Rechts(koordinaten)systems: */ = */ = N / (-z i ) Verwendung homogener Koordinaten: N N N - = z i N N Nz i -z i z y N ( *, *,-N) (,,z i ) perspektivische Division N /(-z i ) N /(-z i ) Nz i /(-z i ) -z i /(-z i ) = * * -N x Zur Darstellg: z i *= setzen! view plane
Sichtvolumen (engl. view volume) eines Grafik-Systems: (R-L)F/N Darstellung nur für Objektpunkte innerhalb eines Pyramidenstumpfs (engl. pyramid frustum) mit Deck- und Grundflächen bei z=-n (near) und z=-f (far); N,F R, >. (R,T,-N) (L,B,-N) z y Trapezförmige Seitenflächen werden bestimmt durch d. Projektionszentrum bei (,,) u. (OpenGL:) durch das Rechteck mit Ecken bei (L, B, -N) und (R, T, -N). (L, B R, meist <; R, T R, meist >) x z=-n (T-B)F/N z=-f viewing volume (@ z=-n): (L)eft, (R)ight, (B)ottom, (T)op
Nutzung der perspekt. Trf. für den Zuschnitt von Objekten an den Sichtvolumen-Grenzen eines Grafik-Systems (Clipping): Einführung einer Pseudo-Tiefe (engl. pseudodepth) für Objekt-Punkte mit Werten zwischen - (z i =-N) und + (z i =-F). N N N a b - z i = N N az i +b -z i (-an+b)/n=- (-af+b)/f=+ N N -(F+N) -2FN F-N F-N - Pseudo-Tiefe wächst proportional zur eingestellten Nah- Grenze N und reziprok zu z i (für entfernte Objekte ungenau): F >> N F+N F-N F (az i +b)/(-z i ) = -a + b/(-z i ) = (F+N)/(F-N) + 2FN/[z i (F-N)] + 2N / z i d.h.: kurzsichtige Systeme (N klein) verdecken evtl. falsch! z-fighting
Ähnliche Rechnung: Einführung eines kanonischen Sichtvolumens (engl. canonical view volume) mit Werten zwischen - u. + in allen Dimensionen u. mit der Trf.-Matrix: 2N R L R+L R L 2N T B T+B T B -(F+N) -2FN F-N F-N - Hintergrund: Da Ebenen, die das Proj.zentrum enthalten, auf Geraden projiziert werden, genügt (nach der Trf.) ein Vergleich der transform. Koordinaten mit den Geraden, die das transf. Sichtvolumen begrenzen. Vorteil des kanon. Sichtvolumens: Koord. transformierter Objektpunkte werden geprüft auf <( *, *,z i *)<. Trf. des Sicht-Pyramidenstumpfs in einen Würfel; das ist eine Verformg., die bei d. Window-Viewport-Trf. aufgehoben wird.
Übung Übung (Forts.): Erweiterung des Programms zur Konsole-Darstellung eines 3D-Drahtmodells um die wahlweise Ausblendung abgewandter Objektflächen (Flächenmodell solid model). WireCullFill(2).exe
Orientierung einer Objektfläche mit den Eckpunkten P,P 2,P 3 (bei Draufsicht: gegen den Uhrzeigersinn angeordnet) gegenüber dem Augenpunkt E: E Nach außen gerichtete Normale n: n = (P 3 P 2 ) x (P P 2 ) P 3 θ n Winkel zwischen der Normalen und dem Verbindungsvektor vom Eckpunkt P 2 zum Augenpunkt E: cos θ = n (E P 2 ) / ( n. E P 2 ) P P 2 -n n (E P 2 ) -9 θ 9 sichtbare Fläche n (E P 2 ) < 9 < θ < 27 nicht sichtbare (Rück-)Fläche
3D-Sicht, A propos: Projektionen R. cosθ ( r =) Zur Erinnerung: Verwendung des Skalarprodukts zweier Vektoren zur Berechnung des Winkels θ zwischen ihnen: x B = R cosφ y B = R sin φ x B = r cos(φ+θ) y B = r sin (φ+θ) x B x B = x B x B + y B y B y B y B = R cosφ r cos(φ+θ) + R sin φ r sin (φ+θ) = r R cos θ cosθ = [x B y B ] [x B y B ] T r R Das Skalarprodukt r. R. cosθ eines Einheitsvektors r ( r =) mit einem bel. Vektor R ist gleich der Länge der Projektion des Vektors R auf die Achse des Einheitsvektors r. y B y B θ φ r R B x B x B B cos(α±β) = cosα cosβ Ŧ sinα sinβ sin(α±β) = sinα cosβ ± cosα sinβ
Beispiel zur Sichtbarkeit einer Objektfläche: Eckpunkte P = [,, ] T, P 2 = [,, ] T und P 3 = [,, ] T Augenpunkt E = [,, ] T : n = (P 3 P 2 ) x (P P 2 ) = x = = n (E P 2 ) = [,, ] = Die Fläche ist sichtbar! z E n y P (Gegenprobe mit E = [,,-] T!) P 2 P 3 x