Course Instructor and Office Hours:
Matthias Zwicker, office hours: on request via e-mail, IRB5244
Time and Place:
Tuesdays and Thursdays, 2pm-3:15pm, CSI 1122
You find the course home page here on UMD Canvas.
This course offers an introduction to 3D computer graphics, focusing on the underlying building blocks and algorithms that enable applications such as 3D computer games, and augmented and virtual reality (AR/VR). The material covers the basics of 3D image generation and 3D modeling, with a focus on interactive applications. We will discuss the representation of 3D geometry, 3D transformations, projections, rasterization, basics of texturing and lighting models, as well as the programming of modern Graphics Processing Units (GPUs). The course exercises deepen the subject with programming projects based on Java and OpenGL. In the programming projects, students will build their own 3D rendering engine step-by-step.
In this course, students acquire the following knowledge and skills:
Describe and apply the mathematical basics of 3D graphics (coordinate systems, coordinate changes, homogeneous coordinates, matrix operations, transformation matrices for rotation, translation and projection).
Describe the fundamentals of digital representation and processing of color information, and its relation to the human visual system (tristimulus theory, color spaces, color transformations, gamma correction, and tone mapping).
Describe and apply basic concepts of radiometry and light transport (radiance, irradiance, bidirectional reflectance distribution function (BRDF), and various lighting models).
Describe hardware architecture of GPUs (graphics pipeline, frame buffer, graphics processing unit (GPU), data parallelism, single instruction multiple threads (SIMT) programming model).
Describe the software architecture of 3D graphics programs.
Describe and apply data structures for 3D graphics applications (mesh data structures and hierarchical scene graphs).
Describe and apply special graphic programming techniques (shader programming, texture mapping, bump mapping, shadow mapping).
Use 3D graphics programming interfaces such as OpenGL and GLSL together with an object-oriented programming language such as Java to develop your own 3D applications.
The course syllabus, schedule, all materials, and online communication are available via the course page on UMD Canvas, the electronic learning management system of UMD.