Introduction to Computer Graphics
|Lecturer:||Prof. Dr. Mario Botsch|
|Assistant:||Jan Philip Göpfert|
|Lecture:|| Tue, 14-16, T2-205
Thu, 16-18, H2
|Exercise:||Thu, 14-16, C0-269|
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 camera position. However, to achieve this goal we first have to understand and master several sub-problems, 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 to a sufficient degree and allows us to render photo-realistic 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 so-called rasterization pipelines, which simplify the light transport and performs all computations in a parallelized and pipelined manner on the graphics card (GPU). We will implement both a software rendering system (to understand the basic principles) and an OpenGL rendering system (real-time rendering, e.g. for games).
- 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.
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 four mini-projects (global illumincation, software rasterizer, OpenGL renderer, geometric modeling) of 3-4 weeks each. Our tutors have weekly consulting hours, where students can get help if they have trouble with the implementation. At the end of each mini-project, students will present their results in the exercise course.
- Basic knowledge of linear algebra and analysis is required. You should have passed your Mathe 1+2 courses.
- The programming exercises will be done in C++. We'll have a C++ crash course at the beginning.
- 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
- Munshi, Ginsburg, Shreiner: OpenGL ES 2.0 Programming Guide, Addison-Wesley, 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 (Thursday)|
|43||Intro , Ray Intersections||Colors and Lighting|
|44||Triangle Meshes||Acceleration Techniques|
|45||Ray Tracing in C++||Efficient Ray Tracing in C++||Exercise 1: Ray Tracing|
|46||Rendering Equation||Monte Carlo Ray Tracing|
|48||Fourier Transform||Image Compression||Exercise 2: Fun with Fourier|
|49||Transformations||Projections , Stereoscopy|
|51||OpenGL (OpenGL tutors)||Textures||Exercise 3: OpenGL Solar System|
|1||no lecture||Freeform Curves 1|
|2||Freeform Curves 2||Freeform Surfaces|
|3||Subdivision||Advanced OpenGL||Exercise 4: Bezier Surfaces and Subdivision|
|4||Implicit Surfaces||no lecture|
|5||Volume Visualization||Character Animation|
|6||Visual FX Pipeline||Conclusion||Conclusion|