This course provides an introduction to 3D Computer Graphics. I have been teaching it at the University of Bern several times between 2008 and 2016. The material covers the fundamentals of 3D image generation and modeling, with a focus on interactive applications. We deal with the representation of 3D geometry, 3D transformations, projections, rasterization, texturing and lighting models as well as the programming of modern graphics processing units (GPUs). The exercises for the lecture deepen the subject with programming projects based on Java and OpenGL.
In this course, students acquire the following knowledge and skills:
The following table provides an overview of the lecture sessions including slides. Recommend reading consists of select chapters and sections from "Fundamentals of Computer Graphics" by Shirley et al.
|Topic||Slides and Materials||Recommended Reading|
|Introduction||01_Introduction.pdf||Ch. 1, Sec. 2.3, 2.4|
|Homogeneous coordinates, transformations||02_Transformations.pdf||Sec. 5.2, 5.2.1, 5.2.2, 6.1-6.5|
|Projection from 3D to 2D||03_Projection.pdf||Ch. 7|
|Rasterization||04_Rasterization.pdf, Homogeneous rasterization.pdf||Sec. 2.10, 2.11, 3.1, 3.6, 8.2, 11.2, 11.3, 11.4|
|Color representation and the human visual system||05_Color.pdf||Ch. 20|
|Shading models||06_Shading.pdf||Ch. 9|
|Shader programming||07_Shaderprogramming.pdf, 08_Texturing.pdf|
|Scene management and data structures||09_SceneManagement.pdf||Sec. 13.3|
|Curve modeling||10_Curves.pdf||Ch. 15|
|Surface modeling||11_Surfaces.pdf, 11b_Adjacency data structures.pdf||Sec. 13.3|
|Advanced shading||12_Advanced shading.pdf|
|Virtual Reality||12b_Virtual Reality.pdf|
|Bump mapping, shadow mapping||13_BumpShadowMapping.pdf|
The course includes several programming projects towards the development of a real-time rendering engine in Java. Java basecode for the projects is available in a public github repository. Follow the links below for a detailed description of each project.