Course Instructor and Office Hours:
Matthias Zwicker, office hours: Tuesdays 11:30am-12:30pm, AVW3139
Time and Place:
Tuesday and Thursdays, 3:30pm-4:45pm, CSI 1122
This lecture 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 lecture 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.
Course Schedule, Materials, and Online Communication:
The course schedule, all materials, and online communication will be managed via the course page on UMD Canvas, the electronic learning management system of UMD. Access to these resources requires login using your campus ID.
Grading will be based on the programming assignments (50%), the midterm exam (25%), and a final exam (25%).
The course builds on concepts from calculus, linear algebra, and algorithms and data structures. Programming assignments rely on Java. The official requirements are: MATH240; and minimum grade of C- in CMSC420; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program. Contact the instructor for further inquiries.
We will follow the guidelines set forth by of the Department of Computer Science and the Office of Student Conduct.