Computergraphik - WS 15/16

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. (Zu Beginn der Vorlesung wird deshalb nochmals ein kurzer "Refresh" Ihrer C/C++-Kenntnisse gemacht.) 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 Modellierung, Animation, oder Bildbearbeitung mit Hilfe von fertiger Software (z.B. Photoshop, Blender, Maya, Cinema4D, etc.) behandelt! Wir beschäftigen uns mit den Algorithmen, die hinter diesen Programmen stecken.

Aus dem Inhalt:

  1. Mathematische Grundlagen
  2. OpenGL and C++
  3. 2D Algorithmen der Computergraphik (Scan Conversion, Visibility Computations, etc.)
  4. Theorie der Farben, Farbräume (hauptsächlich physikalische, neurologische, und technische Aspekte)
  5. 3D Algorithmen der Computergraphik (Rendering Pipeline, Transformationen, Beleuchtung, etc.)
  6. Techniken zum Echtzeit-Rendering
  7. Shader
  8. Texturierung

Aktuelles

Klausurtermin: Mo. 07.03. 10:30, Ort: SFG 0140 (Hinweise siehe unten)
Probeklausuren stehen zum Download bereit.

Folien

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

Woche Thema Folien Übungs-
aufgaben
Frameworks
1. Orga, Intro, Geschichte, Displays, Gammakorrektur PDF1 PDF2 Blatt 1
OpenGL-"Hello World"
"Sphere-Flake"
2. Geometrie: Skalar- und Kreuzprodukt, Koord.systene, Flächeninhalt von Dreieck und Polygonen, geometrische Prädikate, Volumen von Spat und Tetraeder, lineare Interpolation, Ebenen und Dreiecke;
Einführung in OpenGL
PDF1 PDF2 Blatt 2
Framework
3. Übersicht über die Graphik-Pipeline;
Scanline-Konvertierung von Linien, Midpoint-Algorithmus, Span-basierter Algorithmus; Anwendung Raycasting auf Terrain-Rendering; scan conversion of circles;
Wiederholung von C++
PDF1 PDF2 PDF3 PDF4 Blatt 3
Midpoint
4. Baryzentrische Koordinaten: affine Kombination, affine Abbildungen, konvexe Hülle, baryzentrische Koordinaten im Dreieck, baryzentrische Interpolation
Polygon Scan Conversion: Rasterisierung von Dreiecken, Algorithmus von Pineda, Interpolation von Farben im Dreieck, Parallelisierung (und die Pixel-Planes-Story), Triangulation, ein O(n log n)-Triangulations-Algorithmus, Art Gallery Theorem, Füllen nicht-einfacher Polygone, Odd-Even-Rule, Winding-Number-Rule, Flood Fill
PDF1 PDF2 Blatt 4
5. Font-Rendering: Begriffe, Outlines mittels Bezier-Kurven, Flag-Fill-Algorithmus von Ackland, Hinting.
Visibility Computations: Painter's Algorithm, Z-Buffer, Z-Fighting, Depth-of-Field, Depth Complexity & Overdraw, Hierarchischer Z-Buffer, Implementierung in Hardware, Object-Space & Image-Space-Algorithmen, BSP-Tree, Warnock's Algorithmus & Quadtree,
PDF1 PDF2 Blatt 5 Pineda
6. Visibility Computations 2: Double buffering & Synchronisation-Verfahren, Stencil buffer, Rendering Planar Reflections Using the Stencil Buffer, Schatten-Rendering mittels Shadow Volumes.
Alpha blending.
Clipping: Problemstellung, Motivation für Clipping vor der Projektion
Transformationen 1: Koordinatensysteme in der Pipeline, elementare Rotation, Skalierung, Scherung, Spiegelung, Concatenation,
PDF1 PDF2 PDF3 PDF4 Blatt 6 BSP
7. Transformationen 2: Euler-Winkel, Gimbal Lock, Rotation um beliebige Achse mittels Basiswechsel, Zerlegung einer Rotationsmatrix, Quaternionen, Darstellung und Durchführung von Rotationen mittels Quaternionen, Interpolation von Orientierung mittels Quaternionen, affine Abbildungen, homogene Koordinaten, Translation, Klassifikation aller Transformationen, Transformationen in OpenGL, relative/hierarchische Transformationen, Objekthierarchien, Matrix-Stack in OpenGL.
PDF
8. Projektionen & Perspektive: Kamera-Transformation, orthographische Projektion, perspektivische Projektion, Eigenschaften der perspektivischen Projektion, allgemeine projektive Abbildungen, Projektion in OpenGL,
Farben 1: Licht & Lichtquellen, Chromatizität, Reflectance spectrum, das Auge, Human Spectral Sensitivity, wahrgenommener Stimulus, Metamere,
PDF1 PDF2 Blatt 7 Billiard
9. Farben 2: Linearkombination und Gleichheit von Spektren, die "Sensor-Abbildung", Definition des Begriffes "Farbe", Grassmann'sche Experimente und Gesetze, Farb-Basiswechsel, CIEXYZ-Farbraum, Chromatizitätsdiagramm, Gegenfarbenmodell, Farbmodelle RGB, CMY, HSV, Interpolation von Farben, Abstand zwischen Farben, uniforme Farbräume, Gamut, CIE Lab-Farbraum, Farbtransfer.
PDF Blatt 8
10. Lighting & Shading: Arten von Lichtquellen, diffuse Reflexion, spiegelnde Reflexion, gerichtet diffuse Reflexion, Phong-Beleuchtungsmodell, Blinn-Phong-Modell, BRDF's, Lafortune-Modell, Flat-/Gouraud-/Phong-Shading, Mach-Bänder, Per-Pixel-Shading, two-sided lighting, Beleuchtung in OpenGL, two-sided lighting, Dämpfung PDF Blatt 9
11. Shader Programming: fixed-function pipeline, programmable pipeline, vertex processor, fragment processor, Einführung in GLSL, uniform- und varying-Variablen, Geometrie-Modifikation, Toon- and Gooch-Shader, Per-Pixel-Lighting, deferred shading, Depth-of-Field-Effekt.
PDF
12. Texturierung: Übersicht, diskrete & prozedurale Texturen, Formalisierung, Texturkoordinaten (stückweise lineare Parametrisierung), Texturkoordinaten-Interpolation (nur linear), Modulation der Beleuchtung durch Texturen, gloss map, alpha map, bump mapping, normal maps, Textur-Interpolation, MIP-Maps, 2-stufige Parametrisierung mittels Hüllkörper PDF Blatt 10 Depth-of-Field

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. Zwei gute Internetadressen sind Abebooks und BookButler.

Übungsbetrieb

Die Übungsblätter werden jeweils am Dienstag Abend auf der Homepage der VL (also hier) ins Netz gestellt.

Die Abgabe der Lösungen ist jeweils am Montag bzw. Dienstag eine Woche später direkt in der Vorlesung bzw. in der Übung. Theoretische Aufgaben werden schriftlich abgeliefert, praktische Aufgaben werden in der Übung am Rechner vorgeführt.

Hinweise und Downloads zur Bearbeitung der Übungsblätter

Zum Shader-Übungsblatt

Die in der Vorlesung demonstrierten GLSL-Shader finden Sie in diesem Archiv. Sie enthalten den Source-Code und teilweise Mac-Executables. (Es sind auch noch einige fortgeschrittenere Shader dabei, für diejenigen, die Geschmack an der Sache gefunden haben.)

Den im Übungsblatt und in der Vorlesung erwähnten Shader Maker finden Sie hier.

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.)
Bitte lasst euch nicht von einer eventuell leicht abweichenden Terminologie irritieren. Es gilt in der Klausur immer die Terminologie, die ich eingeführt habe.
Bitte lasst Euch sich 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

Gabriel Zachmann
Last modified: Mon Aug 29 16:39:18 CEST 2016