CS 551: Introduction to Computer Graphics

Cross-listed as CS 645; see below

The final will be held on Tuesday December 14th, from 9AM-12PM in MEC339.

PDF and postscript handouts of the lectures, 6 slides/page.

The key to the midterm exam in postscript and PDF.

Time: 11:00-11:50 AM, Mondays, Wednesdays, and Fridays
Place: MEC 214
Instructor: David Luebke (Olsson #219), luebke@cs.virginia.edu
Office hours: 2:30 - 3:30 Monday, Wednesday
Assistants: Dale Newfield (Head TA), dnewfield@cs.virginia.edu
Derek Cornish, dmc8a@cs.virginia.edu
Jinze Liu, jl6j@cs.virginia.edu
Office hours: 3 - 4 Tuesday, 2 - 3 Thursday, 2 - 3 Friday
in Small Hall Unixlab for now, might move to Olsson 227 later
Assignments/Exercises: This will be an assignment-intensive, programming-intensive course.  Expect 9-10 assignments over the course of the semester, with 7-10 days to do each assignment.  Each will be posted here as they are assigned:
Assignment 1: Introduction to XForms and UNIX
Assignment 2: Line Drawing (and the test programs used to grade it.)
Assignment 3: Triangle Drawing
Assignment 4: Clipping Triangles (and the graded results.)
Assignment 5: Lookat and other Matrix Transforms (and the test program used to grade it.)
Assignment 6: A 3-D Wireframe Rendering Pipeline (and an explanation of how to calculate the lookat matrix directly, and some models you can use to test out your program, (which now (11/9) all have normals!).
Assignment 7: A 3-D rendering pipeline complete with Phong lighting and Z-buffer rasterization. Updated (Monday 11/15) to clarify inside-out models.
Format: Project-oriented, with many programming assignments. Two tests.
The graduate-level course CS 645 is being taught through the same lectures, but with slightly different requirements. 
Prerequisites: Grades of C- or better in 201 and 216. 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: Syllabus, 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 9/1 Introduction
Display technologies I
2 9/3 Display technologies II
3 9/6 Mathematical Foundations
4 9/8 Line algorithms I (Note: local copy does not include applets)
5 9/10 Line algorithms II (continuation of lecture 4)
6 9/13 Color I (includes link to PDF of overheads)
7 9/15 Color II
8 9/17 Rasterizing I: triangles
9 9/20 Rasterizing II: triangles continued
10 9/22 Rasterizing III: interpolating colors, general polygons
11 9/24 2D Clipping
12 9/27 The 3-D graphics pipeline
13 9/29 Intro to geometric transforms
14 10/1 Transformation matrices and homogeneous coordinates
15 10/4 Homogeneous coordinates and translation
16 10/6 Projection matrices and review for exam
18 10/11 3D Clipping
19 10/13 Go over exam
20 10/18 Visible surfaces: Fundamentals, BSP Trees
21 10/20 Visible surfaces: Warnock, the Z-buffer
22 10/22 Visible surfaces: ray casting, conservative visibility algorithms
23 10/25 Lighting I: the physics of illumination and reflection
24 10/27 Lighting II: diffuse and specular illumination
25 10/29 Lighting III: Phong lighting and applying illumination
26 11/1 Texture mapping I: the basic idea
27 11/3 Texture mapping II:  interpolation and perspective correction
28 11/5 Texture mapping III: antialiasing and the MIP-map
29 11/8 Advanced mapping techniques: shadow maps, 3-D textures (Slides by Professor McMillan)
30 11/10 OpenGL I
31 11/12 OpenGL II
32 11/15 Animation I: double buffering, scene graphs, matrix stacks
33 11/17 Ray tracing I: basic recursive approach
34 11/19 Ray tracing II: acceleration techniques
35 11/29 Acceleration techniques I: occlusion culling, LOD
36 12/1 Acceleration techniques II: Static LOD
37 12/3 Acceleration techniques III: Dynamic LOD
38 12/6 Radiosity
39 12/8 Radiosity; Recap up till midterm exam
40 12/10 Recap since midterm exam
EXAM 12/14 FINAL EXAMINATION: 9-12 AM (usual classroom)
Grading: The final grade will be calculated as a weighted average:
  • Assignments:  50% (dropping the lowest one--policy changed on 10/12)
  • Midterm:   15%
  • Final:   25%
  • Participation:  10%
Assignments will be graded using Professor Ryall's system: an assignment meeting all criteria gets 8/10 points, implementing "extras" can raise this to 9/10 points, and the single best assignment earns 10/10 points.  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 10% (i.e., 1 point on a 10-point scale).  Two days late loses 30%. After 2 days the assignment will be considered a zero.

However, each student has 5 (increased from 3 on 10/1) 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.