Computer Graphics
Lecturer:  Prof. Dr. Mario Botsch 
Assistant: 
Martin Komaritzan Astrid Bunge 
Lecture:  Tue, 1416, H11 Thu, 1416, H10 
Exercise:  Wed, 1416, V2229 Wed, 1618, V2229 
eKVV:  392113 
Credits:  10 points 
Content
With this lecture we give an introduction to theoretical and practical foundations of Computer Graphics. Our main topic is to visualize (or render) a 3D scene as seen from a certain virtual camera position. However, to achieve this goal we first have to understand and master several subproblems, where we can make use of knowledge and techniques from several other disciplines (physics, art, biology, mathematics, computer science): How does light propagate through a scene after it gets emitted from a light source? How does light interact with objects of different materials? How does a camera or the human visual system work? How does stereoscopic rendering work? What is light, what is color? How do we represent 3D models and scenes?
The lecture consists of four main parts:
 We will start with Global Illumination, which answers the above questions allows us to render photorealistic images (e.g. for movies). Using some math, efficient algoriths, and clever data structures leads to methods that render nice images in minutes (instead of hours or days).
 Interactive frame rates can be achieved by socalled rasterization pipelines, which simplify the light transport and perform all computations in a parallelized and pipelined manner on the graphics card (GPU). We will implement a realtime rendering system using OpenGL.
 After understanding the process of rendering, we focus on its input, which is a geometric description of a scene. We will see several representations for geometric objects that each have their own advantages and drawbacks. Besides triangle meshes, we will discuss implicit surfaces (used for constructive solid geometry, CSG) and freeform curves and surfaces (used in Computer Aided Design, CAD).
 We will briefly discuss character animation and rendering, where we focus on simple (hence efficient) linear blend skinning for skeletal animation and linear blend shapes for face animation.
Exercises and Exam:
 Most of the techniques you only really understand if you try to use them, i.e., if you implement them. Our exercises therefore consist of three miniprojects (global illumincation, realtime OpenGL renderering, geometric modeling).
 The programming exercises are now mandatory. You do not have to hand in code, but you will have to present your solution of the programming exercises to the TA during the exercises classes.
 Due to the large number of participants, the final examination will (mostly likely) be a written exam, not an oral exam.
Prerequisites
 Basic knowledge of linear algebra and analysis is required. You should have passed your Math 1+2 courses.
 The programming exercises will be done in C++. We'll have a C++ crash course at the beginning.
Literature
 Foley, van Dam, Feiner, Hughes: Computer Graphics: Principles and Practice, AddisonWesley, 1996.
 Glassner: An Introduction to Ray Tracing, Academic Press, 1989
 Pharr, Humphreys: Physically Based Rendering, Morgan Kaufmann, 2004
 Shreiner, Seller, Kessenich, LiceaKane: OpenGL Programming Guide, 8th edition, AddisonWesley, 2013.
 Seller, Wright, Haemel: OpenGL SuperBible: Comprehensive Tutorial and Reference, 6th edition, AddisonWesley, 2013
 Rost, LiceaKane, Ginsburg, Kessenich: OpenGL Shading Language, 3. Edition, AddisonWesley, 2009
 Munshi, Ginsburg, Shreiner: OpenGL ES 2.0 Programming Guide, AddisonWesley, 2008
 Farin: Curves and Surfaces for CAGD. A Practical Guide, Morgan Kaufmann, 2001
 Tristan's Course Notes (updated 02.03.2016)
Tentative Schedule & Slides
Week  Lecture (Tuesday)  Lecture (Thursday)  Exercise (Wednesday) 

41 
Intro
(HTML,
PDF)
Ray Intersections (HTML, PDF) 
Colors (HTML, PDF) 

42 
Lighting (HTML, PDF) 
no lecture  
43 
Triangle Meshes (HTML, PDF) 
Ray Tracing in C++ (HTML, PDF) 
Ray Tracing (10 Points) Last Presentation: 28.11. 
44 
Efficient Ray Tracing in C++ (HTML, PDF) 
no lecture  
45 
Rendering Equation (HTML, PDF) 
Path Tracing (HTML, PDF) 

46 
Transformations (HTML, PDF) 
Projections (HTML, PDF) 

47 
Rasterization (HTML, PDF) 
OpenGL (HTML, PDF, OpenGLTutors) 

48 
Texture Mapping (HTML, PDF) 
no lecture  OpenGL Solar System, + Videos (10 Points) Last Presentation: 09.01. 
49 
Shadows (HTML, PDF) 
Freeform Curves 1 (HTML, PDF) 

50 
Freeform Curves 2 (HTML, PDF) 
Freeform Surfaces (HTML, PDF) 

51 
Subdivision (HTML, PDF) 

52  Xmas holidays  
1  
2 
Fun with Fourier (PDF) 
Image Compression (PDF) 
Bezier & Subdivision or Fourier (8 Points) Last Presentation: 30.01. 
3 
Implicit Surfaces (PDF) 
Volume Rendering (HTML, PDF) 

4 
Spatial Data Structures (PDF) 
Character Animation (HTML, PDF) 

5 
Advanced OpenGL (HTML, PDF) 
Conclusion (PDF) 