Computergraphik 1 - WS 12/13
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 mit Hilfe von Animationssoftware (z.B. Blender, Maya, Cinema4D, etc.) behandelt!
Aus dem Inhalt:
- Mathematische Grundlagen
- OpenGL and C++
- 2D Algorithmen der Computergraphik (Scan Conversion, Visibility Computations, etc.)
- Theorie der Farben, Farbräume (hauptsächlich physikalische, neurologische, und technische Aspekte)
- 3D Algorithmen der Computergraphik (Rendering Pipeline, Transformationen, Beleuchtung, etc.)
- Techniken zum Echtzeit-Rendering
- Shader
- Texturierung
Aktuelles
Folien
Die folgende Tabelle wird die behandelten Themen und die dazugehörigen Folien enthalten.
Woche | Thema |
---|---|
1. | Orga, Intro, Geschichte, Displays, Gammakorrektur |
2. |
Mathe Wdhg. (Flächeninhalte, Spatprodukt,
Volumeninhalte, geometrische Prädikate,
lineare Interpolation);
Wiederholung bzw. Einführung in C++ |
3. |
Einführung in OpenGL;
Übersicht über die Pipeline; Scanline-Konvertierung von Linien und Kreisen |
4. |
Baryzentrische Koordinaten
(affine Koombination, affine Abbildungen,
konvexe Hülle, baryzentrische Koordinaten
im Dreieck, baryzentrische Interpolation); Polygon Scan Cnversion (Triangulation, Art Gallery Theorem, ein Triangulations-Algorithmus, Rasterisierung von Dreiecken, Algorithmus von Pineda, Pixel Planes, Odd-Even-Rule, Winding-Number-Rule) |
5. | Visibility Computations: Painter's Algorithm, Z-Buffer, Depth-of-Field, Depth Complexity & Overdraw, Hierarchischer Z-Buffer, Object-Space & Image-Space-Algorithmen, BSP-Tree, Warnock's Algorithmus & Quadtree, Double Buffering, Quad-Buffers, Stencil Buffer, Rendering planarer Spiegelungen, Rendering von Schatten mittels Shadow Volumes |
6. |
Clipping: Problemstellung, Motivation für Clipping vor der Projektion Wiederholung Matrix-Rechnung (Matrizen, Operationen darauf, Rechengesetze, Inverse, 3x3-Determinante, Spur) Transformationen: Koordinatensysteme, homogene Koordinaten, Translation, Rotation, Skalierung, Scherung, Spiegelung, Concatenation, Euler-Winkel, Gimbal Lock, Rotation um beliebige Achse, Basiswechsel, Zerlegung einer Rotationsmatrix |
7. |
Quaternionen, Darstellung von Rotationen mittels Quaternionen,
Interpolation von Quaternionen, starre Transformationen,
Klassifikation aller Transformationen, Transformationen in OpenGL,
relative Transformationen, Objekthierarchien, Matrix-Stack in OpenGL. Projektionen & Perspektive, Kamera-Transformation. Farben 1: Licht, Chromatizität, Reflectance spectrum, das Auge, Human Spectral Sensitivity. |
8. |
Farben 2: wahrgenommener Stimulus, Metamere, Linearkombination und Gleichheit
von Lichtquellen, Definition des Begriffes "Farbe", Grassmann'sche Experimente,
Farb-Basiswechsel, CIEXYZ-Farbraum, Chromatizitätsdiagramm, Gegenfarbenmodell,
Farbmodelle (RGB, CMY, HSV, Interpolation von Farben, Abstand zwischen Farben,
uniforme Farbräume, Gamut. Lighting 1: Lichtquellen, diffuse Reflexion, spiegelnde Reflexion, Phong-Beleuchtungsmodell, Blinn-Phong-Modell. |
8. |
Lighting & Shading 2: BRDF's, Lafortune-Modell, Gouraud-Shading. Shader Programming: fixed-function pipeline, programmable pipeline, Einführung in GLSL, Per-Pixel-Lighting, Depth-of-Field-Effekt. |
9. | 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, einfache 2-stufige Parametrisierung. |
Literatur
Folgende Literatur eignet sich als begleitende Literatur:
- Peter Shirley: Fundamentals of Computer Graphics; 2nd Edition, AK Peters.
- Hearn, Baker, Carithers: Computer Graphics with OpenGL; 4th edition, Pearson
- Foley, van Dam, Feiner, Hughes: Computer Graphics -- Principles and Practice; Addison Wesley.
- David C. Lay: Linear Algebra and its Applications; Pearson.
- David F. Rogers: Procedural Elements for Computer Graphics; 2nd Edition, McGraw-Hill.
- Tomas Akenine-Möller, Eric Haines: Real-Time Rendering; AK Peters.
- J. L. Encarnação, W. Strasser, R. Klein: Graphische Datenverarbeitung 1 und 2. Oldenbourg, 1996
- Alan Watt: 3D Computer Graphics; Addison-Wesley.
- Bender & Brill: Computergrafik; Hanser.
- Dave Shreiner: OpenGL Programming Guide: The Official Guide to Learning OpenGL; Addison-Wesley Educational Publishers. die aktuelle Ausgabe ist bei Version 4.1, aber die Version 3.0 und 3.1 sind (fast) genauso gut.
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.
Noten aus den Fachgesprächen
Matrikelnummer: 2615879 Note: 2.3
Matrikelnummer: 2718887 Note: 1.0
Matrikelnummer: 2615596 Note: 3.0
Matrikelnummer: 2616280 Note: 1.0
Matrikelnummer: 30754 Note: 2.0
Matrikelnummer: 2718541 Note: 3.3
Matrikelnummer: 2616228 Note: 3.0
Matrikelnummer: 2616191 Note: 2.7
Matrikelnummer: 2470213 Note: 2.3
Matrikelnummer: 2555380 Note: 1.7
Matrikelnummer: 2616207 Note: 1.3
Matrikelnummer: 2565870 Note: 2.3
Matrikelnummer: 2553320 Note: 1.7
Matrikelnummer: 2616254 Note: 1.3
Matrikelnummer: 2475447 Note: 1.0
Matrikelnummer: 2615727 Note: 1.0
Matrikelnummer: 2616689 Note: 2.7
Matrikelnummer: 2385123 Note: 3.0
Matrikelnummer: 2718625 Note: 3.3
Matrikelnummer: 2616390 Note: 2.3
Matrikelnummer: 2473787 Note: 1.3
Matrikelnummer: 2283723 Note: 2.7
Matrikelnummer: 2616233 Note: 1.0
Matrikelnummer: 2480310 Note: 1.3
Matrikelnummer: 2616982 Note: 1.7
Matrikelnummer: 2616186 Note: 1.0
Matrikelnummer: 2469962 Note: 2.0
Übungsbetrieb
Die Übungsblätter werden jeweils am Montag Abend auf der Homepage der VL (also hier) ins Netz gestellt.
Die Abgabe der Lösungen ist jeweils am Montag bzw. Dienmstag 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
- Die Installation der OpenSource-Version von Qt ist inzwischen sehr einfach.
Bei vielen Linuxen ist Qt schon per Default drauf.
Auf dieser Download-Seite finden Sie die Pakete (Source oder Binary) für Windows, Mac, und Linux. Es genügt, die Libraries zu installieren. - Hier finden Sie ein "Hello World"-Programm. Es ist sehr klein und eignet sich, um zu testen, ob OpenGL bei Ihnen korrekt funktioniert. Im README steht, wie man es compiliert.
- Hier können Sie ein etwas spannenderes OpenGL-Programm herunterladen, das eine sog. "Sphere-Flake" darstellt.
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.
Online Literatur und Links zum Programmieren in C/C++ und in OpenGL
- Ein Kompaktkurs zu C mit Beispielen in OpenGL.
- Tutorials/Bücher zu C++ :
- A modest STL tutorial ist eine einfache Einführung in einige grundlegende Konzepte, Container und Algorithmen der Standard Library von C++ (der sogenannten STL). (Quelle)
- OpenGL:
- The OpenGL Programming Guide (das sogenannte "Red Book"). Das Passwort für Zugang und PDF-File gibt es in der Vorlesung oder in der Übung.
- OpenGL Samples
- NeHe Tutorials (viele sehr ausführliche Tutorials und Beispiele
- The OpenGL Reference Manual - The Blue Book
- Spezifikationen (z.B. die OpenGL-Specification)
- Qt
(ein Cross-Plattform-GUI Toolkit, als "Wrapper" für OpenGL-Fenster)
(für open-source Anwendungen ist die Library kostenlos)
- Downloads im Abschnitt "Qt Libraries"
- Wer sich für Qt interessiert, findet hier einige schöne Tutorials, aber im Rahmen der Vorlesung ist das nicht nötig.
- Einige hübsche Beispiele für OpenGL mit Qt
- Zu GLSL und Shader-Programming:
- Shader Maker is our simple, cross-platform GLSL editor. It works on Windows, Linux, and Mac OS X.
-
Here you can find the
source code
of the GLSL shader examples that were discussed in class.
They comprise:- the Lighthouse3D tutorials, somewhat modified (and different variants), with the C source code cleaned up and refactored;
- a number of shaders that create a procedural brick texture (inspired by the orange book), with increasing sophistication (noise);
- a set of shaders implementing lighting, the last of which does per-pixel lighting;
- Ein Tutorial zur Shader-Programmierung von Lighthouse 3D.
- Mark Olano's Brief OpenGL Shading Tutorial (Quelle).
- Viele Demos und Tutorials zur Shader-Programmierung gibt es auch bei Clockworkcoders.
- Ein GLSL Quick Reference Guide (Quelle).
- Die offizielle GLSL Spezifikation (falls man etwas nochmal ganz genau nachschlagen muß).
- Die OpenGL 4.1 Reference Pages (sehr praktisch zum schnellen Nachschlagen).
Online Literatur und Resources zu Computergraphik
- Literatur zu Vektor- und Matrizenrechnung:
- Norman Wittels: Introductory Vector Calculus (Quelle)
- Konstantin Tretyakov: A Brief Introduction to Matrix Algebra (geht auch speziell auf Translationen, Rotationen, etc., ein) (Quelle)
- Stefan Lang: Einführung in die Matrizenrechnung (Quelle)
- Linear Algebra - An Introduction to Linear Algebra for Pre-Calculus Students by Tamara Carter, Richard Tapia, Anne Papakonstantinou (Quelle)
- Ein sehr ausführliches Skript von Prof. Straßer.
- Sehr anschaulich gemachtes Video-Tutorial zu LCD-Diplays von 3M.
- Literatur zur Gammakorrektur:
- Gamma FAQ - Frequently Asked Questions about Gamma ( Quelle)
- Eine sehr ausführliche Darstellung und Motivation der Gammakorrektur: Rehabilitation of Gamma (Quelle)
- Ein nettes Applet zur Gamma Correction (Quelle)
- Zu Visibility Computations:
- Zum Hierarchischen Z-Buffer in ATIs Radeon-Karten (und so ähnlich in allen modernen Graphikkarten
- Mark Kilgard: Improving Shadows and Reflections via the Stencil Buffer
- David Blythe et al.: Lighting and Shading Techniques for Interactive Applications; Siggraph '99, Course 12, pp. 150 .
- Morgan McGuire, John F. Hughes, and Kevin T. Egan, Mark J. Kilgard and Cass Everitt:
Fast, Practical and Robust Shadows;
2003. (Quelle)
Dieses Paper geht schon deutlich über das hinaus, was in der Vorlesung besprochen wird.
-
Mehr zu Homogenen Koordinaten:
- Two parallel lines can intersect
- Projective Geometry and Homogeneous Coordinates ( Quelle)
- Eine sehr pragmatische und teils witzige Einführung: Homogeneous Coordinates with Glorphs and Smynxes (Quelle)
- Transformations and Homogeneous Coordinates (Quelle)
- On Orthogonal Matrices
-
Zu Quaternionen:
- Joe McMahon: A (Mostly) Linear Algebraic Introduction to Quaternions. (Quelle)
- Dam, Koch, Lillholm: Quaternions, Interpolation, Animation. (Quelle)
-
Zu Licht und Farben:
- Gary W. Meyer: Tutorial on color science; The Visual Computer, Volume 2, Number 5 / September, 1986. (Quelle)
- Lichttechnische Grundlagen von der Firma ADB GmbH (Quelle) — falls Sie gerne ins Theater gehen, dann erfahren Sie hier außerdem eine ganze Menge über Theater-Beleuchtung.
- Eine Zusammenfassung der Erkenntnisse bzgl. der menschlichen Sehschärfe des menschlichen Auges von Gerald Westheimer: Visual Acuity and Hyperacuity (Quelle, aus dem Handbook of Optics).
- Zu Lighting & Shading:
- Siggraph Course Notes Lighting and Shading Techniques for Interactive Applications , 1999 (Kapitel 11.1 behandelt Spiegelungen in OpenGL, 11.4 behandelt Schatten, 6.1 behandelt Texturen)
- Ein Video zum Phong-Modell von Matthias Parchettka (ein wenig oberflächlicher als ein Buch, dafür etwas unterhaltsamer) (Quelle 1, Quelle 2).
- Ein Video zu BRDFs auch von Matthias Parchettka (ziemlich oberflächlich, aber unterhaltsam) (Quelle 1, Quelle 2).
- Ein Video über Gouraud-Shading von Andrew Silke (Quelle).
- Zwei Anwendungen der Shader-Programmierung:
- Zur Texturierung:
- Ein paar sehr nette Demos zur perspektivisch korrekten (bzw. inkorrekten) Texturierung. Dabei finden sich auch ein paar sehr schöne Erläuterungen zu diesem Thema. (Quelle)
- Der berühmte Artikel " Texture Mapping as a Fundamental Drawing Primitive" von Paul Haeberli and Mark Segal, 1993. (Quelle)
Change Monitoring:
If you enter your email adress in the box above and then press the "Monitor" button, then ChangeDetection will send you an email whenever I make changes to this page.
Gabriel ZachmannLast modified: Tue May 07 12:37:53 MDT 2013