This course teaches students fundamental algorithms for 2D and 3D computer graphics. First, the course introduces the OpenGL API that is used in the programming assignments. Then it covers 2D raster graphics, 2D transformations, 3D transformations, hierarchical modeling, and geometric representations of curves and shapes that are necessary to create 3D content. The course proceeds with algorithms for lighting, reflection, shading, texture mapping and ray tracing to generate images of 3D scenes with visual realism. Then the course covers animation techniques: keyframing, motion capture, character rigging and skinning, physics-based simulation. Finally, topics in image processing and typography are discussed.
Students complete 4 programming assignments in Java. To gain 400-level credit, students also complete a project, such as implementing an interactive 3D game or modeling technique. There is also a final exam.
The course has the following prerequisites: (a) CMPSCI 187 [or equivalent, such as ECE 242)] (b) CMPSCI 190DM -or- MATH 235 [or equivalent courses from other departments]. The course offers 3 credits, and belongs to the Robotics, Vision and Graphics track of the CS program.
Week 1: Introduction to Computer Graphics [warm-up assignment 1]
Week 2: Introduction to OpenGL, rasterization
Week 3: Linear Algebra review, 2D transformations, homogeneous coordinates
Week 4: 3D transformations, Viewing transformations
Week 5: Hierarchical transformations, Polygon Meshes [assignment 2]
Week 6: Parametric curves and surfaces
Week 7: Subdivision curves and surfaces [assignment 3]
Week 8: Shading and visibility
Week 9: Texture mapping
Week 10: Ray tracing [assignment 4]
Week 11: Sampling and anti-aliasing
Week 12: Animation techniques, character rigging
Week 13: Motion capture, Facial animation, Interpolation
Week 14: Image processing, compression, typography
25% final exam
20% final project
20% final exam
[required] Fundamentals of Computer Graphics, Peter Shirley et al, 3rd edition (2nd edition is also ok)
[recommended] OpenGL Programming Guide (known as the Red Book), Dave Shreiner, 7th edition (older editions are also ok)