Computergrafik 3D Rendering Hearn/Baker 5.9-6,7.-9,7. Based on material b Werner Purgathofer and Dieter Schmalstieg
Creating an Illusion The environment The imaging process = rendering The camera 2
Rendering Pipeline Model World Scene View Projection Rasteriation Image Model Transformations View Transformations 3
Themen Einführung in 3D Objekt Representationen Polgonnete, Volumnsmodelle 3D Model Transformationen 3D Viewing Racasting Darstellung als Projektionsmatrix 3D Clipping 4
Mögliche 3D-Objektrepräsentation Graphische Senen beinhalten solide geometrische Objekte Bäume, Blumen, Wolken, Felsen, Wasser Repräsentationen Oberfläche Innenmodelle, volumetrische Modelle Proedurale Modelle Phsikalisch basierte Modelle Oberflächenmodelle Boundar Repräsentation (B-Reps) Raumaufteilungsmodelle (Space-Partitioning Models) 5
Polgonnet Bestimmung der Polgonfläche, welche das innere Objekt umhüllt. Boundar Representation B-rep Gitterartige Darstellung eines Zlinders, hintere versteckte Linien entfernt 6
Vertex Liste Polgonnet: Datenstrukturen Vertex (,,) (,,) (,,) 8 (,,) 5 6 (,,) (,,) 7 (,,) (,,) (,,) (,,) (,,) (,,) (,,) (,,) 2 (,,) 3 7
Polgonnet: Datenstrukturen Polgon - Vertex Liste Vertex (,,) (,,) (,,) (,,) (,,) (,,) (,,) (,,) Index 2 3 2 6 7 3 5 (,,) 3 (,,) (,,) (,,) (,,) 2 (,,) 7 (,,) 6 8
Polgonnet: Datenstrukturen Facet Edge - Vertex Liste Vertex (,,) (,,) Edge,, 3 Facet 5 (,,) 3 (,,) (,,) 7 (,,) (,,) 2, 3 2 (,,) (,,),2 2,6 3 2 (,,) (,,) (,,) 6 (,,) 6,7 4 2 (,,) 3,7 5 (,,),5 6 9
Polgonnet Effiiente Datenstruktur für Oberflächen Triangle Strip n-2 Dreiecke für n Eckpunkte Quadrilateral Mesh (n-)x(m-) Vierecke
Polgonflächen: Ebenengleichung Ax + B + C + D Ebenenparamter A,B,C,D Normale = (A,B,C) = Beispiel: x-=
Vorderansicht und Rückansicht des Polgons Rückseite = Polgonseite, welche ins innere des Objektes eigt Vorderseite = Polgonseite, welche nach aussen eigt hinter einer Polgon Ebene = sichtbar für die Polgon-Rückseite vor einer Polgonebene = sichtbar für die Polgon- Vorderseite vorne hinten 2
Vorder- und Rückseite eines Polgons Ax + B + C + D = für Punkte auf der Fläche < für Punkte dahinter > für Punkte davor wenn () rechtsgewundenes Koordinatensstem (2) Polgonpunkte gegen den Uhreigersinn angeordnet sind V, V 2, V 3 gegen den Uhreigersinn => Normalvektor N = (V 2 - V ) x (V 3 - V ) 3
Kurven und gekrümmte Oberflächen Definiert durch mathematische Funktionen (impliit, expliit, parametrisch) Z.B definiert durch Gleichungen 2. Grades (quadratisch) Kugel, Ellipsoid, Ring, Paraboloid, Hperboloid, Vorgeben von Datenpunkten (Oberflächen-Approximation) Polgonale Approximation (Tesselation) des Polgonnetes Dreiecke Vierecke... (Flächen?!) 4
Volumsmodelle Constructive Solid Geometr (CSG) Bool sche Mengenoperationen auf 3D- Objekten Vereinigung, Schnittmenge, Differen Volumsrepresentation Octree Simon Chorle 5
CSG-Datenstruktur Jedes Objekt ist aus einfachen Modellen mit Mengen-operationen aufgebaut Datenstruktur: Binärbaum Rekursive Evaluierung 6
Octree Beispiel (c) Yoshifumi Kitamura 7
3D Transformationen Zulett 2D Transformationen Translation, Rotation, Skalierung, Scherung, etc. Darstellung als 3x3 Matrix Gemischte Transformationen, Kommutativität, Assoiativität Alle Konepte können direkt in 3D angewendet werden + Projektionen 3D à 2D 8
9 3D Translation () Translationsvektor (t x, t, t ) = ʹ ʹ ʹ x t t t x x P t t t T P x = ʹ ),, ( x t t t x x + = ʹ + = ʹ + = ʹ,,
3D Translation (2) Objekte werden versett indem die Eckpunkte versett werden Inverse: - T ( t, t, t ) = T (- t,- t,- t x x ) 2
3D Rotation: Winkelorientierung Rotationsachse positiver Winkel Rotation gegen Uhreiger 2
22 3D Rotation um Hauptachse (-Achse) x x x = ʹ + = ʹ - = ʹ θ θ θ θ cos sin sin cos - = ʹ ʹ ʹ cos sin sin cos x x θ θ θ θ P R P = ʹ ) ( θ Inverse: R x - (θ) = R x (-θ) = R xt (θ)
23 - = ʹ ʹ ʹ cos sin sin cos x x θ θ θ θ P R P x = ʹ ) ( θ 3D Rotation um Hauptachse (x-achse)
24 - = ʹ ʹ ʹ cos sin sin cos x x θ θ θ θ P R P = ʹ ) ( θ 3D Rotation um Hauptachse (-Achse)
Allgemeine Rotationen Als Kombination von Rotationen um Hauptachsen: R(α, β,γ) = R x (α) R (β) R (γ) Kompliiert u editieren, Reihenfolge? Änderung eines Winkels von den anderen abhängig Als beliebige Rotationsachse + Winkel R(r,θ) r = Allgemeiner und Intuitiver θ! " a b c $ % Drehachse Winkel 25
3D Rotation um eine beliebige Achse Die Rotationsachse (gestrichelte Linie) ist definiert durch den Punkt P 2. r = P 2 P 2 =! " a b c $ % 26
3D Rotation um eine beliebige Achse Anfangsposition. rotiere P 2 auf -Achse 2. rotiere Objekt um -Achse 3. rotiere Achse ur Ursprungsrichtung 27
3D Rotation um eine beliebige Achse Schritt : Rotation sodass r mit -Achse übereinstimmt (erledigt mit 2 Rotationen) Rx(a): r x-ebene R(b): r -Achse r a: b: α β r 28
29 3D Rotation um eine beliebige Achse Schritt a: r 2 2 c b d + = = ʹ r = (,b,c) ʹ ),, ( c b a r = - = / / / / ) ( d c d b d b d c R x α α cos α = c/d α d b c r r r
3D Rotation um eine beliebige Achse Schritt b: r ʹ = r ʹ = r ʹ ʹ = (,b,c) d (a,, d) cos β = d sin β = -a β d a x r r R ( β ) = d - a a d 3
3D Rotation um eine beliebige Achse Schritt 2: r abgestimmt mit -Achse Rotation um -Achse R ( θ ) = cos θ - sin θ sin θ cos θ 3
3D Rotation um eine beliebige Achse Schritt 3: Rotation aus Schritt rückgängig R(r,θ) = R x (α) R (β) R (θ) R (β) R x (α) Schritte: 3a 3b 2 b a 32
3D Rotation: Achse parallel ur x-achse Urspr. Objekt- Position 2. Rotation durch Winkel θ.translation Rotationsachse um die x- Achse: T 3.Translation Rotationsachse an originale Position:T- T R ( θ ) = T R ( θ ) x - 34
3D Rotation um eine beliebige Achse Anfangsposition. versete P um Ursprung 2. Rotiere um allgemeine Achse 3. Versete Achse ur Ursprungsposition 35
36 3D Skalierung um Ursprung Verdopple die Objektgröße und entferne es vom Ursprung = ʹ ʹ ʹ x s s s x x P S P = ʹ
37 3D Skalierung mit beliebigem Fixpunkt ),, ( ),, ( ),, ( F F F x F F F x T s s s S x T - - -. T 2. S 3. T -
38 3D Skalierung mit beliebigem Fixpunkt ),, ( ),, ( ),, ( f f f x f f f x T s s s S x T - - - - - - ) ( ) ( ) ( f f f x x s s s s x s s
3D Spiegelung Spiegelung um Punkt Linie (8 Rotation) Ebene,.B., x-ebene: RF P'(a,b,-c) P(a,b,c) RF = - Spiegelung an x-ebene 39
3D Scherung Beispiel: relative Scherung ur -Achse mit a=b= b SH = a b a 4
Dreidimensionales Viewing Überblick über Konepte des 3D-Viewing 3D Viewing Pipeline 3D Sichtkoordinaten-Parameter Transformation Weltkkord. à Sichtkoord. Projektive Transformation Orthogonale und Parallel-Projektion Perspektivische Projektion Viewport-Transformationen, Bildschirmkoord. 4
3D-Darstellungsmethoden Darstellungsebene Koordinatensstem für einen bestimmten Blickpunkt auf eine 3D-Sene 42
3D Aneige: Parallel-Projektion 4 parallele Projektionsansichten eines Objektes, welche die relativen Verhältnisse aus verschiedenen Sichtpositionen eigen. 43
3D Aneige: Perspektivische Projektion 44
Drahtgitter-Darstellung Drahtgitter-Darstellung von 3 Objekten (unsichtbare Linien wurden entfernt). Jedes Objekt in der Sene ist definiert durch ein Net von Koordinatenpunkten, welche dann als Drahtgitter- oder Oberflächen-Modell dargestellt werden. 45
3D-Darstellung: Tiefeneindruck = or? Idee: Intensitäten mit wachsender Distan verringern 46
3D-Darstellung: Sichtbarkeit Sichtbare Linien und Flächenidentifiierung = or! 47
3D-Darstellung: Tiefeneindruck + Sichtbarkeit Nur sichtbare Linien Intensitäten werden mit wachsender Distan verringert 48
3D-Darstellung: Oberflächen Eine realistische Raumaneige wird mit Ra-Tracing erreicht; Anwendung von Perspektivischer Projektion Texture Mapping BeleuchtungsSimulation 49
Andere 3D-Darstellungsmethoden Auseinander geogene Darstellung (exploded view) Beispiel: Turbine 5
Andere 3D Aneigemethoden Ausschneiden (Cutawa) Beispiel: Farbkodierte Darstellung eines Rasenmähermotors, welche die Struktur und Verbindung der internen Komponenten eigt 5
3D Aneige: Stereoskopie 2 Bilder (x linkes, x rechtes Auge) Head Mounted displas (HMD) oder Monitor mit Shutter Glasses 52
3D-Viewing: Kamera-Definition Ähnlich dem Fotografieren Einbindung von Kameraposition Kameraorientierung Fenster (Öffnung) der Kamera 53
3D-Sichtkoordinaten () Sichtkoordinatensstem u = v x n (positive x v -Achse) Distan der Sichtebene Rechtsdrehendes Darstellungssstem definiert mit den Einheitsvektoren u, v, und n Position der Sichtebene entlang der v Achse 54
3D-Sichtkoordinaten (2) Darstellung des Referenpunkts Anfang des Sichtkoordinatensstems Kameraposition oder Betrachtungspunkt Rechtsdrehendes Sichtkoord. sstem mit Achsen x,,, relativ ur Weltkoord. Sene 55
3D-Sichtkoordinaten (3) Normalvektor N der Sichtebene (= positive v -Achse, Punkte um Betrachter) N=(,,) N=(,,) 56
3D-Sichtkoordinaten (4) Wähle Up-Vektor V (positive v -Achse) Wähle beliebigen Up-Vektor und stelle ihn senkrecht auf den Normalvektor N Oft: wähle V entlang der w Achse gewünschte Richtung 57
3D-Sichtkoordinaten (5) Berechnung von u, v, n aus Normalvektor N und Up- Vektor V n = N N Normalisieren von N u = V n V v = n u u normal auf Up-Vektor V und n v normal auf u und n (automatisch in die Richtung V) 58
3D-Sichtkoordinaten (6) M WC, VC = R R R x T verbindet Kamerakoordinaten mit Weltkoordinaten durch Translation/Rotation 59
3D-Sichtkoordinaten (7) Orientierung der Sichtebene für einen speiellen Ansichtspunkt P, relativ um Sichtkoord.- Ursprung P 6
3D-Sichtkoordinaten (8) Ansicht einer Sene aus verschiedenen Richtungen mit einem fixen Sichtreferenpunkt 6
3D-Sichtkoordinaten (9) Bewegen in einer Sene, indem man die Position des Sichtreferenpunktes verändert 62
Projektionen Parallel-Projektion: parallele Linien, Einhalten von relativen Verhältnissen Perspektivische Projektion: Projektionsentrum, realistische Darstellung 63
Parallel-Projektion () orthographische Projektion schräge Projektion Orientierung des Projektionsvektors V p 64
Grundriss Parallel-Projektion (2) Aufrisses Seitenrisses orthographische Projektion eines Objektes isometrische Projektion eines Würfels 65
Cavalier-Projektion Tiefe des Würfels in Projektion gleich wie Höhe und Breite 66
Cabinet Projektion Tiefe des Würfels in Projektion wie halbe Höhe / Breite 67
Perspektivische Projektion Sichtebene Projektions- Referenpunkt Perspektivische Projektion von gleichgroßen Objekten mit verschiedenen Distanen von der Sichtfläche 68
Modelierung als Pinhole Camera Keine radiale Vererrung Kein Depth of Field 69
Eigenschaften perspektivische Projektion Parallele Linien parallel ur Sichtebene Abbildung auf parallele Linien Parallele Linien nicht parallel ur Sichtebene Abbildung auf konvergente Linien; Fluchtpunkt (vanishing point) Linien parallel ur Koordinatenachse Hauptfluchtpunkte (principle vanishing point -, 2 oder 3) Speialfälle: vp = or prp = 7
Fluchtpunkte -Punkt Persp. Proj. 2-Punkt Persp. Proj. Perspektivenansichten principle vanishing points eines Würfels für verschiedene Richtungen der Sichtebene relativ ur Hauptachse des Objekts. 7
Clipping Window Auswahl des sichtbaren Bereichs als Clipping Window In der Bildebene Kann entlang von Z v verschoben sein Clipping Window 72
Racasting für Orthographische Projektion Sichtkoordinaten mit definiert: P, x v, v, v Viewplane durch Größe: w,h Auflösung in Pixel: u,v Abstand w Pixel: w/u, h/v Position eines Pixels: p i,j = C + x v (iw/u w/2 + w/(2u)) + v (jh/v h/2 + h/(2v)) d C w, u h, v Projektionsrichtung: d 73
Racasting für Perspektivische Projektion Projektionsentrum: P Sichtkoordinaten mit definiert: C, x v, v, v Viewplane durch Größe: w,h Auflösung in Pixel: u,v d C h, v P Abstand w Pixel: w/u, h/v Position eines Pixels: p i,j = C + x v (i w/u w/2 + w/(2u)) + v (j h/v h/2 + h/(2v)) w, u Projektionsrichtung: d = p i,j - P 74
Darstellung als Projektionsmatrix Punkt in 3D: P = (x,,,) wird auf Punkt in 2D p = (u,v,,) projeiert. p = M proj P Einheitliche Darstellung der Projektion als Teil der Rendering Pipeline. Zusammenfassung mit Modell- und Sichttransformationen p = M proj M wc,vc M model P 75
Orthographische Parallel-Projektion x p = x p = p = M parallel = 76
77 Schräge Parallel-Projektion φ φ sin cos p L L x x p + = + = = tan sin tan cos α φ α φ M parallel α α / tan / tan L L = =
Andere Konfiguration mit Bildebene im Ursprung (,, prp ) x Perspective Projection prp x p = P(x,,) x x p : x = prp : ( prp - ) x p = x Ζ prp prp - p = prp prp - p = 78
79 h!!! Ableitung der Perspektive (3) - = prp prp p - x prp prp = x p prp prp h - = - = / x h x prp h h h = x / h = / h
Modell Koord. 3D Viewing Pipeline Modell Transformation Welt Koord. Sicht Transformation Projektions Koord. Projektive Transformation Sicht Koord. Normalisierung Transformation und Clipping normalisierte Koord. Viewport Transformation Geräte Koord. Allgemeine 3D-Transformationspipeline, von Modellkoordinaten bis u Gerätekoordinaten 8
Modeling projection Projection equations Compute intersection with PP of ra from (x,,) to COP Derived using similar triangles We get the projection b throwing out the last coordinate: 8
Perspective Projection Projection is a matrix multipl using homogeneous coordinates: This is known as perspective projection The matrix is the projection matrix Can also formulate as a 4x4 divide b third coordinate divide b fourth coordinate 82
3D Clipping Auswahl des sichtbaren Bereichs einer Sene in 3D! Clipping Window in View plane Near und Far plane in Z Richtung Definiert View Volume Normalisierung des View Volumes Clipping im Normalisierten View Volume Clipping Window 83
Orthogonale Projektion Far plane View Volume Near plane View volume definiert durch Clipping Window Near and Far clipping plane 84
85 = M parallel x p = x p = p =! 3D Clipping nach der Projektion! Modifiieren Projektionsmatri, sodass erhalten bleibt
Normalisierung () 86
Normalisierung (2) [x min, x max ] è [-,] [ near, far ] è [-,] [ min, max ] è [-,] 2 x max x min x max + x min x max - x min x M N = 2 max min max + min max - min 2 far near far + near far - near 87
Far clipping plane at far Perspektivische Projektion Near clipping plane at near Frustum beschrieben durch Clipping window od. Field-of-View Angle Near and far clipping planes 88
89 Erhalten von Z Persp. Proj. mit d = near Erhalten von Z durch Eintrag in 4. Spalte! => near / x near! " $ % = near! " $ % x! " $ % x near near! " $ % x near! " $ % = near! " $ % x! " $ % x near near near! " $ %
9 Erhalten von Z Persp. Proj. mit d = near Erhalten von Z durch Eintrag in 4. Spalte! Besser als lineare Transf. (s,t) x near! " $ % = near! " $ % x! " $ % x near near! " $ % x s + t near! " $ % = s t near! " $ % x! " $ % x near near (s + t ) near! " $ %
Perspektivische Projektion mit 9
Perspektivische Projektion mit Linien durch das Projektionsentrum werden u parallelen Linien im Viewvolume. 92
Perspektivische Projektion mit! " x min min near $ % 93
Normalisierung () 94
Normalisierung (2) [x min, x max ] è [-,] [ min, max ] è [-,] 2 x max x min x max + x min x max - x min x M N = 2 max min max + min max - min 95
Normalisierung (3) " $ $ M n M proj = $ $ $ $ 2 x max + x min x max x min x max x min 2 max + min max min max min % ' " % ' $ ' ' $ s t ' ' $ ' = ' $ ' ' $ near ' " $ $ $ $ $ $ $ $ 2 x max x min x max + x min x max x min near 2 max + min max min max min near s t near % ' ' ' ' ' ' ' ' 96
Bedingungen an s,t Ersete mit near und far Gleichungssstem für s,t! "! " s t $! " near % s t $! " near % near far $! = % "! $ = % " s near + t s far + t far near $ % $! ~ % "! ~ " $ % $ % s near + t = s far + t = far near s = far + near far near t = 2 far near far near 97
Perspektivische Proj + Normalisierung " $ $ $ $ M n M proj = $ $ $ $ $ $ 2 x max x min x max + x min x max x min near 2 max min + max min max min near far + near far near near 2 far near far near % ' ' ' ' ' ' ' ' ' ' 98
Clipping Warum normalisieren? Einfacher Vergleich an Clipping Ebenen x < -, x >, < -, >, < -, > Vor Division durch h! Division wird nur für sichtbare Punkte berechnet. (x n, n, n,h n ) = M N M proj M wc,vc M model P x n < -h n, x n > h n, n < -h n, n > h n, n < -h n, n > h n 99
3D Clipping in Normalisierten Koordinaten Erweiterung von 2D Clipping auf 3D. Gleicher Algorithmus für Linien Polgone.
3D Clipping Kompliierter für Körper (B-Reps) Flächen müssen konstruiert werden!
Nach clipping -> Screen coordinates Normalisierte Koordinaten ~ Clipping Window Transformiert u Viewport in Window oder Screen 2