Computer Graphics
Module | INF-MSc-233 |
Lectures | Tue, 08-10, OH12 E.003Thu, 14-16, OH12 E.003 |
Exercises | Thu, 12-14, OH12 1.054Thu, 16-18, OH12 1.054 |
Lecturer | Mario Botsch |
Tutor | Gerrit Nolte |
Evaluation | Previous course evaluation |

Content
This lecture provides the theoretical and practical foundations of computer graphics. We will focus on the visualization (or rendering) of a three-dimensional scene. To achieve this, several subproblems must first be understood and solved, drawing on concepts and methods from other disciplines (physics, biology, mathematics, computer science): How does light propagate in a scene? How does light interact with objects and different materials? How does a camera (or human visual perception) work? How do we represent three-dimensional models and scenes?
The lecture is structured into four blocks:
- Global Illumination (Ray Tracing, Path Tracing) answers the above questions and enables us to compute photorealistic images (e.g., for computer-generated movies). With some mathematics, efficient algorithms, and clever data structures, we can reduce computation time from hours to minutes or even seconds.
- Interactive Real-Time Rendering is achieved through the rasterization pipeline, which simplifies light transport and performs all calculations in a highly parallel fashion on the graphics card. We will develop an interactive stereoscopic OpenGL renderer.
- After understanding the rendering process, we will turn to the input, i.e., the 3D object description. We will study several geometry representations, each with its own strengths and weaknesses. In addition to triangle meshes, we will examine implicit surface representations (for constructive solid geometry) and freeform curves and surfaces (for computer-aided design).
- Finally, we will briefly consider character animation, focusing on simple linear blend skinning for skeletal animation and linear blend shapes for facial animation, since advanced techniques are covered in a separate lecture on Computer Animation.
To aid understanding, most of the techniques covered in the lecture will be implemented in programming exercises. These exercises consist of three mini-projects (global illumination, real-time rendering with OpenGL, geometric modeling with subdivision and Bézier surfaces), each of which takes about four weeks to complete.
Prerequisites
- Basic math skills (linear algebra, calculus) are required.
- Basic programming skills (OOP, data structures, algoritms) are required.
- The programming assignment will be done in C++. We will do a C++ crash course.
Materials
- The interactive HTML slides can be accessed here. Credentials for accessing the slides will be communicated via LSF/Moodle.
- Video recordings of the lectures will be embedded into the HTML slides.
- At the end of the semester, slides and recordings will be available as one big Electron app.
- We will make use of the following books:
- Foley, van Dam, Feiner, Hughes: Computer Graphics: Principles and Practice, Addison-Wesley, 1996.
- Glassner: An Introduction to Ray Tracing, Academic Press, 1989
- Pharr, Humphreys: Physically Based Rendering, Morgan Kaufmann, 2004
- Shreiner, Seller, Kessenich, Licea-Kane: OpenGL Programming Guide, 8th edition, Addison-Wesley, 2013.
- Seller, Wright, Haemel: OpenGL SuperBible: Comprehensive Tutorial and Reference, 6th edition, Addison-Wesley, 2013
- Rost, Licea-Kane, Ginsburg, Kessenich: OpenGL Shading Language, 3. Edition, Addison-Wesley, 2009
- Farin: Curves and Surfaces for CAGD. A Practical Guide, Morgan Kaufmann, 2001