CISC 440 -- Computer Graphics
Spring, 2006
Grades (including midterm)
| Instructor |
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 |
| ||||||
| 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 |
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.
|
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
|
| 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)
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. |
| 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 here. Mesa 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
Tutorials, sample code
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
|
|
|
|
| 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.
|
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] |
| 3 | 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 |