Grafische Datenverarbeitung.pdf
Document Details
Uploaded by AwedFlugelhorn
Tags
Full Transcript
Grafische Datenverarbeitung Inhaqalt 1 Rasterzitation...................................................................................................... 4 1.1 Perspective Divide / z-Divide......................................................................... 4 1.2 Raster sp...
Grafische Datenverarbeitung Inhaqalt 1 Rasterzitation...................................................................................................... 4 1.1 Perspective Divide / z-Divide......................................................................... 4 1.2 Raster space to screen space........................................................................ 6 1.3 Zeichnen von Linien...................................................................................... 8 1.4 Bresenhams’s Linienalgorithmus................................................................... 8 1.5 Füllen eines Dreiecks mit der Kantenfunktion................................................. 9 1.6 Baryzentrische Koordinaten......................................................................... 10 1.7 Einfache Beleuchtung................................................................................. 10 1.8 Begrenzungsrahmen (Bounding Box)............................................................ 10 1.9 Tiefenbuffer (Deep buffer)........................................................................... 11 1.10 Gouraud-Schattierung................................................................................. 11 1.11 Perspective divide als Matrix........................................................................ 12 1.12 Projektionsmatrix: Ansichtspyramide zum Einheitswürfel............................. 13 1.13 AABB/AABB-Schnittpunkt............................................................................ 14 2 Lineare Algebra.................................................................................................. 15 2.1 Punkte und Vektoren................................................................................... 15 2.2 Matrix Rotation............................................................................................ 19 2.3 Determinante.............................................................................................. 21 2.4 Inverse Transformation............................................................................... 23 3 Geometrie......................................................................................................... 26 3.1 Parametrische Oberfläche.......................................................................... 26 3.2 Explizite Form............................................................................................. 26 3.3 Implizite Form............................................................................................. 26 3.4 Polygon...................................................................................................... 27 3.5 Geometrieattribute..................................................................................... 28 3.6 Manifold, 2-manifold, non-manifold............................................................ 29 3.7 Normalen................................................................................................... 29 3.8 Baryzentrische Koordinaten......................................................................... 30 3.9 Gängige Dateiformate für Geometrie........................................................... 31 4 Euklidischer Raum und kartesisches Koordinatensystem.................................... 32 4.1 Basisvektoren............................................................................................. 32 4.2 Transformationmatrix & lineare Transformation........................................... 32 5 Raytracing......................................................................................................... 34 5.1 Schnittpunkttest (Intersection-Test)............................................................ 35 5.2 Ray equation............................................................................................... 38 5.3 Rendering spheres to the framebuffer.......................................................... 39 5.4 Normale..................................................................................................... 41 5.5 Licht........................................................................................................... 41 6 Animation.......................................................................................................... 50 6.1 Einfache Animation..................................................................................... 50 6.2 Animation mit Interpolation und Easing-Funktionen..................................... 51 7 Kamera.............................................................................................................. 52 7.1 Pin-Hole Kamera......................................................................................... 52 7.2 Projektionsfläche........................................................................................ 53 7.3 Blende........................................................................................................ 53 7.4 Fokus......................................................................................................... 54 7.5 Brennweite................................................................................................. 55 7.6 Sichtfeld (Field of View, fov)......................................................................... 56 7.7 Auflösung und Seitenverhältnis................................................................... 57 7.8 Unvollkommenheiten bei Linsen.................................................................. 58 7.9 Clipping-Ebenen und Sichtfrustum.............................................................. 58 7.10 Parallax...................................................................................................... 59 7.11 Kamera Bewegung...................................................................................... 59 7.12 Stereoscopy................................................................................................ 60 7.13 Kamera Matchmoving................................................................................. 62 7.14 Echtzeit-Anwendung................................................................................... 62 8 Licht und Farben................................................................................................ 64 8.1 Farben........................................................................................................ 64 8.2 Auge........................................................................................................... 64 8.3 Radiometrie................................................................................................ 65 8.4 Photometrie................................................................................................ 68 8.5 Colorimetry................................................................................................. 69 8.6 Farbexperimente......................................................................................... 69 8.7 Commission Internationale de l’Éclairage (CIE)............................................ 70 8.8 Color Matching Functions (CMFs)................................................................ 70 8.9 Farbraum.................................................................................................... 72 8.10 Lichtquellen in Computergrafik................................................................... 75 9 Shading/Schattierung......................................................................................... 77 9.1 Strahlung.................................................................................................... 77 9.2 Optische Medien......................................................................................... 78 9.3 Mikrogeometrie........................................................................................... 81 9.4 Fresnel....................................................................................................... 82 9.5 Oberflächentypen....................................................................................... 82 9.6 Reflexion und Brechung............................................................................... 83 9.7 Diffuse Reflexion......................................................................................... 83 9.8 Bidirectional Reflectance Distribution Function (BRDF)................................ 84 9.9 BSDF.......................................................................................................... 84 9.10 Klassische Schattierungsmodelle................................................................ 84 9.11 Physically Based Rendering (PBR)................................................................ 85 1 Rasterzitation Rasterization ist der Prozess, bei dem 3D-Objekte in eine 2D-Bilddarstellung umgewandelt werden, indem ihre Oberflächen in Pixel zerlegt werden. Sie wird typischerweise in Echtzeit-Rendering-Engines wie denen von Videospielen verwendet. 1.1 Perspective Divide / z-Divide P.y P‘.z / d P‘.y P.z Zentrum der Projektion: Dies ist der Punkt, von dem aus wir die Szene betrachten. Es wird auch als "Auge" oder "Kamera" bezeichnet. Bilddreieck: Um einen Punkt P auf die Bildebene zu projizieren, betrachten wir die x- und y-Koordinaten separat. Nehmen wir als Beispiel die y-Koordinate. Wir haben ein rechtwinkliges Dreieck, das durch den Ursprung (Zentrum der Projektion), P.y und P.z gebildet wird. Ähnliche Dreiecke: Wenn wir das Dreieck um den Ursprung skalieren, bleibt das Dreieck ähnlich, was bedeutet, dass die entsprechenden Winkel gleichbleiben und die entsprechenden Seiten proportional sind (siehe blau P‘). Formel Rechen-Beispiele proportional Geg.: (P.x = 4), P.y = 8, P.z = 16, P’z = 4 1. Einfügen in Formel: 2. Berechne P‘.y: 3. Ergebnis: P’y = 2, P’z = 4 P’z hat dieselbe Distanz wie d, wobei d die Entfernung der Bildebene vom Zentrum der Projektion ist. Formel Rechen-Beispiele Distanz d Geg.: (P.x = 4), P.y = 8, P.z = 16, d = 4 (Umrechnung für P’y) 1. Einfügen in Formel: 𝑃.𝑦 2. Berechne P’y: 𝑃′. 𝑦 = 𝑑 ∗ ist 𝑃.𝑧 dasselbe. auf andere Seite (Umrechnung für P’x) (dasselbe wie oben) Zum Verständnis: In einem Spiel wie Tomb Raider, wo Lara Croft in einer virtuellen 3D-Welt herumläuft, müssen die Punkte der 3D-Objekte (Vector) auf den 2D- Bildschirm (Raster) projiziert werden, damit wir sie sehen können. Hier kommt die Perspektivprojektion ins Spiel und dafür wird die Formel verwendet. 1.2 Raster space to screen space - auch in Framebuffer verwendet - Darstellung von 3D-Grafiken auf einem Bildschirm durchläuft die Position eines Pixels mehrere Koordinatensysteme - Beginn in der Raster- oder Bildraumkoordinaten, übergehen zu den Normalized Device Coordinates (NDC), und schließlich im Bildschirmraum landen 1. Schritt: Von Rasterraum zu Normalized Device Coordinates (NDC) - Rasterraum sind die Pixelkoordinaten oft in Ganzzahlen angegeben, wobei (0,0) der oberste linke Pixel ist - um diese Koordinaten in NDC zu konvertieren, normalisiere sie so, dass sie in einem [0,1] Bereich liegen - Zusatz von 0.5 sorgt dafür, dass den Mittelpunkt eines Pixels treffen, nicht die obere linke Ecke 2. Schritt: Von NDC zu Bildschirmraum - NDC liegt im Bereich [0,1] für X und Y (bei einigen Implementierungen wie OpenGL [-1,1]) o um dies in den Bildschirmraum zu konvertieren: Rechenbeispiel: Geg.: Bild-Auflösung 800 x 600, Pixelkoordinate im Rasterraum von (200, 150) Fazit: Rasterraum: In diesem Koordinatensystem werden Pixel in einer 2D-Matrix angeordnet, beginnend oben links. Dies entspricht der Art und Weise, wie Bilddaten im Speicher des Computers organisiert sind. Bildschirmraum: Um die 3D-Szene korrekt auf dem Bildschirm darzustellen, muss das Koordinatensystem des Bildschirms verwendet werden, das seinen Ursprung in der Mitte hat. Dies ermöglicht eine natürliche und intuitive Positionierung der Objekte relativ zur Mitte des Bildschirms. Normalisierte Gerätekoordinaten (NDC): Dies ist ein Zwischenschritt, der hilft, die Pixelkoordinaten in einen einheitlichen Bereich [0,1] zu konvertieren. Dadurch wird sichergestellt, dass die Koordinaten unabhängig von der tatsächlichen Auflösung des Bildschirms konsistent sind. Durch die Transformation von Rasterraum zu NDC und dann zu Bildschirmraum können wir sicherstellen, dass unsere 3D-Szenen präzise und konsistent (keine Verzerrung, einheitliche Skalierung, korrekte Darstellung) auf jedem Bildschirm dargestellt werden. 1.3 Zeichnen von Linien - Kanten von Flächen können visualisiert werden, indem man alle Eckpunkte in 2D mit Linien verbindet o nennt man Wireframe (Drahtmodell) - können Vektoren berechnen, die von xstart nach xend und ystart nach yend zeigen und entlang dieser Vektoren bewegen, indem sie einfach mit einen Faktor t skalieren, der von 0 bis 1 läuft 1.3.1 Flache, steile Linien und negative Steigung - Zeichnen nach diesem Ansatz funktioniert nur bei flachwinkligen Linien, die in x- Richtung länger sind - steile Linie ist in y-Richtung länger - Linien mit negativer Steigung zu zeichnen, muss sichergestellt werden, dass Schleife sowohl positive als auch negative Steigungen verarbeiten kann 1.4 Bresenhams’s Linienalgorithmus - wurde 1962 von Jack Elton Bresenham bei IBM entwickelt - verwendet rechnerisch günstige Ganzzahloperationen, um zu bestimmen, welche Pixel für einen gegebenen Satz von Koordinaten gezeichnet werden sollen 1.5 Füllen eines Dreiecks mit der Kantenfunktion - um jedes Dreieck mit Farbe zu füllen, müssen wir feststellen, ob ein Pixel innerhalb des Dreiecks liegt - Kantenfunktion hilft uns dabei, indem sie bestimmt, auf welcher Seite einer Kante sich ein Pixel befindet - angenommen ein Punkt P liegt innerhalb Dreieck ABC o man kann Vektoren AP⃗ und AB⃗ definieren o beiden Vektoren können als eine 2x2-Matrix dargestellt werden: ▪ Determinante dieser Matrix ist positiv, wenn P auf einer Seite der Kante AB liegt ▪ negativ, wenn es auf der anderen Seite liegt ▪ null, wenn P genau auf der Kante liegt - diese Matrix kann für alle Kanten der Fläche erstellt und die Determinante für jede berechnet werden - wenn alle Determinanten dasselbe Vorzeichen haben, liegt der Punkt entweder innerhalb oder außerhalb des Dreiecks - Vorzeichen, das die Innenseite des Dreiecks anzeigt, wird durch die Wicklungsreihenfolge (winding order) und die Definition der Matrixzeilen bestimmt o Wicklungsreihenfolge bezieht sich auf die Reihenfolge, in der die Eckpunkte einer Fläche verarbeitet werden o Reihenfolge kann entweder im Uhrzeigersinn oder gegen den Uhrzeigersinn sein o ist wichtig, da sie bestimmt, welche Seite einer Fläche als die Vorderseite und welche als die Rückseite betrachtet wird o in Computergrafik wird dies verwendet, um zu entscheiden, welche Flächen gerendert und welche verworfen werden (Backface Culling) 1.5.1 Backface Culling - ist eine Technik in der Computergrafik, bei der Dreiecke, die von der Kamera wegzeigen, nicht gezeichnet werden - verbessert die Rendering-Leistung und verhindert unnötiges Zeichnen von Oberflächen, die vom Betrachter nicht gesehen werden können - verwendet man die Kantenfunktion, wird das Backface Culling automatisch erreicht: o wenn ein Dreieck vom Betrachter wegzeigt, ändert sich das Vorzeichen der Determinante automatisch und verhindert, dass das Dreieck gezeichnet wird 1.6 Baryzentrische Koordinaten - beim Rendern eines Pixels innerhalb eines Dreiecks möchten wir dieses Attribut für diese Position interpolieren o Position innerhalb eines Dreiecks kann mit baryzentrischen Koordinaten ausgedrückt werden o diese Koordinaten können als Gewichtswerte für jeden Eckpunkt betrachtet werden - mit der Kantenfunktion berechneten Determinanten geben die Fläche jedes Parallelogramms zurück, das durch die Vektoren in den Matrizen definiert wird - teilt man die Fläche durch 2, erhält man die Fläche jedes Unterdreiecks, das durch eine Kante und den Punkt P innerhalb des größeren Dreiecks, der Fläche, definiert wird o Gewichtswert kann dann einfach berechnet werden, indem man das Verhältnis der Fläche des kleinen Dreiecks zur Fläche der gesamten Fläche nimmt o ergibt das Gewicht für den Eckpunkt auf der gegenüberliegenden Seite des kleinen Dreiecks - für einen Punkt innerhalb der Fläche ist die Summe aller Gewichtswerte 1 o daher müssen wir nur zwei Gewichte berechnen und das dritte durch Subtrahieren der anderen beiden von 1 erhalten 1.7 Einfache Beleuchtung - einfache Beleuchtungseffekte durch die Verwendung der Flächennormalen und des einfallenden Lichtvektors für jede Fläche erreicht werden - Skalarprodukt dieser beiden Vektoren kann verwendet werden, um die Pixel- Farbe zu multiplizieren o wenn Skalarprodukt negativ, zeigt dies an, dass das Dreieck von der Lichtquelle weg zeigt und im Schatten dieser Lichtquelle liegen sollte - um Flächennormale zu berechnen, nehmen Sie das Kreuzprodukt zweier Kanten der Fläche, nachdem alle Transformationen angewendet wurden - einfallende Lichtvektor 𝐼⃗ ist ein Vektor, der vom Flächenmittelpunkt 𝐶⃗ zur Lichtposition 𝐿⃗⃗ zeigt: 1.8 Begrenzungsrahmen (Bounding Box) - bis jetzt Algorithmus sehr ineffizient o testen jedes Pixel der Leinwand gegen jede Fläche, um zu bestimmen, ob es sich innerhalb befindet, was Ressourcen verschwendet, insbesondere bei kleinen Dreiecken im Leinwandraum - können die Anzahl der zu testenden Pixel begrenzen, indem wir nur die Pixel innerhalb eines Begrenzungsrahmens berücksichtigen, der die Fläche enthält - achsenparalleler Begrenzungsrahmen (Axis-Aligned Bounding Box, AABB) ist ein Rahmen mit Seiten, die parallel zu den Achsen des Koordinatensystems verlaufen - 2D-Begrenzungsrahmen benötigt nur zwei Koordinaten: die obere linke Ecke bboxmin und die untere rechte Ecke bboxmax o können bboxmin berechnen, indem wir die niedrigsten X- und Y-Werte der Flächen-Eckpunkte auswählen, und bboxmax, indem wir die höchsten X- und Y-Werte der Flächen-Eckpunkte auswählen 1.9 Tiefenbuffer (Deep buffer) - Frage, die das Rendering zu lösen versucht: Welches Dreieck ist sichtbar? - mehrere sich überlappende Dreiecke können sich dem Betrachter zuwenden, und Flächen können sich so überschneiden oder überlagern, dass Teile unterschiedlicher Flächen dem Betrachter am nächsten sind - für jede Fläche kann der Abstand zur Kamera für jeden Eckpunkt berechnet werden o dieser Abstand wird dann mithilfe baryzentrischer Koordinaten interpoliert, um den Abstand an jeder Position auf der Fläche zu bestimmen - wenn unser Rasterizer ein Dreieck füllt, muss er den nächstgelegenen Wert abrufen können, der für alle anderen Dreiecke berechnet wurde, die bereits verarbeitet wurden o dieser nächstgelegene Wert wird in einem Tiefenpuffer gespeichert, einem linearen Array mit den gleichen Abmessungen wie die Leinwand 1.10 Gouraud-Schattierung - können eine glatte Oberflächenoptik mit einer Technik erreichen, die erstmals vom französischen Informatiker Henri Gouraud beschrieben wurde - unsere bisherige einfache Beleuchtungstechnik berücksichtigt eine Oberflächennormale pro Fläche, was zu einem facettierten Aussehen führt - um sanften Übergang über die Fläche eines Dreiecks zu erzielen, müssen wir gemittelte Scheitelpunktnormale berechnen und diese dann interpolieren, um die Normale an jeder Position auf der Fläche zu bestimmen 1.10.1 Glätten der Normalen - über die gesamte Geometrie kann einmal durchgeführt werden und muss erfolgen, bevor Transformationen auf das Modell angewendet werden - geglättete Normale für einen Scheitelpunkt zu erhalten, summieren wir die Normalen aller Flächen, die den Scheitelpunkt verwenden, und normalisieren dann das Ergebnis - damit dies funktioniert, benötigen wir eine Liste für jeden Scheitelpunkt, die die Indizes der Flächen enthält, die diesen Scheitelpunkt verwenden 1.10.2 Transformation geglätteter Normalen - bevor Beleuchtung berechnen, müssen wir Transformationen auf die Normalen anwenden o Normalenvektoren müssen mithilfe der Transponierten der Inversen der Transformationsmatrix transformiert werden 1.10.3 Interpolieren geglätteter Normalen - anschließend interpolieren wir die neuen Scheitelpunkt-Normalen, indem wir jede Normale mit dem entsprechenden Gewicht aus den baryzentrischen Koordinaten multiplizieren - resultierenden Vektoren werden addiert und normalisiert - diese neue Normale wird dann in der Beleuchtungsberechnung verwendet 1.11 Perspective divide als Matrix - Grafik-APIs kapseln die perspektivische Teilung in einer Matrix: - Multiplizieren eines Vektors mit dieser Matrix ergibt einen homogenen Punkt, der ein Punkt mit vier Komponenten ist: - homogener Punkt kann in einen kartesischen Punkt umgewandelt werden, indem jede x, y und z-Komponente durch die vierte Komponente, üblicherweise als w bezeichnet, geteilt wird: 1.12 Projektionsmatrix: Ansichtspyramide zum Einheitswürfel - moderne Grafik-APIs erweitern das Konzept der Projektionsmatrix, indem sie die Ansichtspyramide in einen Einheitswürfel abbilden - Einheitswürfel ist viel einfacher zu handhaben, besonders wenn es darum geht zu bestimmen, was sich innerhalb der Ansichtspyramide befindet und somit sichtbar ist - Ansichtspyramide wird durch die Abstände zu den Nah- und Fern-Clipping- Ebenen n und f definiert - Abmessungen der Nah-Ebene werden mit Werten für links, rechts, oben und unten definiert: - Projektionsmatrix sieht folgendermaßen aus: - resultierende Raum ist ein Einheitswürfel, der als kanonischer Ansichtsraum bekannt ist. In diesem Raum wird die Fern-Ebene auf +1 und die Nah-Ebene auf −1 abgebildet - X- und Y-Koordinaten eines Punktes repräsentieren die projizierten Bildschirmkoordinaten und können für das Rendering in Rasterraum umgewandelt werden - Z-Wert repräsentiert die Tiefe des Punktes relativ zur Kamera und reicht von [−1,1] - aufgrund Projektionsmatrix wird dieser Tiefenwert nicht linear zu den ursprünglichen Tiefenwerten abgebildet o Objekte, die weiter von der Kamera entfernt sind, haben eine geringere Präzision in der Tiefe im Vergleich zu Objekten, die näher an der Kamera sind - Punkte im Sichtkegel (blau), Punkte transformiert in den kanonischen Ansichtsraum (grau) und eine Visualisierung der x- und y-Koordinaten der projizierten Punkte (orange) o Blau: Punkte innerhalb des Sichtkegels o Grau: Punkte nach der Transformation in kanonischen Ansichtsraum o Orange: zeigen die X- und Y-Koordinaten der projizierten Punkte, nachdem sie in den Bildschirmraum umgewandelt wurden 1.13 AABB/AABB-Schnittpunkt - Objekten im kanonischen Ansichtsraum können wir einfache Schnittpunkttests durchführen, um zu überprüfen, ob etwas sichtbar ist - Testen zweier achsenbündiger Begrenzungsrahmen (AABBs) auf Überlappung ist die einfachste Form des Schnittpunkttests - jeder AABB wird durch nur zwei Koordinaten definiert: - einfacher Überlappungstest für jede Komponente bestimmt, ob eine Schnittmenge entlang einer Achse existiert 1.13.1 Transformation eines AABB - initiale AABB wird berechnet, bevor eine Transformation angewendet wird. Die beiden Scheitelpunkte des AABB werden dann zusammen mit der Geometrie transformiert - da Transformationen Rotationen beinhalten können und die Projektionsmatrix beinhalten werden, ist der resultierende Begrenzungsrahmen im kanonischen Ansichtsraum nicht mehr achsenbündig - deshalb finale AABB neu berechnet werden (was sehr schnell ist, da es nur zwei Scheitelpunkte betrifft), bevor der Schnittpunkttest mit dem kanonischen Ansichtsraum durchgeführt wird 2 Lineare Algebra 2.1 Punkte und Vektoren - beide haben Matrix: (x, y, z) [x, y, z] = row major order (1x3) - andere Schreibweise: [ x, y, z ] , [x, = column major order (3x1) y, z] - Unterschied: o Punkt: Position in Raum o Vektor: Richtung und Länge, keine Position (Position ist Ursprungpunkt) Formel Rechen-Beispiele Vektor- ⃗⃗⃗⃗ 𝑃𝑡 = 2 ∗ (3, 4, 5) = (6, 8, 10) multiplikation (eine Zahl (t) multipliziert mit x, y, z) Vektor- Subtraktion Vektor- addtion Vector- Geg.: länge 1. Quadrate der Komponenten berechnen: 2. Quadrate addieren: 3. Ergebnis: Normalisier- ung Geg.: 1. Länge berechnen: 2. Länge in Formel einsetzen: Punktprodukt (Skalarprodukt) Geg.: 1. Multipliziere Komponenten: 2. Addiere die Produkte: 3. Ergebnis: 𝑎⃗ 𝑏⃗⃗ = −2 Geg.: Winkel zwischen 2 1. Punktprodukt beider Vektoren Vektoren berechnen: 2. Länge der Vektoren berechnen: 3. Punktproduktformel für den Winkel verwenden: 4. Gleichung nach cos auflösen: 5. Winkel berechnen: Kreuz- produkt Geg.: 1. Bestimme die Komponenten des neuen Vektors: 1 4 2. Berechne die Determinante: 3. Ergebnis: Matrizen- Pre-Multiplikation multipliaktion (Reihenmultiplikation) Geg.: 1. Berechne: 2. Ergebnis: Post-Multiplikation Geg.: (Spaltenmultiplikation) 1. Berechne: 2. Ergebnis: 2.1.1 Einheitsmatrix - alle Diagonalelemente: 1 - alle anderen Elemente: 0 - beliebige Matrix oder einen Vektor mit der Einheitsmatrix multiplizieren, bleibt die ursprüngliche Matrix oder der ursprüngliche Vektor unverändert o vergleichbar mit der Multiplikation einer Zahl mit 1 - Beispiel: 2.1.2 Skalierungsmatrix - jede Diagonalkomponente der Matrix ist der Skalierungsfaktor für die entsprechende Achse (x, y, z) - in diesem Beispiel: der Skalierungsfaktor 1.5 für jede Achse, was bedeutet, dass das Objekt in alle Richtungen um das 1,5-fache vergrößert wird - Beispiel: 2.2 Matrix Rotation - wird in der Computergrafik verwendet, um Objekte um eine bestimmte Achse im 3D-Raum zu drehen - 3x3-Rotationsmatrix beschreibt eine Rotation im dreidimensionalen Raum und ist ein wesentliches Werkzeug zur Transformation von Vektoren und Koordinatensystemen - Rotationsmatrix um X-Achse: - Rotationsmatrix um Y-Achse: - Rotationsmatrix um Z-Achse: - Beispiel: 2.3 Determinante - wenn mit einer Matrix multiplizieren (d.h. eine Transformation anwenden) - gibt uns die Determinante Auskunft über die Veränderung des Raums, die durch die Transformation verursacht wird - Determinante gibt nicht nur an, wie sich das Volumen ändert, sondern auch, ob die Transformation umkehrbar ist und ob sie eine Spiegelung beinhaltet - stellen uns ein Volumen zwischen Vektoren vor o wenn eine Transformation anwenden, ist die Determinante x, wenn sie das Volumen um den Faktor x verändert ▪ Wenn Volumen zu einer Ebene kollabiert, ist Determinante 0. Wir können die Transformation nicht umkehren und die Ebene wieder in das Volumen verwandeln. ▪ Wenn das Volumen durch die Transformation umgedreht wird, ist die Determinante negativ -> Skalierung und Spiegelung - Beispiel: o Skalierung: Wenn wir eine Matrix mit einer Determinante von 3 anwenden, wird das Volumen des Würfels auf das Dreifache seines ursprünglichen Volumens vergrößert. o Zusammenbruch in eine Ebene: Wenn die Determinante 0 ist, könnte der Würfel in eine flache Scheibe (oder eine andere zweidimensionale Form) verwandelt werden. Dies bedeutet, dass eine Dimension vollständig eliminiert wurde. o Spiegelung: Wenn die Determinante -2 ist, wird der Würfel nicht nur auf das Doppelte seines Volumens skaliert, sondern auch gespiegelt, was bedeutet, dass er „umgedreht“ wurde. 2.3.1 Berechnung: - 2x2 Matrix - 3x3 Matrix (nach Sarrus) - 4x4 Matrix (nach Laplace) + - + - + - + - + o 1 kann weggelassen werden, richte nach +/- Spalte 2.4 Inverse Transformation - Inverse einer Matrix als 𝑀−1 geschrieben - Multiplizieren einer Matrix mit ihrer Inversen hebt alle Transformationen auf, als ob keine Transformation stattgefunden hätte o Ergebnis des Produkts ist daher die Einheitsmatrix 1. Matrix der Minoren - Für jedes Element der Matrix A eine Untermatrix erstellen, indem die Zeile und Spalte dieses Elements streichen. - Berechnen Sie die Determinante dieser Untermatrix. Dies ist der Minor des Elements. 2. Matrix der Kofaktoren - Multiplizieren Sie jeden Minor mit , wobei i und j die Zeilen- und Spaltenindizes des Elements sind. o ergibt die Kofaktoren 3. Adjugate/Adjoint matrix - Matrix spiegeln 4. Elemente durch die Determinante der ursprünglichen Matrix teilen Beispiel: 3 Geometrie 3.1 Parametrische Oberfläche - in Computergrafik parametrische Oberflächen verwendet, um glatte und kontinuierliche Formen zu modellieren - parametrische Oberfläche kann durch Gleichungen mit zwei Parametern beschrieben werden o z.B. Kugel am Ursprung: o oder einen Torus: 3.2 Explizite Form - in Mathematik und insbesondere in der analytischen Geometrie beschreibt die explizite Form einer Gleichung eine Beziehung, in der eine Variable auf der linken Seite von einer unabhängigen Variable auf der rechten Seite abhängt - explizite Gleichung ist die Gleichung einer Geraden: 3.3 Implizite Form - beschreibt eine Beziehung zwischen Variablen, ohne zu sagen, welche von ihnen abhängt - sind nützlich in der Geometrie und Computergrafik, um Formen und Bereiche zu definieren und zu prüfen, ob Punkte darin liegen - Gleichung für eine Kugel im Raum: - Hier liegt ein Punkt p auf der Oberfläche der Kugel, wenn das Ergebnis der Funktion null ist: o Form ist nützlich, um zu prüfen, ob ein Punkt innerhalb oder außerhalb der Kugel liegt: 3.4 Polygon - ist eine Form, die aus Eckpunkten (Einzahl: Eckpunkt) besteht, die mit Kanten verbunden und mit einer Oberfläche "gefüllt" werden können, um eine Fläche zu definieren - einfachste Polygon ist ein Dreieck oder "tri" - vier Eckpunkte definieren ein Viereck, ein Quadrat oder einfach ein "Quad" o mehr Eckpunkte definieren n-Gone - 3D-Modell, das aus Polygonen besteht, wird oft auch als Netz bezeichnet - Flächen mit mehr als drei Eckpunkten können konvex oder konkav sein o während Dreiecke immer flach sind, können Polygone flach oder nicht- planar sein - Flächen können verbunden werden, um komplexe Formen zu definieren - dann die Flächen Eckpunkte teilen o so für einen Würfel 8 statt 24 Eckpunkte ausreichend - eine Kante nur zu einer Fläche gehört, ist die Kante eine Begrenzungskante o Begrenzung kann extern oder intern sein: Flächen mit Löchern haben interne Begrenzungen 3.5 Geometrieattribute - beliebige Daten mit Geometrie gespeichert und mit Flächen oder Eckpunkten verknüpft werden - häufigsten Daten sind Positionen und Normalen, die normalerweise als drei Fließkommazahlen gespeichert werden - Optionale Daten: Eckpunkt-Farben o eine Farbe pro Eckpunkt o kann über das Netz interpoliert werden 3.5.1 Texturkoordinaten - Satz von Koordinaten, der die Position eines Eckpunkts im Texturraum definiert - Texturraum befindet sich [0,0] in der unteren linken Ecke, [1,1] in der oberen rechten Ecke - X- und Y-Richtung dieses Raums u und v genannt und normalerweise als UV- Koordinaten bezeichnet o UV-Koordinaten werden verwendet, um Pixeldaten auf einer Fläche zu platzieren - mehrere Texturkoordinaten können gespeichert werden - dritte Koordinate w kann verwendet werden, um zu einer 3D-Volumen-Textur abzubilden - Texturkoordinaten oft manuell in einem Prozess namens UV-Mapping erstellt 3.5.2 Geschwindigkeit - Vektor, der die Richtung und Geschwindigkeit eines Eckpunkts angibt - kann in Simulationen oder beim Rendern für Bewegungsunschärfe verwendet werden - Attribut wird auf Netzen verwendet, wenn sich die Eckpunkte im Laufe der Zeit aufgrund von Transformationen oder Deformationen bewegen - kann berechnet werden, indem die Position eines Eckpunkts im Laufe der Zeit analysiert wird - Ausgabe von Simulationdaten, die in ein Netz konvertiert wurden (meshing), kann im Laufe der Zeit unterschiedliche Eckpunktzahlen aufweisen o typisch für Fluidsimulationen, bei denen eine Flüssigkeitsmasse in ein Netz zur Darstellung umgewandelt wird o kann das Geschwindigkeitsattribut nicht direkt aus den Eckpunktpositionen berechnet werden, da sich die Eckpunktzahl ändert - Geschwindigkeitsattribut wird normalerweise während der Simulation berechnet und während der Meshing auf die Eckpunkte geschrieben 3.5.3 Topologie - bezieht sich im Kontext von 3D-Modellen auf Eigenschaften und geometrische Merkmale eines Modells - beschreibt die Position und Anordnung geometrischer Komponenten wie Eckpunkte und Kanten - 3D-Modellieren bezieht sich Topologie in der Regel auf den Kantenfluss, der durch Kanten-Loops definiert ist 3.6 Manifold, 2-manifold, non-manifold - manifold surface eine Fläche ohne topologische Probleme o hat Begrenzungskanten oder -ränder o werden nicht von Dreiecken oder Polygonen gemeinsam genutzt - Manifold ohne Begrenzungen als 2-Mannigfaltigkeitsfläche bezeichnet o handelt sich um ein festes Objekt o 3D-Druck wird es auch als watertight (wasserdicht) bezeichnet - Non-manifold kann in der realen Welt nicht existieren o polygonalen Modellen führen die folgenden Situationen zu nicht- mannigfaltiger Geometrie: ▪ Eine Kante wird von mehr als zwei Flächen gemeinsam genutzt. ▪ Die Geometrie hat interne Flächen. ▪ Flächen teilen sich einen Eckpunkt, aber keine Kante. ▪ Benachbarte Flächen mit entgegengesetzten Normalen. 3.7 Normalen - ist ein Vektor, der senkrecht zu etwas steht - Flächennormale definiert die Ausrichtung einer Fläche in 3D und wird hauptsächlich für Licht- und Schattenberechnungen verwendet o Ausrichtung einer Fläche bestimmt, wie viel Licht zum Betrachter reflektiert wird o können auch aus dem Kreuzprodukt der Ableitungen einer Fläche berechnet werden: ▪ Tangenten- ▪ Bitangentenvektor o wenn Normale aus dem Kreuzprodukt berechnen, bestimmt die Händigkeit des Koordinatensystems die Ausrichtung der Normale - können pro Eckpunkt (Eckpunktnormalen) oder pro Fläche (Flächennormalen) definiert werden o für Lichtberechnungen normalerweise Eckpunktnormalen verwendet o Eckpunktnormalen interpoliert werden, um ein glattes Erscheinungsbild zu erzeugen, selbst wenn die Fläche flach ist - Wickelreihenfolge/winding order (im Uhrzeigersinn oder gegen den Uhrzeigersinn) definiert die Reihenfolge, in der Eckpunkte gelesen werden, um Kanten zu bilden, die eine Fläche formen o Reihenfolge kann beispielsweise in einer Datei definiert werden o bestimmt die Ausrichtung der Normale - können auch aus dem Kreuzprodukt der Ableitungen einer Fläche berechnet werden: dem Tangenten- und dem Bitangentenvektor o wenn aus dem Kreuzprodukt berechnen, bestimmt die Händigkeit des Koordinatensystems die Ausrichtung der Normale 3.7.1 Transformation von Normale - Normalen normalerweise benutzerdefiniert und gehören zu einem 3D-Modell - besonders bei Low-Poly-Echtzeitmodellen (Geometrien mit einer geringen Polygonanzahl) Eckpunktnormalen verwendet, um die Schärfe von Ecken zu definieren, ohne zusätzliche Geometrie hinzuzufügen o Probleme bei der Transformation eines Modells auftreten o Normalen nicht auf die gleiche Weise wie die Eckpunkte transformiert werden o besonders Transformationen, die nicht-uniforme Skalierungen beinhalten, führen zu falschen Normalenrichtungen: Normale steht nicht mehr senkrecht zur Fläche ▪ kann leicht behoben werden, indem ein Normalenvektor mit der Transponierten der Inversen der Transformationsmatrix transformiert wird: 3.8 Baryzentrische Koordinaten - Positionen innerhalb eines Dreiecks mit 2D-Koordinaten u und v ausgedrückt werden, die als baryzentrische Koordinaten bezeichnet werden - wenn jedes Eckpunkt eines Dreiecks Attribute wie Farbe, Texturkoordinaten oder Normalen hat, können diese Attribute an jedem Punkt innerhalb des Dreiecks interpoliert werden - Punkte befinden sich innerhalb des Dreiecks, wenn u ≥ 0 und v ≥ 0 und u + v ≤ 1 - Dreieck als ein 2D-Koordinatensystem betrachtet werden, bei dem ein Scheitelpunkt den Ursprung darstellt und zwei Seiten als Basisvektoren dienen o u und v skalieren diese Vektoren o durch Hinzufügen dieser Vektoren bewegen wir uns entlang der beiden Achsen 3.9 Gängige Dateiformate für Geometrie - Wavefront obj o ist ein altes, aber weit verbreitetes Dateiformat, das nur Geometrie und Materialien speichert o handelt sich um eine menschenlesbare Textdatei, die Datenarrays speichert, wobei jedes Array-Element in einer neuen Zeile steht - Autodesk fbx - Alembic - abc - OpenVDB - Pixar universal scene description – usd o ist nicht nur ein Dateiformat, sondern eine vollständige Inhaltsentwicklungspipeline, die es mehreren Benutzern ermöglicht, mit 3D-Geometrie und anderen Elementen einer Szene (Lichter, Kameras) zu interagieren - Khronos Group glTF 4 Euklidischer Raum und kartesisches Koordinatensystem - Euklidischer Raum = physikalischer Raum - Kartesisches Koordinatensystem = System zur Bestimmung von Punkten im Raum durch Zahlenpaare oder -tripel, die als Koordinaten bezeichnet werden - im Computergrafik: o euklidischen Raum und das kartesische Koordinatensystem, um Objekte im Raum zu positionieren und zu manipulieren o jeder Punkt im euklidischen Raum als Ursprung für ein Koordinatensystem -> Positionen von Objekten relativ zu diesem Punkt 4.1 Basisvektoren - - Basisvektor: stellen fertiges Koordinatensystem dar - jeder Vektor beschreibt die Richtung einer Achse des Koordinatensystems und welche Länge als 1 Einheit betrachtet wird - zum Beispiel in Blender, damit wir 3D Objekt visualisieren können - bei Visualisieren eines Vektor in Koordinatensystem, multiplieren Vektor mit Basisvektor Formel Rechen-Beispiele Visualisieren Geg.: Basisvektoren: 4.2 Transformationmatrix & lineare Transformation - Transformation = andere Wort für Funktion oder Formel o gibt Daten ein und erhält ein Ergebnis - ist linear, da alle Linien Linien bleiben, parallele Linien bleiben parallel und Ursprung bleibt fest im Raum 5 Raytracing - Rendering: Pixel in Daten generieren - Strahlen von Kamera in Raum senden und sehen, was getroffen wird o auch bildzentriert (image-centric) genannt - stimuliert Lichtstrahlen, sendet von der Kamera und berücksichtigt Effekte wie Reflexionen, Brechungen und Schatten - allerdings zeitaufwendig, rechenintensiv, benötigt leistungsstarke Hardware und langsamer als Rasterization 1. Strahlgenerierung: - jeden Pixel des Bildschirms ein Strahl von der Kamera durch diesen Pixel in die Szene gesendet (rote Pfeile) - Schnittpunktsuche: o wird überprüft, ob und wo dieser Strahl ein Objekt in der Szene trifft o dabei oft mathematische Gleichungen zur Berechnung der Schnittpunkte verwendet 2. Normale berechnen: - Normale am Schnittpunkt wird berechnet (grüner Pfeil) - gibt die Richtung an, die senkrecht zur Oberfläche der Kugel an diesem Punkt ist 3. Lichtstrahl (Schattenstrahl): - vom Schnittpunkt ein neuer Strahl zur Lichtquelle gesendet, um zu überprüfen, ob der Punkt im Schatten liegt (ob ein anderes Objekt den Lichtstrahl blockiert) (blaue Linien) 4. Beleuchtungsmodell anwenden: - berechnet die Helligkeit und Farbe des Punktes basierend auf Umgebungs-, diffusem und spekularem Licht 5.1 Schnittpunkttest (Intersection-Test) - bei Raytracing virtuelle Objekte in virtuelle Welt platzieren o einfachste Objekt: Kugel o Kugel benötigt Position und Radius, um jeden Punkt auf Oberfläche zu definieren - Überprüfung, ob Strahl (Ray) auf Kugel trifft -> Schnittpunkttest - kann 3 Ergebnisse haben: o Der Strahl trifft die Kugel und schneidet sie an der Vorder- und Rückseite. o Der Strahl trifft die Kugel genau einmal, wenn er genau tangential zur Oberfläche verläuft. o Der Strahl trifft die Kugel überhaupt nicht. - in Mathematik: quadratische Formel – kann 2, 1 oder gar keine Lösung haben Wende diese Formel an. Ist die Diskriminante (unter Wurzel) 𝑏2 − 4𝑎𝑐 - positiv = 2 Lösungen = Strahl schneidet an Vorder- und Rückseite - null = 1 Lösung = Strahl trifft die Kugel einmal - negativ = keine Lösung = Strahl trifft gar nicht Bevor diese Rechnung eingesetzt wird, musst noch die Gleichung der Kugel und Strahl beschrieben werden. Gleichung des Strahls: t>0 D⃗ O⃗ t=0 t als isotrop bezeichnet - Verteilung, die eine bestimmte Richtung bevorzugt, nennt man anisotrop - Variation in der Normalenausrichtung wird durch den Rauheitswert (manchmal auch Glätte oder Glanz) ausgedrückt - Erhöhung der Rauheit erhöht die Streuung der Normalen und führt zu einem verschwommenen spiegelnden Highlight - da gleiche Energiemenge in mehr Richtungen verteilt wird, erscheint das Highlight gedämpfter - glatte Oberflächen mit niedrigen Rauheitswerten haben fokussierte Reflexionen mit höheren Intensitäten - Normalenverteilungsfunktion (NDF) eine Funktion, die die Ausrichtung der Mikrofacetten-Normalen beschreibt und ein Gewicht zurückgibt, das die Helligkeit der Reflexion skaliert - einige gängige Verteilungsfunktionen sind: o Phong-Verteilung o Beckmann o Ward o Cook-Torrance o GGX - auf Facettenebene umfassen andere Wechselwirkungen Abschattung, Maskierung und Interreflexion o werden als Funktionen implementiert, die den Anteil der Mikrofacetten zurückgeben, die aus einer bestimmten Blickrichtung sichtbar sind 9.4 Fresnel - Menge des reflektierten Lichts im Vergleich zur Menge des übertragenen Lichts an einer Grenzfläche hängt vom Einfallswinkel und dem Brechungsindex (IOR) der beteiligten Medien ab o dies durch die Fresnel-Gleichungen beschrieben o bezeichnet als F - kleinerer Einfallswinkel führt zu mehr durchgelassenem Licht - größerer Einfallswinkel reflektiert mehr Licht - sehr schrägen Winkeln erhöht der Fresnel-Effekt die Reflexion bis zu 100 % - F0 oft als Fresnel-Nullpunkt oder Basisreflektivität bezeichnet, da es die Reflexivität beschreibt, die nicht durch den Fresnel-Effekt reduziert wird - Fresnel-Reflexionswerte sind gemessene Realwert für Dielektrika und Metalle - Gesetz der Energieerhaltung besagt, dass die Summe des übertragenen und des reflektierten Lichts der Menge des einfallenden Lichts entsprechen sollte 9.5 Oberflächentypen - in reale Welt lassen sich in drei Kategorien einteilen: o Elektrische Leiter (Leiter): ▪ leiten Elektrizität, z.B. Metalle ▪ haben eine hohe Reflexion o Dielektrika/Isolatoren: ▪ leiten keine Elektrizität ▪ haben eine hohe oder niedrige Reflexion, je nach Material o Halbleiter: ▪ diese Materialien liegen zwischen Leitern und Isolatoren - für Dielektrika beträgt Reflexion normalerweise zwischen 2% und 5% bei F0 (Normalincidenz) - für Metalle die Streuung unterhalb der Oberfläche ignoriert, daher kommt die Farbe ausschließlich durch Reflexion zustande o restliche Licht wird absorbiert und in Wärme umgewandelt o Metalle Reflexionsraten von 50% bis über 90% bei F0 (Normalincidenz) 9.6 Reflexion und Brechung - Licht an Grenzfläche entweder reflektiert oder gebrochen - reflektiertes Licht zurück in dasselbe Medium gelenkt - externe Reflexion o Reflexion an einer Grenzfläche, bei der der Brechungsindex des Mediums, aus dem das Licht stammt, niedriger ist (z.B. Luft zu Wasser) - interne Reflexion o Reflexion an einer Grenzfläche, bei der der Brechungsindex des Mediums, aus dem das Licht stammt, höher ist (z.B. Wasser zu Luft) - gebrochenes Licht entweder absorbiert oder transmittiert o absorbiertes Licht wird in Wärme umgewandelt o transmittiertes Licht kann gestreut werden ▪ wenn das transmittierte Licht unverändert auf der Rückseite austritt, ist das Medium transparent ▪ wenn das transmittierte Licht nach Streuung austritt, ist das Medium transluzent - Dicke eines Mediums erhöht sowohl die Streuung als auch die Absorption 9.6.1 Retroreflexion - ist Licht, das zurück zur Lichtquelle reflektiert wird 9.6.2 Spekulare Reflexion - ist die spiegelartige Reflexion von Licht - hängt stark vom Betrachtungswinkel ab - spekulare Farbe von Dielektrika (nichtmetallische Materialien) entspricht in der Regel der Farbe des einfallenden Lichts - bei Metallen die spekulare Farbe durch das Material selbst beeinflusst werden, was zu farbigen Reflexionen führt, wie dem goldenen Schimmer bei Gold - Beispiel: Spiegel 9.7 Diffuse Reflexion - ist die Reflexion unabhängig vom Betrachtungswinkel - Licht wird von der Oberfläche in alle Richtungen reflektiert oder es kann in ein Medium eintreten und nach Streuung in zufälligen Richtungen wieder austreten - dieser Prozess bestimmt die wahrgenommene Farbe eines Objekts 9.7.1 Albedo - Anteil des diffus reflektierten Lichts wird als Albedo bezeichnet - schwarzer Körper absorbiert alle Strahlung und hat daher eine Albedo von 0 o Kohle nahezu 0 - Schnee beträgt die Albedo etwa 0,8 9.8 Bidirectional Reflectance Distribution Function (BRDF) - ist eine Funktion, die beschreibt, wie Licht reflektiert wird - nimmt die Winkel des einfallenden und ausfallenden Lichts und gibt das Verhältnis der austretenden (reflektierten) Strahlungsleistung zur eingestrahlten Strahlstärke zurück - Funktion betrachtet die Lichtwechselwirkung nicht an einem einzelnen Punkt, sondern über eine kleine Oberfläche, die als differentielle Fläche bezeichnet wird o Fläche ist klein genug, dass es keine signifikante Variation im Strahlungsfluss über sie gibt - gemeinsame Parameter einer BRDF: o eintreffende Energie o Richtung zum Licht o Oberflächennormale o Richtung zum Betrachter - Komponenten einer BRDF: o Fresnel-Funktion o Normalverteilungsfunktion o Geometrische Maskierungs-/Schattenfunktion o Mehrfachstreuung/Interreflexion zwischen Mikrofacetten - BRDF kann als 3D-Form visualisiert werden, indem man einen Raum um das gesamte reflektierte Licht schafft o resultierende 3D-Körper wird als Lappen (lobe) bezeichnet ▪ lambertsche BRDF ist ein einfaches Halbkugel-Lappen 9.9 BSDF - Bidirectional Scattering Distribution Function (BSDF) ist ein allgemeiner Begriff, der Implementierungen beschreibt, die Funktionen zur vollständigen Beschreibung von Materialien kombinieren - Beispiel: o reflektiertes und transmittiertes Licht mit BRDFs und BTDFs kombiniert werden - Disney-Prinzipmodell für Schattierung ist eine BSDF und eine häufige Implementierung in den meisten 3D-DCC-Apps 9.10 Klassische Schattierungsmodelle 9.10.1 Lambert - Lambertianische Schattierungsmodell, auch Lambert'sche Reflexion oder lambertsche Oberfläche genannt, reflektiert Licht gleichmäßig in alle Richtungen - Leuchtdichte ist unabhängig von der Betrachtungsrichtung - handelt sich um ein einfaches Schattierungsmodell für perfekte diffuse Reflexion 9.10.2 Phong - berechnet sowohl diffuse als auch spekulare Reflexion - rauere Oberflächen verteilen die Intensität der Highlights und die spekularen Highlights werden schwächer - Betrachtungsvektor muss nicht genau parallel zum Reflexionsvektor sein - ist nicht physikalisch basiert; das Aussehen wird durch Versuch und Irrtum bestimmt - ersetzt durch moderne Modelle 9.10.3 Blinn-Phong - ist eine Erweiterung des Phong-Modells - anstatt das Skalarprodukt von reflektiertem und Betrachtervektor zu berechnen, führt es den Halfway-Vektor ein, der ein Einheitsvektor ist, der genau in der Mitte zwischen dem einfallenden Licht und der Betrachterrichtung liegt - je näher er der Oberflächennormalen ist, desto größer ist der spekulare Beitrag - Halfway-Vektor kann einfach berechnet werden, indem der Einfallswinkel und der reflektierte Vektor addiert werden - wurde größtenteils durch moderne Modelle ersetzt, wird aber noch auf Geräten mit begrenzter Leistung verwendet 9.11 Physically Based Rendering (PBR) - vor der Einführung von PBR verwendeten Künstler Texturen, um die Lichtwechselwirkung von Oberflächen anzunähern - normalerweise dasselbe Material für unterschiedliche Beleuchtungsszenarien angepasst werden, um gut auszusehen - mit PBR sind die physikalischen Eigenschaften nicht mehr Aufgabe des Benutzers/Künstlers o da physikalisch basiert ist, sind Materialien unabhängig von den Lichtverhältnissen genau - ist hervorragend für Fotorealismus geeignet, ermöglicht jedoch auch künstlerische Gestaltungsmöglichkeiten und Abweichungen vom Realismus, wie es in der Animation der Fall ist