CPSC 324: Computer Graphics
Department of Mathematics and Computer Science Hobart and William Smith Colleges Spring, 2001. Instructor: David J. Eck (eck@hws.edu) Tuesday, Thursday, 1:30 -- 2:55. Room Lansing 300. (But meeting on alternate Tuesdays in the Library Multimedia Lab.) Course Handout: http://math.hws.edu/eck/courses/cpsc324_s01.html
Student Web Pages
Lab Worksheets
Lab 1
January 30Lab 2
February 13Lab 3
February 27Lab 4
March 20Lab 5
April 3Lab 6
April 17Lab 7
May 1
On-line Resources
OpenGL
- http://www.opengl.org/ -- The main OpenGL site
- http://www.mesa3d.org/ -- The main site for mesa, the free implementation of OpenGL that we will be using in this course
- GLUT documentation, a description of the API for the OpenGL Utility Toolkit
The Gimp
- http://www.gimp.org/ -- The home page for Gimp (the GNU Image Manipulation Program)
- "Grokking The Gimp" -- A complete on-line book about the Gimp that we will use as a major resource for this course (also available in printed form)
- Gimp User Manual, with an annoying JavaScript table of contents
- Gimp Resources, a collection of patterns, brushes, etc., on the Gimp Web site
- Tutorials at gimp.org
Blender
- http://www.blender.nl/ -- The home page for Blender
- Blender Tutorial Links
POV-Ray
- http://www.povray.org/ -- The home page for POV-Ray (the Persitence of Vision Raytracer)
- POV-Ray user manual
- International Ray Tracing Competition, with many examples of ray-traced images
- Getting started with POV-Ray, a guide for novices.
Images and Textures
- Zoonet Image Archives, pictures of animals.
- NASA Image Collection
- A collection of free textures
Labs and assignments for CS 324, as well as other information about the
course, will be posted below as the course is taught
during the Spring term of 2001.
Fourteenth Week: May 1 and 3
As we finish up the term, we will have our final lab, Lab 7, on Tuesday. This lab deals with radiosty and ray tracing. On Thursday, everyone who wants to do so will have a chance to show off their final project. Then we will wrap up the course and do course evaluations.
The fourth and last programming project is due on Tuesday, but I have agreed to accept it on Thursday from anyone who wants to turn it in late.
Remember that your final project must be turned in by 7:00 PM on Saturday. Your Web portfolio must be in final form by 7:00 PM on Sunday. I will grade it on Sunday evening. You should have some representation of your final project in your Web portfolio by Sunday. I will email you your standing in the course after I have graded the Web portfolios on Sunday.
Thirteenth Week: April 24 and 26
There is a test on Thursday. An information sheet about the test is available.
On Tuesday, after I answer any questions that you have about the test material, we will talk about ray tracing and radiosity. We might also talk about some of the advanced features of OpenGL.
Your work for Lab 6 should be on your web site on Tuesday, but I will not be looking at it until Thursday.
Twelfth Week: April 17 and 19
Lab 6 is on Tuesday. On Thursday, we will talk about the final programming assignment. If time permits, we will begin ray tracing and radiosity. Here is a copy of the assignment.
Eleventh Week: April 10 and 12
We will be talking about texures and related topics in class this week. The OpenGL Programming Guide covers textures in chapter 9. However, most of this is advanced material which we will not cover. I suggest that you read pages 351-361, 405-413, and 418-420.
Tenth Week: April 3 and 5
Lab 5 is on Tuesday. Mostly, you will be working on blender animation. On Thursday, we will discuss the next programming assignment. Details on this assignement were sent to you by email and are also available here. Then we are going to start talking about display lists (Chapter 7) and move on to indexed face sets, which are efficient representations of polygonal meshes.
Ninth Week: March 27 and 29
You should read Chapter 5 in the OpenGL Programming Guide, except for the last section on "Lighting in Color-Index Mode".
Your work from the fourth lab should be on the Web by Tuesday. As I noted in an email message, you only have to do two out of the three exercises. However, I do expect you to do a reasonably good job on them to get full credit.
The first programming assignment with GObjects is due Tuesday of next week. There is a conceptual hurdle that you have to get over to do this assignment, and you need to think about it, work on it, and probably get help on it well before it is due. Here, again, is the project description from the handout: "For programming Assignment 2, which is due on Tuesday, April 3, you should create a 3D wireframe animation using the GObject graphics system. You might want to do some kind of attractive, complicated "mobile," for example. Your program must use a hierarchical model. There must be at least three levels in the hierarchy, and the animation must make changes on several different levels. If you do an unsegmented animation, you must have at least twelve basic objects. In a segmented animation, where your objects do different things in different parts of the animation, you can have fewer objects."I remind you that you can use blender on the Linux computers in the CS lab. Although blender does not work well over a network, it works quite well when you are sitting in front of the machine. To start blender, just use the command blender. The same fonts that are available under Windows can be found in the directory /home/cs324/blender/fonts.
Eighth Week: March 20 and 22
On Tuesday, we will meet in the library multimedia classroom for Lab 4. This is the first of three labs on 3D graphics using blender. It would be a good idea for you to read at least the first section of the lab ("Basics") before coming to class on Tuesday.
On Thursday, I will lecture on vectors, matrices, and homogeneous coordinates. We will not go deeply into the mathematics, but there are some things that you need to know.
Assignments due this week: By Tuesday, your work from Lab 3 should be on the Web. On Thursday, you have to turn in your one-paragraph proposal for a final project.
Seventh Week: March 6 and 8
I am departing a bit from the schedule that was listed on the course handout by moving up the topic of hierarchical computer graphics, before lighting and materials. A schedule for the rest of the term is available here. This schedule includes information about the remaining programming assignemnts and about the final project.
Next week, of course, is Spring break!
Sixth Week: February 27 and March 1
This week, we just have a lab on Tuesday and a test on Thursday.
Fifth Week: February 20 and 22
This week we will continue with the important topic of geometric transformations. You should continue reading Chapter 3 in OpenGL Programming Guide. Note that you are only responsible for the material up to page 150. Furthermore, pages 143 to 150 cover a topic that we will be doing in more detail later (hierarchical computer graphics). For now, you should just be comfortable with the general idea of composing geometric transformations.
Your first programming assignment is due in class on Thursday. You should complete all the work for Lab 2 by Tuesday of next week. There will be a test on Thursday of next week.
Fourth Week: February 13 and 15
There will be a lab on Tuesday of this week. It will cover a bit of OpenGL animation, but will concentrately mainly on the GIMP. The exercises for this lab will be due in two weeks. In the meantime, you should also be working on your programming assignment, which is due next Tuesday. Don't expect to do this one the night before it's due!
On Thursday, we will start talking about three-dimensional graphics. You should begin reading Chapter 3 in the OpenGL Programming Guide. We will continue with this topic next week.
Third Week: February 6 and 8
For the first class this week, we will continue the discussion of drawing in OpenGL, and we will look at GLUT and GLUT callback functions in more detail. This will include information about how animation is done in OpenGL using the glutIdleFunc. On Thursday, we will study color in general, and talk a bit about how colors are used in the GIMP.
The reading for the week includes Appendix D (about GLUT) and Chapter 4 (about color) from the OpenGL Programming Guide. For more information on GLUT, you can check out the on-line documentation. You will find that GLUT has some capabilities that I'll never mention in class, such as pop-up menus.
For much of next week's lab, you will be working with the GIMP. While you are only really required to know what is covered in lab, you might want to start reading more about the GIMP. You could start with Chapter 1 of the on-line book Grokking the GIMP.
The exercises for Lab 1 are due on Thursday. On Tuesday, I will hand out a new, longer-term OpenGL programming assignment. (It will be to write a much improved 2D draw program based on my draw1_double example.)
Second Week: January 30 and February 1
On Tuesday of this week, we will have our first lab in the Library computer lab. The worksheet for the lab is available at http://math.hws.edu/eck/cs324/lab1/. Note that the exercises for this lab are due next week, on Thursday, February 8.
The reading for the week is Pages 27 through 66 of Chapter 2 from the OpenGL Programming Guide. We will not cover the remainder of Chapter 2. Note that the brief section on normal vectors, and a few of the other details, will not be relevant until we start doing three-dimensional graphics in OpenGL. In general, you are not required to memorize all the OpenGL commands. You should know that they exist, for reference, but on tests you will only need the more prominent commands, such as glBegin, glVertex, glColor, and so on. (I will give you a list before the test.)
First Week: January 23 and 25
We will not really get started on homework until after the first lab next Tuesday. However, you should read Chapter 1 of the OpenGL Programming Guide, even though you shouldn't expect to understand it completely. And before Thursday's class, you should read the handout from Scientific American that I will give you on Tuesday. You could also check out some of the above links to graphics resources on the Web.
Note that one of the requirements for this course is to make a Web site. If you don't already know how to make Web pages, please read the introductory material on HTML from Section 6.2 of my on-line Java textbook. Note that there is a directory named www in your account on math.hws.edu. Anything that you put in this directory is published on the World-Wide Web. Your home page should be a file named index.html in this directory. The address of this page on the web is either of the form http://math.hws.edu/~username/ or http://math.hws.edu/user/username/ where username represents your user name. (Which address is used for your home page depends on how recently your account was created). It would be a good idea for you to have at least a basic Web page set up for yourself by next Tuesday.