Computergraphik - WS 23/24

Diese Vorlesung soll eine Einführung in die theoretischen und methodischen Grundlagen der Computergraphik geben, als auch die Grundlagen für die praktische Implementierung von computergraphischen Systemen legen.

Der Schwerpunkt liegt auf Algorithmen und Konzepten zur Repräsentation und Visualisierung von polygonalen, 3-dimensionalen graphischen Szenen. Die Übungsaufgaben werden teils theoretisch, teils praktisch sein, wobei die praktischen Aufgaben gewisse Programmierfähigkeiten in C++ verlangen. Ich empfehle den Besuch des "Propädeutikums C/C++" vor der Computergraphik-Vorlesung. Die theoretischen Aufgaben setzen teilweise einfache Matrix-Vektor-Rechnung voraus.

Bemerkung: in der Vorlesung wird nicht die Benutzung von fertiger Software zur Modellierung, Animation, oder Bildbearbeitung (z.B. Photoshop, Blender, Maya, Cinema4D, etc.) behandelt! Wir beschäftigen uns mit den Algorithmen, die hinter diesen Programmen stecken.

Aus dem Inhalt:

  1. Gerätetechnische Grundlagen
  2. Mathematisch-geometrische Grundlagen
  3. OpenGL und die programmierbare Pipeline (evtl. auch C++ Wiederholung)
  4. 2D Algorithmen der Computergraphik (Scan Conversion, Visibility Computations, etc.)
  5. Theorie der Farben und Farbräume
  6. 3D Algorithmen der Computergraphik (Transformationen, Beleuchtung, etc.)
  7. Texturierung
  8. Techniken zum Echtzeit-Rendering

Aktuelles

Achtung Raumänderung: der Slot am Donnerstag 10 ct findet ab jetzt in MZH 5500 statt!

CG1 Discord: https://discord.gg/YGUZFxf

Klausur: Di., 05.03.2024, 10:00 Uhr, Raum GW1 - HS H0070

Folien

Die folgende Tabelle wird die behandelten Themen und die dazugehörigen Folien, Übungsaufgaben enthalten. Die Spalte "Video" enthält gelegentliche Videos, die ihr bitte vorab zur Vorbereitung eines bestimmten Kapitels anschauen mögt (ich kündige diese im Normalfall an).
Beachte: Die Videos im H.265/HEVC Codec (mp4 Container) laufen im Safari, die im VP9 Codec (webm Container) laufen in allen Browsern. (H265 läuft unter Windows in Edge nur buggy.) Zur Not muss man sie zuerst herunterladen (rechts-klick) und mit VLC abspielen.

Woche Thema Folien Video Übungsaufgaben Frameworks
1. Organisation, Einführung, kurze Geschichte der CG (darf man auslassen),
Display-Technik: Display-Technologien (CRT, LCD, DLP), Raster- und Vektor-Graphik, der Frame-Buffer, Video-Controller und Videosignale, color lookup table, Buffering-Varianten (double buffering, triple buffering), Synchronisation-Verfahren (VSYNC, GSYNC, et al.), Critical Flicker Frequency, Gammakorrektur
PDF1 PDF2 H265 VP9
H265 VP9
Blatt 1 Tutoriumsfolie + Installationshinweise
Video CMake+Visual Studio
Beispielprojekt
ImageEditing
CppCrashCourse
Video CppCrashCourse
2. Geometrie: geometrische Bedeutung des Skalar- und Kreuzproduktes, Konstruktion eines Koordinatensystems, Flächeninhalt von Dreieck und Polygonen, geometrische Prädikate, Konvexität, Volumen von Spat und Tetraeder, parametrische Darstellung von Linie und Ebene, lineare Interpolation, implizite Ebenengleichung, Dreiecke. PDF H265 VP9 Blatt 2 VectorsAndMatricesFramework
C++ Hinweise
Hinweise Blatt 2
3. Graphik-Pipeline & OpenGL: Übersicht über die Graphik-Pipeline, Sichtweisen der Pipeline (Operationen, Datenfluß, Shader-Stufen), fixed-function pipeline, programmable pipeline, immediate mode versus retained mode, vertex array objects, vertex buffer objects. PDF H265 VP9 Blatt 3 HelloTriangleFramework
Tutorial VAO/VBO
C++ Hinweise
4. Shader Programming: vertex processor, fragment processor, Einführung in GLSL Uniform- und Attribut-Variablen, einfache Beipsiele, Geometrie-Modifikation, Toon- and Gooch-Shader.
Transformationen: Koordinatensysteme und Transformation in der Pipeline, Prinzip der Animation, elementare Transformationen: Rotation, Skalierung, Scherung, Spiegelung, Translation, affine Abbildungen, homogene Koordinaten,
PDF1 PDF2 H265 VP9
H265 VP9
Blatt 4 ShaderFramework
GLSL Hinweise
5. Transformationen: row-major/column-major, Concatenation, Transformation von Normalen, starre Transformationen, relative Bewegungen, hierarchische Transformationen, Objekthierarchien und Matrix-Stack, Beispiel-Anwendung: Hand-Eye Calibration.
Rasterisierung von Linien und Anwendungen: gitterbasierter Floating-Point-Algorithmus, Interpolation entlang der Linie, Anwendung auf Continuous Collision Detection mit Voxmap-Pointshell-Verfahren,
PDF1 PDF2 Blatt 5
BillardFramework
6. Baryzentrische Koordinaten: baryzentrische Kombinationen, affine Abbildungen, konvexe Hülle, Isolinien der baryzentrischen Koordinaten in einem Dreieck, Berechnungsmethoden, baryzentrische Interpolation, Anwendungen: Punkt-in-Dreieck-Test, Rasterisierung Dreiecke (Algo von Pineda), Kürzeste Distanz Punkt-Dreieck, Dreieck-Dreieck-Schnittest, Mesh Simplification PDF Blatt 6 RasterFramework
7. Visibility Computations: Occlusion vs Culling, Painter's Algorithm, Z-Buffer, Interpolation der Z-Werte, Z-Fighting, Depth-of-Field Rendering, Depth Complexity & Overdraw, Performance-Trick "Early Z-Pass", transparente Obj.e mit Alpha-Blending, Object-Space- & Image-Space-Algorithmen, BSP-Tree (Aufbau, depth sorting, triangle splitting), Warnock-Algorithmus, Quadtree und Octree, der Stencil-Buffer, Shadow-Volumes, Rendering von Schatten mittels Shadow-Volume-Technik und Stencil-Buffer. PDF H265 VP9
H265 VP9
Blatt 7 BarycentricFramework
8. Projektionen & Perspektive: Kamera-Transformation, orthographische Projektion, perspektivische Projektion, Eigenschaften der perspektivischen Projektion, (allgemeine projektive Abbildungen), Multi-Perspective
Farben: Licht, Lichtquellen, Lichtquellen-Parameter, Chromatizität, Reflectance spectrum, Aufbau des Auges, Human Spectral Sensitivity, wahrgenommener Stimulus, Metamere, Grassmann'sche Experimente und Gesetze,
PDF1 PDF2 H265 VP9 Blatt 8
BspFramework
9. Farben (cont'd): wahrgenommene Gleichheit von Spektren, die "Sensor-Abbildung", Farb-Basis-Wechsel, Definition des Begriffes "Farbe", die Matching Curves, CIEXYZ-Farbraum, Chromatizitätsdiagramm, Gamut, Gegenfarbenmodell, Farbraum/Farbmodell, Farbmodelle RGB, CMY, HSV, HSL, Color-Maps, Interpolation von Farben, Abstand zwischen Farben, uniforme Farbräume, der CIE Lab-Farbraum, Farbtransfer (von source auf target image). PDF Blatt 9
10. Lighting & Shading: Arten von Lichtquellen, diffuse Reflexion, spiegelnde Reflexion, Phong-Beleuchtungsmodell, Blinn-Phong-Modell, BRDF's, Lafortune-Modell, Disney-Shading-Modell, Flat-/Gouraud-Shading, Per-Pixel-Lighting/-Shading, deferred shading,
Rotationen allgemein: Euler-Winkel, Gimbal Lock,
PDF PDF2 H265 VP9 Blatt 10 LightingFramework.zip
12. Rotationen allgemein: Euler-Winkel, Gimbal Lock, Rotation um beliebige Achse mittels Basiswechsel, Berechnung einer Rot.matrix für beliebige Achse im Raum, Zusammenhang zwischen orthogonalen Matrizen und Rotationen, Quaternionen, Darstellung und Durchführung von Rotationen mittels Quaternionen, Interpolation von Orientierungen mittels Quaternionen, virtueller Trackball,
Texturierung: Grundbegriffe, diskrete & prozedurale Texturen, formale Definition, Texturkoordinaten (stückweise lineare Parametrisierung), Texturkoordinaten-Interpolation (nur linear), Modulation der Beleuchtung durch Texturen, Modulation der Transparenz (alpha map), Teztur-Interpolation, MIP-Mapping,
Raytracing Grundzüge: forward mapping vs. inverse mapping, die rekursive Rendering Equation, Whitted-style Raytracing, ray tree, pin-hole camera model, Sekundärstrahlen, Schnittberechnung Strahl-Polygon, odd-even Test für Punkt-in-Polygon
PDF1 PDF2 PDF3 H265 VP9
12. Texturierung (Fortsetzung): Bump Mapping, Normal Maps, Textur-Interpolation, MIP-Maps, 2-stufige Parametrisierung mittels Hüllkörper PDF PDF2
Tips für Prüfungsvorbereitungen
Allgemeine Ankündigungen
Konkrete Hinweise zur CG1-Klausur - Achtung: die zugehörige Video-Aufnahme hat keinerlei offiziellen Charakter! Wenn ein Thema aus der Vorlesung hier nicht angesprochen wurde, kann es trotzdem durchaus in der Klausur/Prüfung vorkommen!
PDF1 PDF2 PDF3 PDF4
0.

Beachte: Folien, die mit "FYI" markiert sind, sind nicht klausurrelevant. Ebenso gilt: klausurrelevant sind genau diejenigen Themen, die in der obigen Tabelle aufgelistet sind.

Die Shader-Programme aus der Vorlesung als ShaderLabWeb-Projekte. Installation: die Docker App intallieren; nach dem ersten Start von Docker folgende beiden Kommandos in der App ausführen: docker pull biomediaicl/shaderlabweb_webgl2 und docker run -p 80:3000 -d -t biomediaicl/shaderlabweb_webgl2; dann den Container hardcore_tu starten (dieser lässt in einer VM einen lokalen Web-Server laufen); dann im Browser in der Adresszeile localhost eingeben; dann mit dem "Upload"-Button eines der ShaderLabWeb-Projekte als ZIP-Archiv "hochladen".

Der Source Code der GLSL-Shader Beispiele aus der Vorlesung, jeweils als stand-alone C-Programm zum "normalen" Compilieren. Diese basieren auf Qt und können mittels qmake und make compiliert werden. Enthalten im ZIP-Archiv:

All demos should compile and run out-of-the-box under Linux and macOS. Some shaders don't come with their own, stand-alone program, you have to load them in a shader IDE (such as ShaderFrog oder SHADERed).

Video-Aufzeichnungen der Vorlesung vom WS 20/21

Die folgenden Video-Aufeichnungen sind als Hilfe für eure Prüfungsvorbereitung gedacht. Die definitive Liste der Themen für die Klausur/Prüfung ist obige Tabelle!

Die Videos gibt es sowohl als H.265/HEVC, als auch als VP9 Codec. Sie sollten damit, die eine oder andere Version, in jedem Browser und in VLC laufen.

Kapitel Videos
Einführung, Display-Technik, Gamma-Korrektur H265 VP9
Recap Geometrie H265 VP9
Die Graphik-Pipeline, OpenGL H265 VP9
Einführung in GLSL H265 VP9
Transformationen H265 VP9
Scanline-Konvertierung und Anwendungen H265 VP9
Baryzentrische Koordinaten H265 VP9
Visibility computations, reflections, shadows H265 VP9
Farben und menschliche Wahrnehmung H265 VP9
Lighting and Shading H265 VP9
Allgemeine Rotationen H265 VP9
Texturen H265 VP9
Tips fuer die Pruefungsvorbereitung
Infos zum Schwerpunkt VMC
Call for Theses at CGVR
Tips H265 Tips VP9
Schwerpunkt H265 Schwerpunkt VP9
Call H265 Call VP9

Video-Aufzeichnungen der Vorlesung vom WS 17/18 aus dem Hörsaal findet ihr hier (zum Download). und hier (im Browser)

Literatur

Folgende Literatur eignet sich als begleitende Literatur:

Falls Sie sich diese Bücher anschaffen möchten sollten Sie vielleicht überlegen, gebrauchte Exemplare zu erwerben -- oft gibt es diese zu einem Bruchteil des Neupreises. Drei gute Internetadressen sind abebooks, Booklooker, und ZVAB.

Hinweise zur Klausur

Die Klausur ist "closed book, open notes", d.h., während der Klausur sind erlaubt:

Außer diesen Dingen darf sich sonst nichts auf dem Tisch befinden, insbesondere nicht erlaubt sind:

Hier findet Ihr einige Probeklausuren. (Etliche sind auf Englisch, die richtige Klausur wird natürlich auf Deutsch sein.) Der ZIP-File ist Passwort-geschützt -- Ihr bekommt das Passwort von Eurem Tutor oder Professor.
Bitte lasst euch nicht von einer eventuell leicht abweichenden Terminologie irritieren. Es gilt in der Klausur immer die Terminologie, die ich eingeführt habe. Lasst Euch bitte auch nicht von der Fülle der Probeklausuren einschüchtern. Ihr müsst sicherlich nicht alle durchrechnen, um fit zu werden.

Online Literatur und Links zum Programmieren in C/C++ und in OpenGL

Online Literatur und Resources zu Themen der Vorlesung

Tools and Demos

Lern-Videos, und unterhaltsame Videos

Literatur und Infos, die nichts mit Computergraphik zu tun haben

Gabriel Zachmann
Last modified: Thu Jan 25 15:33:39 MET 2024