CS 551: Introduction to Computer Graphics

Cross-listed as CS 651; see below

Study aid: PDF handouts of all the lectures (6 slides/page) can be found here.
Midterm average is: 65.
Time: 9:30-10:45 AM, Tuesdays and Thursdays
Place: MEC 214
Instructor: David Luebke (Olsson #219), luebke@cs.virginia.edu
Office hours: 2:30 - 3:30 Monday, Thursday
Assistants: Zitao Cheng, zc5n@cs.virginia.edu
Carlton Fraley, caf8y@cs.virginia.edu
Office hours: 4 - 5 Monday-Thursday; 2-3 Friday in Small Hall Unixlab 
Assignments/Exercises: This will be an assignment-intensive, programming-intensive course.  Expect around 6 assignments over the course of the semester, with 7-10 days to do each assignment.  Each will be posted here as they are assigned.

Source and SGI executable for our choice of the best assignments are given in /home/cs551/best/{hw1, hw2, etc}. Feel free to look at and learn from these programs.

Assignment 1: Introduction to XForms and UNIX.
Best Assignment Award: Yannick Loitiere 

 Assignment 2: A Simple OpenGL Application.
Best Assignment Award: Johnny Lee

 Assignment 3: Clipping to Arbitrary 3-D Planes.
Best Assignment Award: Mike Walker

Assignment 4: Lighting

Assignment 5 (Optional): A 3-D Computer Game

Format: Project-oriented, with multiple programming assignments. Two tests.
The graduate-level course CS 645 is being taught through the same lectures, but with slightly different requirements. 
Prerequisites: Grade of C or better in 332. Good C/C++ programming skills a must. 
Description: This course will introduce the fundamentals of computer graphics: rendering, modeling, and animation. Students will learn how to represent three-dimensional objects (modeling) and the movement of those objects over time (animation). Students will learn and program the standard rendering pipeline, defined as the stages of turning a three-dimensional model into a shaded, lit, texture-mapped two-dimensional image.

 This course will not teach the use of graphic design software such as Maya, AutoCAD, or 3D Studio Max, but rather the fundamental underpinnings of these programs. Students will receive limited exposure to the OpenGL graphics API, but again the focus of the course is on the underlying mechanisms of OpenGL rather than its sophisticated use.

Computer Graphics: Principles and Practice by Foley, van Dam, Feiner, and Hughes, Addison-Wesley (1993).
OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.1 by Mason Woo et al., Addison-Wesley (1997).
Unixlab: Programming assignments will be done in the UNIX environment.  We expect students to use the Sun or SGI workstations in the Small Hall Unixlab.  If you do not already have an account, mail accounts@virginia.edu and tell them you need a UNIX account for CS 551.  We may support Linux as well but do not yet promise it.
Nitty-Gritty: In order to use the infrastructure in place in the class account, you'll need to make some modifications to your unixlab account
Handouts: Bio Sheet, Pointer to "Teddy" Home Page
Lectures: A tentative schedule of lecture topics is given below.  Lectures labeled Culture are more tangential to the main topics of the course and will thus be the first to go if our schedule slips.  Lecture notes from class will be posted here as the semester progresses.
Number Date Topic
1 1/20 Introduction
Display technologies
2 1/27 Mathematical foundations
The rendering pipeline
3 2/1 Intro to OpenGL
4 2/3 Geometric transformations
5 2/8 Rasterization I: rasterizing lines
6 2/10 Rasterization II: rasterizing triangles
7 2/15 Rasterizing III: rasterizing general polygons
Clipping I: clipping lines
8 2/17 Clipping II: clipping polygons
9 2/22 Projection transforms
10 2/24 Color
11 2/29 Lighting I: Fundamentals, diffuse, and specular illumination
12 3/2 Lighting II: The Phong lighting model
13 3/7 Review for midterm
-- 3/21 Class cancelled
-- 3/23 Go over midterm
14 3/28 Visible Surfaces: Analytic algorithms, BSP Trees
15 3/30 Visibility: The Z-Buffer
16 4/4 Visibility: Cells and Portals
-- 4/6 Guest Lecture: Physically-Based Animation
17 4/11 Visibility: General Occlusion Culling
18 4/13 Texture Mapping I: Fundamentals
19 4/18 Texture Mapping II: MIP-mapping and advanced mapping techniques
20 4/20 Ray Tracing
21 4/25 Level of detail
22 4/27 Level of detail continued: dynamic LOD
23 5/2 Recap for final exam
Grading: The final grade will be calculated as a weighted average:
  • Assignments:  50% 
  • Midterm:   15%
  • Final:   25%
  • Participation:  10%
Assignments will be graded on a 10-point scale. No credit will be given for assignments that do not compile, or otherwise completely fail (e.g., the dreaded "black screen" effect).  We want to provide a rapid turnaround on your assignments and simply do not have time to debug them for you after you've turned them in.

 Participation means coming to class, asking questions, taking part in discussions, not falling asleep, and so on.

  I also reserve the right to institute quizzes (announced or unannounced).

Late Assignments: Assignments are always due at the beginning of class.  If an assignment is not done at the beginning of class it is considered one day late. This is to prevent people from skipping class to finish up the assignment.  Assignments one day late subtract an additional 1 point; two days late loses 3 points. After 2 days the assignment will be considered a zero.

However, each student has 5 late days to use at their own discretion over the course of the semester.  If you submit an assignment after the due date, you must explicitly state the number of late days you wish to apply to the assignment.  With this flexibility built into the late policy, no other excuses will be accepted without a written note from the Dean's office.

Honor Code: The honor code applies to all work turned in for this course.  In particular, all code and prose that you write for the assignments and project should be entirely your own, unless the instructor has specifically assigned a team project.  You are welcome and encouraged to reuse your own code, when appropriate.

The background image is from Realistic Modeling and Rendering of Plant Ecosystems, by Oliver Deussen, P. Hanrahan, M. Pharr, B. Lintermann, R. Mech, and P. Prusinkiewicz.  From Proceedings of SIGGRAPH '98, ACM Press, (c) 1998.