CMSC 491E/691E: Computer Graphics for Games

Spring 2004 / 3 credits

MW 3:30-4:45, LH 5

Last update:
Mon Feb 23 13:39:53 EST 2004
Mon Feb 16 18:29:24 EST 2004
Mon Feb 9 12:34:45 EST 2004
Fri Jan 30 14:47:25 EST 2004

Instructor: Dr. Marc Olano (olano
ITE 354 (455-3094); Office Hours: Tue 3-5

Prerequisite: CMSC 435/634
(Yes, we will make heavy use of this prerequisite)

Text: 3D Game Engine Design, David H. Eberly, Morgan Kaufmann 2001. Required.


This course is an introduction to some of the computer graphics methods commonly used in 3D computer games. Computer graphics encompasses a wide variety of algorithms and techniques, many more than can be covered in just one or two courses. This course is similar in style and scope to CMSC 635/Advanced Computer Graphics, but uses computer games as a focus and motivation to explore a different set of graphics algorithms. Topics include using and manipulating scene graphs, design of interactive applications, collision detection, geometric level of detail, potentially visible set computation, and hardware procedural shading. Students will learn several common algorithms in each topic area in sufficient depth for implementation.

Note that (as the text book title says), this is a course about the workings of 3D Game Engines, as used by many games. It is not really a class about playing games, nor about all of the other equally important aspects of creating a game (AI, art, game play, interface design, ...). I expect that the class will be a lot of work, but hope that you will find it rewarding.

Grades: Grades will be based on class participation (10%), programming assignments (30%), and a group final project (60%).


Programming assignments require the use of the C/C++ programming language. These assignments may be time-consuming. START EARLY! A tentative list is given below:

Assignment Weight Description Due Date
Assn 1 10% Tools Feb 5
Assn 2 10% Interactive Application Feb 23
Assn 3 10% Scene Graph Mar 15

Students taking the course for graduate credit (i.e. CMSC 691E) will be expected to do parts on each assignment.

Late Policy

Assignments are to be submitted electronically by 11:59 PM of the day listed. Assignments submitted up to one week late will be penalized 20 percent of the possible score. Assignments more than one week late will receive a score of 0. Each student gets one free "late" (i.e. up to one week late without penalty, but still zero if later than one week) to apply to any of the assignments. Your free late must be claimed in writing on or before the due date.

Academic Honesty

By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong.

All assignments and exams in the course are expected to be your INDIVIDUAL work. You may discuss assignments with anyone. Any help you receive, however, must be documented. At the beginning of each program you must include a comment indicating the sources you used while working on it (excluding course staff and text) and the type of help you received from each. If you received no help, say so. Failure to include this comment at the top of your program will result in your program being returned ungraded.

Tentative Schedule

Date Topic Due
Jan 28 Overview; Matrices, Quaternions & Euler Angles
Feb 2/4 Statistical and minimization-based bounding object fitting
Anatomy of an Interactive Application: Event management, input, networking, display refresh
Assn 1
Feb 9/11 Middleware; Graphics APIs; Hardware Groups Chosen
Feb 16/18 Scene graphs: creating, manipulating, direct rendering, creating a display list
Feb 23/25 Picking: Ray/Object intersections Assn 2, Project Chosen
Mar 1/3 Collision Detection: Object/Object intersections
Mar 8/10 Curves & Surfaces: Curved paths, smooth blending, curved surface modeling
Mar 15/17 Character Animation: Key framing, inverse kinematics, skinning Assn 3
Mar 29/31 Surface Appearance & Effects: Shading, particle systems, object morphing
Apr 5/7 Terrain: terrain simplification algorithms, run-time generation, paging Project Status
Apr 12/14 Spatial Sorting: quadtrees, octrees, portals, binary space partitioning trees
Apr 19/21 Advanced Visibility: Potentially visible sets, occlusion culling, impostors.
Apr 25/28 Level of Detail: Billboards, geometric simplification
May 3/5 Project Presentations Project Report
May 10 Project Presentations

Online resources