The course described on this page ended May 10, 2004

CPSC 324: Computer Graphics

      Department of Mathematics and Computer Science
      Hobart and William Smith Colleges

      Spring, 2004.

      Instructor:  David J. Eck  (

      Monday and Friday, 12:20 -- 1:15.
            Room Lansing 300.

      Wednesday, 12:20 -- 1:15.
            Math/CS Computer Lab (Lansing 312).

      Course Handout:

Lab Worksheets
Lab 1, January 21:
GIMP Painting Tools
Lab 2, January 28:
OpenGL 2D
Lab 3, February 4:
Introduction to Blender
Lab 4, February 11:
GIMP Color and Selection
Lab 5, February 18:
Last Look at the GIMP
Lab 6, February 25:
3D Graphics with POV-Ray
Lab 7, March 3:
OpenGL 3D Modeling
Lab 8, March 10:
Blender Curves and Animation
Lab 9, March 24:
Blender Advanced Modeling
Lab 10, March 31:
Lighting and Materials
Lab 11, April 7:
Blender Particle Systems
Lab 12, April 14:
Object-Oriented Graphics
Lab 13a, April 21:
Option 1: Blender Production
Lab 13b, April 21:
Option 2: More POV-Ray
Lab 14, April 28:
Radiosity in Blender

Student Web Pages
Levi Arthur Walter Bennett Karl Brautigam
Lindsay Craig Emily Herzfeld Jarred Laub
Ben Schechter Mackenzie Small Erin Scholomiti
Mark Treilman

The Gimp
  • -- The home page for Gimp (the GNU Image Manipulation Program)
  • Gimp Resources, a collection of patterns, brushes, etc., at
  • "Grokking The Gimp" -- A complete on-line book about the Gimp, also available in a print version. I will ask you to read parts of this book. (Local access only.)
  • Grokking The Gimp, at its home site.

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 2004.

First Week: January 19, 21, and 23

After an introductory lecture on Monday, we will have our first lab on Wednesday. On Friday, we will start talking about OpenGL programming. You should read the first chapter of the "OpenGL Programming Guide", even though you will not be able to understand all of it at this time.

Second Week: January 26, 28, and 30

We continue with OpenGL 2D programming. The reading for the week is Chapter 2 of OpenGL Programming Guide, but only up to, and not including, the section named "Polygon Details" (pages 27 to 56 in the fourth edition). The homework exercises for the week will be two OpenGL programs, which you will begin in lab. Don't forget that your Web page for Lab 1 must be on-line at the correct Web address by Wednesday!

Third Week: February 2, 4, and 6

In the lab for this week, you will have your first experience with 3D graphics. On Monday, in preparation for this, we will spend the day talking in general terms about some of the major aspects of 3D graphics, and we will will take a look at Blender, the application that you will use in the lab.

On Friday, we will turn to the topic of color. You should read Chapter 4 in the OpenGL Programming Guide.

Fourth Week: February 9, 11, and 13

We will continue talking about color on Monday, starting with indexed color models. There will also be a short discussion of graphics file formats (GIF, PNG, JPEG) -- material that is not in the book. We will also look at alpha-blending and anti-aliasing. This material is covered in Chapter 6 of the OpenGL Programming Guide, but you do not want to deal with all the details covered in that chapter. Everything that you need to know is covered on pages 225 to 229, 232 to 233, and 241 through 245. The lab for the week is related the use of color and alpha channels in Gimp.

Remember that there is a test next Monday, February 16. An information sheet is available.

Fifth Week: February 16, 18, and 20

After the test on Monday, we will have our final lab on the Gimp on Wednesday. Starting Friday, we will be concentrating on three-dimensional graphics. For this material, you should start reading Chapter 3 in OpenGL Programming Guide. It will take us a while to cover the material in this chapter.

Sixth Week: February 23, 25, and 27

Starting on Monday, February 23, several candidates for a computer science teaching position will be on campus. As one of your homework assignments for this course, you are required to attend three of the candidates' talks.

We will be continuing with three-D coordinates and transformations this week. You should read the rest of Chapter 3 in OpenGL Programming Guide. The lab for this week introduces the 3D graphics program POV-Ray. The lab will give you some practical experience with 3D coordinates while creating some pretty ray-traced images. (Note: We are departing from the original tentative schedule of labs for this course.)

Seventh Week: March 1, 3, and 5

We will be finishing up the section of the course on modeling, viewing, and projection transformations. This material is covered in pages 97 to 148 of Chapter 4 in the OpenGL Programming Guide. There is more material following Page 148 in this chapter; we will return to it in a few weeks. For now, we will be turning back to Blender to look more closely at animation.

The topic of this week's lab is 3D modeling in OpenGL.

Eighth Week: March 8 and 10

For the lab this week, we will return to Blender. The main topic of the lab is animation. The only reading for the week is the lab handout.

We have only two classes this week because Spring Break begins on Friday. Classes resume on Monday, March 20, after break.

Ninth Week: March 22, 24, and 26

On Monday, we will look at hierarchical computer graphics, where a complex object is built up out of simpler objects. We will see how this is done in OpenGL and in Blender. In the lab, you will also work with some other advanced modeling techniques. The reading for the week consists of the lab worksheet and the remainder of Chapter 3, pages 147 to 158 in the OpenGL Programming Guide.

A description of the final project for this course is now available.

There is a test coming up next week, on Monday March 29. We will cover some material on homogeneous coordinates and transformation matrices (Appendix F in OpenGL Programming Guide) on Friday, but that material will not be on the test.

An information sheet about next Monday's test is available.

Tenth Week: March 29 and 31; April 2

There is a test on Monday. After the test, we will be turning to the topic of Lighting and Materials, Chapter 5 in the OpenGL Programming Guide. Part of the lab on Wednesday will be a tutorial introduction to Lighting and Materials in OpenGL, and we will begin the topic more formally on Friday.

Eleventh Week: April 5, 7, and 9

We continue our study of Lighting and Materials in OpenGL, Chapter 5 in the OpenGL Programming Guide. You should finish reading that chapter. By Friday, we should begin a discussion of a sample object-oriented hierarchical graphics system, defined in the file Models.h. Sample programs using this system can be found in /home/cs324/gl_models, and it will be the subject of next week's lab.

For the lab this week, you'll be looking at particle systems in Blender. (This has nothing in particular to do with the material that we are covering in class, but it's an interesting topic on its own.)

Remember that you should be thinking about your final project. The topic proposal for your project is due on Monday, April 19.

Twelfth Week: April 12, 14, and 16

Since we didn't get to it last week, we will be starting in on the object-oriented graphics system defined in Models.h this week. The lab this week uses this system. In addition to the system itself, there are a few pieces of background that we will need to cover in order to understand it fully, including indexed face sets and OpenGL display lists. Display lists are covered in Chapter 7 of the OpenGL Programming Guide.

Don't forget that the annual department dinner is at 6:00 on Thursday in the the Commons (Faculty Dining Room) in Scandling Center.

Thirteenth Week: April 19, 21, and 23

We will talk about OpenGL display lists on Monday. The reading for this material is Chapter 7 in OpenGL Programming Guide. On Friday, we will start talking about issues related to rendering, which will lead us to a discussion of how ray-tracing works.

For this week's lab, you will do one of two options. The first option is related to Blender, while the second option uses POV-Ray. You can do either one. Since you should now be working on your final project, you do not have to do any work on this lab outside of class. You get six points for showing up and working on the lab in class.

Remember that the third test of the term is next week, on Friday, April 30.

Fourteenth Week: April 26, 28, and 30

On Monday, we will talk about another advanced rendering method, radiosity. In the lab on Wednesday, you will work with radiosity in Blender. Remember that you must be present to get credit for the lab, and you are not expected to do any work on this lab outside of class.

The third and final test of the term is on Friday. An information sheet is available.

End of Term: May 3 and 10

Monday, May 3 is the last day of class. Final projects are due by noon on Monday, May 10. Web portfolios must be in final form by 2:00 PM on May 10.

Congratulations and best wishes to graduating seniors! And to everyone, have a nice summer!