CPSC 324 Fundamentals of Computer Graphics Spring 2006

CPSC 324 Course Information

While the applications of computer graphics are by no means limited to entertainment, the most familiar examples of computer-generated imagery (CGI) probably come from film, television, and video games. CGI has progressed beyond the realm of the occasional special-effect to become a supporting character (and sometimes even the lead); advances in hardware have made ever more complex and photorealistic scenes possible.

The goal of this course is to gain an understanding of the fundamental issues at the heart of 3D computer graphics, including scan conversion, 3D viewing and projection, visible surface detection, illumination and color, raytracing, 3D object and scene representation, and animation.

A series of programming assignments will provide experience in these topics, and will culminate in a project allowing students to explore a topic of interest in more depth.

This is a programming course, and it should be expected that a fair amount of time will be spent designing and implementing code.


Stina Bridgeman
Lansing 312, x3614

Office Hours

M 1-2pm, W 4-5:30pm, Th 9:30-11am, F 1:30-2:30pm
or by appointment (schedule)

Class Hours and Meeting Place

MWF 3:00-3:55pm
Lansing 300

Course Web Page

You are expected to regularly consult the course web page for announcements, assignments, and most handouts.


Computer Graphics with OpenGL, 3rd edition
Hearn & Baker
Prentice Hall, 2003
ISBN 0130153907

Additional material will be handed out or posted on the course webpage.


CPSC 225

Rationale & Aims

This course, like the other 300- and 400-level computer science courses, explores a particular subdiscipline of computer science. The most visible application of photorealistic 3D computer graphics is perhaps in entertainment - movies, TV, and video games. However, there are many other areas which benefit from 2D and 3D graphics: computer-aided design, virtual reality environments (for education and training, as well as entertainment), data and scientific visualization, art, image processing, and even the graphical user interfaces which are standard these days.

This course will address aspects of rendering, modeling, and animation. Because entire courses can be taught on just one of these areas, this course will necessarily be something of a survey rather an in-depth study of any one area. The intent is to provide a solid foundation in the core terminology and concepts in computer graphics (as a basis for further study, and to facilitate the learning of a particular graphics API or package), and to push far enough into each topic to indicate what it is about, provide some glimpses of what can be achieved and how, and whet one's appetite for more exploration.

Course Content Overview

This course will address topics in three major areas of computer graphics: rendering, modeling, and animation.

Rendering: Rendering - turning a geometric description of an object into an image on the screen - is at the heart of computer graphics. As befits such a central topic, the bulk of the course will focus on rendering. Specific topics include scan conversion, 3D viewing and projection, visible surface detection, illumination and color, raytracing, radiosity, and effects such as shadows, transparency, texture-, and bump-mapping.

Modeling: Modeling is concerned with how to specify the geometry of the object or scene being rendered. We will address modeling only briefly, but issues to be considered include the size of the representation (how much information must be written to describe the object), whether the representation lends itself easily to the types of calculations which need to be performed, and how to conveniently and compactly describe an entire scene.

Animation: Rendering produces a single image; animation strings together a series of images to form a scene which varies over time. The key issue in animation is how to specify this variation without explicitly describing every image in the animation sequence. Our consideration of animation will focus on methods for specifying the motion of objects, though many of the techniques are applicable to other kinds of variation. We will survey a variety of animation techniques including key-framing and inbetweening, kinematics, physically-based animation, particle systems, and behavioral animation.

While some attention will be given to particular APIs (OpenGL) and software packages (Blender), the focus will be on understanding the underlying concepts of 3D computer graphics so that graphics libraries and packages can be learned easily.

By the end of the course, the successful student should be able to:

  • describe and carry out scan-conversion algorithms for lines and triangles
  • describe and carry out the steps in the 3D viewing pipeline, including derivation of the matrices involved
  • describe a basic lighting model, and explain each component of the lighting model in terms of the effect it has on the rendered image
  • describe and carry out several shading models, explain each in terms of the effect is has on the rendered image, and discuss tradeoffs of each
  • describe and carry out the process of recursive raytracing, including ray generation, intersection calculations, and handling reflection, transparency, and shadows
  • explain how to address efficiency issues in raytracing
  • compare and contrast the polygon pipeline with raytracing
  • describe and carry out texture-mapping, compare/contrast different strategies for performing the mapping, and discuss its tradeoffs
  • describe and carry out bump mapping, and discuss its tradeoffs
  • describe and carry out the radiosity lighting method, explain the effect it has on the rendered image, compare and contrast shooting and gathering, and discuss its tradeoffs
  • describe alternatives for representing 3D objects and scenes, and discuss tradeoffs
  • describe several techniques for specifying the motion of objects in an animation, and discuss tradeoffs of each

Assignments and Evaluation

Exams: There will be two midterm exams and a final exam. All will be take-home exams, and will emphasize applying concepts rather than simple recall. More information about the exams will be provided closer to the exam dates.

Projects: A core element of the course will be programming projects, in which you'll get hands-on experience with implementing major components of a basic renderer. In the first two projects, you'll build a renderer capable of rendering shaded 3D scenes with lighting. In the third project, you'll build a raytracer in which shiny objects, transparent objects, and shadows can be easily handled. The fourth and final project will allow you to explore a topic of interest in rendering, modeling, or animation. Projects are due 2-3 weeks after they are assigned.

Homework: In addition to the programming projects, there will be shorter homework assignments designed to reinforce topics needed for the projects or to address topics not covered by the projects. To encourage discussion and keeping up with the course material (and to enable rapid feedback), homeworks will typically be due one or two class periods after they are assigned.

Review Problems: Review problems will be posted on the course webpage frequently. These are intended for practice and review and will not be collected for grading. You should work on these problems as they are posted, as it is much better to clear up questions as the material is being covered in class instead of waiting until just before an exam.

Late Policy and Collaboration: See the course policies for the late policy and collaboration policy.

Final Grades: Final grades in this course will be computed as follows:

  • Homework: 20%
  • Projects: 45%
  • Midterm exams: 20% (10% each)
  • Final exam: 15%

On-time attendance and class participation (see the course policies) are expected, though they are not formally factored into your final grade. However, missing class - for any reason - often results in lower grades because important material was missed. Similarly, not participating in class even if you are physically present may mean that you aren't actively following the material and thus may be missing more sophisticated or subtle points. Whether or not your grade is impacted for these reasons is up to you - it is your responsibility to get notes from another student or otherwise catch up on missed material. Also note that class participation and the number of unexecused absences are considered when deciding whether or not to round up a final grade which is just below a grade-level cutoff. See the course policies for the definition of unexcused and excused absences.

Extra Credit: There will be opportunities for extra credit at various points during the semester.

Valid HTML 4.01!