CISC 440 -- Computer Graphics

Spring, 2006


Grades (including midterm)


Course information

Readings

Instructions

Schedule


 

Course information

 

Instructor

Christopher Rasmussen

E-mail: cer@cis.udel.edu

Office: Smith 409 

Office hours: Tuesdays, 11-12 am and Thursdays, 1:30-2:30 pm

 

TA

Bill Ulrich

E-mail: ulrich@cis.udel.edu

Office hours: Wednesdays, 3-4 pm and Fridays, 2-3 pm in Pearson 115


Web page

http://vision.cis.udel.edu/cg

 

Description

A first course in computer graphics covering fundamental concepts and techniques related to rasterization, textures, 2-D and 3-D transformations (including perspective projection), shading, hidden surface elimination, and anti-aliasing, as well as selected topics in modeling, animation, ray tracing, and global illumination.

 

Schedule

Tuesdays and Thursdays from 3:30 pm to 4:45 pm in Smith 221

 

Prerequisites

This is a course for advanced undergraduates.

 

We will be using C/C++ and OpenGL to do programming assignments.  No prior knowledge of OpenGL is assumed, but experience with C/C++ and advanced data structures is a must (i.e., CISC 220).

 

Familiarity with basic concepts in linear algebra (e.g., vectors, matrices, matrix multiplication) is essential in order to follow the material.  

 

Grading

60% 4 assignments worth 15% each.  Each homework will be due 2 weeks after being assigned.
15% Midterm exam
25% Final exam

 

Programming assignments will be graded on the basis of correctness, efficiency, and originality.  This is not an introductory programming class, so coding style is not critical.  However, if you want partial credit for something that doesn't quite work, it needs to be well-commented and easy to follow.

 

For the overall course grade, a preliminary absolute mark will be assigned to each student based on the percentage of the total possible points they earn according to the standard formula: A = 90-100, B = 80-90, C = 70-80, etc., with +'s and -'s given for the upper and lower third of each range, respectively.  Based on the distribution of preliminary grades for all students (i.e., "the curve"), the instructor may increase these grades monotonically to calculate final grades.  This means that your final grade can't be lower than your preliminary grade, and your final grade won't be higher than that of anyone who had a higher preliminary grade. 

 

Academic

policies

 

Programming projects are due by midnight of the deadline day (with a small grace period of a few minutes afterward, but don't push it).  They should be e-mailed to the TA.  A late homework is a 0 without a valid prior excuse.  To give you a little flexibility, you have 6 "late days" to use on homeworks to extend the deadline by one day each without penalty.  No more than three late days may be used per assignment.  Late days will automatically be subtracted, but as a courtesy please notify the instructor (and CC the TA) in an e-mail of your intention to use late days before the deadline.

 

The two exams will be closed book (i.e., no reference materials allowed).  Unless otherwise instructed, you are responsible for all material covered up to the day of the exam, both from the assigned readings (everything in the Readings column of the Schedule below) and in lectures (excluding guest lectures). 

Students can discuss problems with one another in general terms, but must work independently on programming assignments.  This also applies to online and printed resources: you may consult them as references (as long as you cite them), but the words and source code you turn in must be yours alone.  The instructor reserves the right to use software to screen submitted code for similarity to other students' work and code available on the web.  If it is determined that plagiarism has occurred on a homework or test, everyone involved will get a 0 for that assignment or test.  A second occurrence will result in a failing grade for the course.  The University's policies on academic dishonesty are set forth in the student code of conduct here.

 

top


 

Readings

 

Note: You can get Adobe Acrobat Reader for reading PDF files here

 

 

Textbook (required)

*

Fundamentals of Computer Graphics (2nd ed.) [Shirley]

Peter Shirley

AK Peters, 2005

 

Textbook web site

Supplemental readings

*

OpenGL Programming Guide (2nd ed.) [Red book]

M. Woo, J. Neider, & T. Davis

Addison-Wesley, 1997

 

HTML version (substitute "glut" for all "aux" references)

PDF

 

Errata: http://www.woo.com/errata.html

 

This book is not required, but it has a lot of useful OpenGL background and explanations.  The "Readings" section below will indicate chapters that give more information on the OpenGL calls relevant to the current class topic.

top


 

Instructions

 

OpenGL

How to run

 

Sample program: hello.cpp

 

* composer machines (strauss, mahler): Makefile.  Make sure to set your LD_LIBRARY_PATH in order to find shared libraries when the program runs (details in makefile).  The version of Mesa linked here is 2.6, vs. 5.0.1 on stimpy and the ACAD machines below, but there shouldn't be any differences for the assignments we do.

 

* stimpy: Makefile

 

* ACAD/ECL machines: Makefile.  

 

If you want to log into any of the above machines remotely and open a window, you need to configure X windows to display on your local machine.  From a Unix machine, you should connect using ssh -X remote.machine.name.  From Windows machines, you need an X Windows server that supports the OpenGL GLX extension such as cygwin/xfree (caveat: be advised that interactive programs may run very slowly because of the double lag of running OpenGL in software and transmitting over the network).  If you want to go this route, you'll also need an SSH client to enable SSH tunneling.  To run xfree, substitute the command xwin -multiwindow for running Exceed in passive mode in the tunneling instructions.

 

* Windows PCs with cygwin installed: Makefile.  When running the setup tool, make sure that the "Devel" category (containing the gcc compiler) and the "Graphics" category (containing the "opengl" package) are chosen to be installed.

 

* Your own PC (without cygwin):  There is information on OpenGL versions for Windows, MacOS, and Linux hereMesa is a free cross-platform OpenGL equivalent (which is the library the UD makefiles above link to).  GLUT can be gotten here.

 

Some miscellaneous instructions on compiling OpenGL/GLUT programs.

 

References

 

Man pages

 

gl functions

glu functions

glut functions

 

Tutorials, sample code

 

Red book code examples

Mesa demos (also in the demos directory of the TOP path in all three makefiles above)

Tutorials at opengl.org

Code from the OpenGL Programming Guide

Advanced code examples at SGI

Advanced tutorials from Nate Robins allowing interactive parameter modification

 

Documentation

 

OpenGL specifications

 

 

 

Homeworks

Assignment submissions should consist of a directory containing all code (your .cpp files, makefile, etc.), any output data generated (e.g., images, movies, etc.), and an explanation of your approach, what worked and didn't work, etc. contained in a separate text or HTML file.  Do not submit executables or .o files, please!

 

Every student will be given an ID code for grading purposes.  The directory you submit for each assignment should be compressed after giving it a specific name based on your ID code.  If, for example, you are a student named Jane Smith with ID code 0483 and you are turning in homework #5, then your directory will be called 5_0483.  This directory must be compressed by tar'ing and gzip'ing it into a file called 5_0483.tar.gz or just zip'ing it into 5_0483.zip.  The resulting file should be turned in by e-mailing it to the TA.

 

You may develop your C/C++ code in any fashion that is convenient--that is, with any compiler and operating system that you want.  However, we will be grading your homework on a Linux system with a makefile, and so you must avoid OS- and hardware-specific functions and provide a makefile for us that will work (like one of the templates above).  If you are unfamiliar with the make command and makefiles, there is some background information here and here.

 


top


 

Schedule  

 

Note: The blue squares in the "#" column below indicate Thursdays.

 

The numbered "Readings" indicate chapter and section numbers in the textbooks.  The readings are best viewed

as references for the lectures with which they are listed, rather than the primary source of information.

The Shirley selections especially might work best if read after the lecture.

 

Certain mathematical symbols may display incorrectly in Powerpoint files for the lectures without the

TexPoint add-in installed.

 

# Date Topic Readings Notes Handouts
(homework, slides, code)
1 Feb. 7 Introduction  Shirley, 1-1.5 Graphics background,
course information
 
2 Feb. 9 OpenGL Red book, 1, 2 (stop

 before stippling)

Program initialization, 2-D drawing, geometric
primitives, transformations with OpenGL, GLUT
 [ppt]
[code]
Feb. 14 Basic Animation Red book 1, 2   Double-buffering for motion,
idle function, user interface; basic sprites
 [ppt]
[animation code]
 [Drop! code (version 1.1)]
[HW #1]
 4 Feb. 16
Register/Add deadline Feb. 20
2-D Textures
 Red book 8, 9
More on sprites, blending, HW #1  
5

Feb. 21

Rasterization Shirley, 3.5 Line drawing  [ppt]
6

Feb. 23

Rasterization

Shirley, 2.10-2.11, 3.4, 3.6

Linear interpolation, barycentric coordinates,
filling triangular regions 

7 Feb. 28 2-D, 3-D Geometry Shirley, 2.4, 5.2-5.2.2, 6-6.1.5, 6.2 (skip 6.2.1-6.2.2), 6.3 (skip 6.3.1) Vector & matrix review, homogeneous coordinates, 2-D & 3-D transformations 

HW #1 due

[ppt]

8 Mar. 2  3-D Geometry Shirley, 6.3.1-7.2

Red book, 3

  More 3-D transformations, camera manipulation & the view volume  HW #2
[ppt]
9 Mar. 7 3-D Geometry

Shirley, 7.3-7.5

Red book, 3, G

Perspective projection  Basic coaster code
[ppt]
10

Mar. 9

Clipping, hidden surface elimination

Shirley, 12-12.2.4, 8.2, 12.4 Geometry pipeline, when to do clipping, backface culling , Z-buffering [ppt]
11 Mar. 14 Shading

Shirley, 9-9.2;

Red book, 5

Radiometry: diffuse, specular reflection, BRDFs  [ppt
12 Mar. 16 Shading Shirley, 2.10-2.11, 9.3, 19-19.2;
Red book, 5 
Gouraud/Phong shading details; OpenGL lighting & material functions
HW #2 due
[ppt]
2003, 2004 midterms
13 Mar. 21 Midterm review
 [ppt]
14 Mar. 23 MIDTERM EXAM

 
Mar. 28 NO CLASS
Spring break


 

Mar. 30

NO CLASS
Spring break

 



15

Apr. 4

Shading
Artistic shading, toon drawing
16 Apr. 6 Shape modeling   Shirley, 15.1.0, 15.3-15.3.3, 15.5.3 15.6-15.6.1  Bezier curves, Catmull-Rom splines, subdivision, morphing application [ppt
17 Apr. 11 Ray tracing   Shirley, 10.1-10.4 Ray tracing basics, shadow rays   [ppt]
HW #3
Apr. 13
Withdrawal deadline
Apr. 17
NO CLASS
Instructor illness
  

18 Apr. 18 Ray tracing Shirley, 10.5-10.7 Reflections,
HW #3 code review
 [ppt]
19 Apr. 20 Ray tracing    Refractions, anti-aliasing  
20 Apr. 25 Ray tracing "...Bidirectional Ray Tracing",
Paul Heckbert
Light paths, caustics, bidirectional ray tracing  [ppt]
HW #3 due
21

Apr. 27

Shape modeling
Guest lecturer:
Bill Ulrich
Shirley, 16.3-16.4 Skeletons, skinning HW #4 (posted Apr. 30)
22

May 2

Textures in 3-D

Shirley, 11.2

Red book, 9

3-D texture mapping; filtering, anti-aliasing [ppt]
23

May 4

Textures in 3-D

 Shirley, 11-11.1.2, 11.5-11.7 Bump, environment mapping    [ppt]
24 May 9 Motion   Shirley, 16.5-16.8 Particle systems, procedural animation  
25 May 11 Final review   [ppt]
 HW #4 due Monday,
May 15
May 16 NO CLASS
Instructor at conference
   
 

May 23

FINAL EXAM 

in regular classroom at 7 pm


   

top