Computergraphik - WS 20/21

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. Mathematische Grundlagen
  3. OpenGL 3 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

Hybrid teaching mode this year! Students can choose to attend physically in the class room, or join via Zoom.
Zoom: the link will be announced in an email via Studip.
Twitch: join the channel https://www.twitch.tv/gabzach
Technische "Sprechstunde" auf Discord: https://discord.gg/YGUZFxf
Wöchentlich: Dienstag 13:00-14:00 Uhr, Donnerstag 16:00-17:00 Uhr

Achtung: Terminänderung!
Klausur: 11. 5. 2021, 10:00, in HS 2010 (Großer Hörsaal)

Folien

Die folgende Tabelle wird die behandelten Themen und die dazugehörigen Folien enthalten.

Woche Thema Folien Übungsaufgaben Frameworks
1. Organisation, Einführung, Geschichte,
Display-Technik: Display-Technologien (CRT, LCD, DLP),
PDF1
PDF2
Blatt 1 Qt5 Installationsanleitung
OpenGL 3 Qt Example
Sphere Flake Example
2. Display-Technik 2: 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.), PDF Blatt 2 Matrix
3. Display-Technik 3: Critical Flicker Frequency, Gammakorrektur
Geometrie 1: geometrische Bedeutung des Skalar- und Kreuzproduktes, Anwendung Umkugel zu 3 Kugeln, Konstruktion eines Koordinatensystems, Flächeninhalt von Dreieck und Polygonen,
PDF Blatt 3 Edges
4. Geometrie 2: geometrische Prädikate, Konvexität, Volumen von Spat und Tetraeder, parametrische Darstellung von Linie und Ebene, lineare Interpolation, implizite Ebenengleichung, Dreiecke.
Pipeline & OpenGL: Übersicht über die Graphik-Pipeline, Sichtweisen der Pipeline (Operationen, Datenfluß, Shader-Stufen).
PDF Blatt 4 ShaderIntro
5. Pipeline & OpenGL: fixed-function pipeline, programmable pipeline, Shader-Programme, immediate mode versus retained mode, vertex array objects, vertex buffer objects.
Shader Programming: vertex processor, fragment processor, Einführung in GLSL, Uniform- und Attribut-Variablen, einfache Beipsiele, Geometrie-Modifikation, Toon- and Gooch-Shader.
PDF Blatt 5
6. Rasterisierung von Linien: gitterbasierter Floating-Point-Algorithmus, Interpolation entlang der Linie, Anwendung auf Raycasting zum Terrain-Rendering, Anwendung auf Continuous Collision Detection mit Voxmap-Pointshell-Verfahren, PDF Blatt 6
7. Baryzentrische Koordinaten: baryzentrische Kombinationen, affine Abbildungen, konvexe Hülle, Isolinien der baryzentrischen Koordinaten in einem Dreieck, Berechnungsmethoden, baryzentrische Interpolation, Anwendungen: Kürzeste Distanz Punkt-Dreieck, Punkt-in-Dreieck-Test, Dreieck-Dreieck-Schnittest, PDF Blatt 7 DoF_Framework
8. Visibility Computations: Painter's Algorithm, Z-Buffer, Interpolation der Z-Werte, Z-Fighting, Depth-of-Field Rendering, Depth Complexity & Overdraw, Hierarchischer Z-Buffer, PDF
9. Visibility Computations 2: Performance-Trick "Early Z-Pass", Stencil-Buffer, Rendering von Spiegeln mittels Stencil-Buffer, Shadow-Volumes, Rendering von Schatten mittels Shadow-Volume-Technik und Stencil-Buffer. PDF
10. Transformationen: Koordinatensysteme und Transformation in der Pipeline, Prinzip der Animation, elementare Transformationen (Rotation, Skalierung, Scherung, Spiegelung, Translation), Concatenation, Euler-Winkel, Gimbal Lock, Rotation um beliebige Achse mittels Basiswechsel, Zusammenhang zwischen orthogonalen Matrizen und Rotationen, Quaternionen, Darstellung und Durchführung von Rotationen mittels Quaternionen, Interpolation von Orientierungen mittels Quaternionen, virtueller Trackball, affine Abbildungen, homogene Koordinaten, starre Transformationen, Berechnung einer Rot.matrix für beliebige Achse im Raum, relative/hierarchische Transformationen, Objekthierarchien und Matrix-Stack, PDF Blatt 8 Billiard
11. Farben: Licht, Lichtquellen, Lichtquellen-Parameter, Chromatizität, Reflectance spectrum, Aufbau des Auges, Human Spectral Sensitivity, wahrgenommener Stimulus, Metamere, Grassmann'sche Experimente und Gesetze, wahrgenommene Gleichheit von Spektren, die "Sensor-Abbildung", Definition des Begriffes "Farbe", die Matching Curves, CIEXYZ-Farbraum, Chromatizitätsdiagramm, Gamut, Gegenfarbenmodell, Farbmodelle RGB, CMY, HSV, HSL, Color-Maps, Interpolation von Farben, Abstand zwischen Farben, uniforme Farbräume, CIE Lab-Farbraum, PDF Blatt 9
12. Lighting & Shading: Arten von Lichtquellen, diffuse Reflexion, spiegelnde Reflexion, Phong-Beleuchtungsmodell, Blinn-Phong-Modell, BRDF's, Lafortune-Modell, Disney-Shading-Modell, Flat-/Gouraud-/Phong-Shading, Mach-Bänder, Per-Pixel-Lighting/-Shading, deferred shading, two-sided lighting,
Texturierung: Übersicht, diskrete & prozedurale Texturen, formale Definition, Texturkoordinaten (stückweise lineare Parametrisierung), Texturkoordinaten-Interpolation (nur linear), Modulation der Beleuchtung durch Texturen, gloss map, alpha map,
PDF1 PDF2 Blatt 10 Lighting
13. 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.

Here you can find the source code of the GLSL shader examples that were discussed in class.
They comprise:

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.

Video-Aufzeichnungen der Vorlesung vom WS 20/21

The videos are encoded with H.265/HEVC and should play fine with Safari and IE. With Chrome and Firefox, you might need to download the videos, or install a plugin/extension.

Kapitel Aufnahmen
Display-Technik MP4 1, MP4 2, MP4 3
Geometrie Recap MP4 1, MP4 2
Graphik-Pipeline MP4 1, MP4 2
Einführung in GLSL MP4 1, MP4 2
Rasterisierung (scan conversion) und Anwendungen MP4 1, MP4 2
Baryzentrische Koordinaten MP4 1, MP4 2
Visibility Computations MP4 1, MP4 2
Transformationen MP4 1, MP4 2
Farben und menschliche Wahrnehmung MP4 1, MP4 2
Lighting and Shading MP4 1, MP4 2
Texturierung MP4
Tips für Prüfungsvorbereitungen
Thesis-Angebote
Infos zum Schwerpunkt Visual und Medical Computing
MP4 1, MP4 2, MP4 3

Hinweis: alle Videos in obiger Liste verwenden den H265-Codec (HEVC)! (Das spart im Schnitt ca. 50% Plattenplatz und Bandbreite.) Funktioniert direkt im Browser mit Safari, IE(Edge), ... (?) Ansonsten kann man die Videos einfach herunterladen und mit VLC abspielen.

Video-Aufzeichnungen der Vorlesung vom WS 17/18 findet ihr am Ende des Semesters hier.
Das Passwort ist "cg1718".
Vielleicht können die Videos bei der Vorbereitung zur Prüfung helfen. Aber Achtung: der definitive Stoff ist der, der in obiger Tabelle aufgelistet ist!

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 Computergraphik

Tools and Demos

Lern-Videos, und unterhaltsame Videos

Literatur und Infos, die nichts mit Computergraphik zu tun haben

Gabriel Zachmann
Last modified: Wed Aug 04 15:59:28 MDT 2021