The course described on this page ended December 20, 2002

CPSC 324: Computer Graphics

      Department of Mathematics and Computer Science
      Hobart and William Smith Colleges

      Fall, 2002.

      Instructor:  David J. Eck  (

      Monday and Friday, 10:10 -- 11:05.
            Room Lansing 300.

      Wednesday, 10:10 -- 11:05.
            Library Multimedia Lab.

      Course Handout:

Lab Worksheets
Lab 1, September 4:
GIMP Painting Tools
Lab 2, September 11:
Basic OpenGL 2D
Lab 3, September 18:
Basic Blender 3D
Lab 4, September 23:
GIMP Color and Selections
Lab 5, October 2:
Last Look at Gimp
Lab 6, October 9:
Blender Modeling
Lab 7, October 16:
Blender Animation
Lab 8a, October 23:
OpenGL 3D, Part 1
Lab 8b, October 30:
OpenGL 3D, Part 2
Lab 9, November 6:
Blender Textures
Lab 10, November 13:
Blender Particle Systems
Lab 11, November 20:
Hierarchical Graphics
Lab 12, Part 1, December 4:
Alternative Rendering: Ray-tracing
Lab 12, Part 2, December 11:
Alternative Rendering: Radiosity

Student Web Pages
Joshua Austin Oscar Barney Nicholas Batyko
Walter Bengochea Mark Codere Lastina Foster
Michael Giovannini Matthew Herbster Evan Hourigan
Chris Hughes Omar Johnny Carlvin Johnson
Hsin-Wei Liu Christopher Moth Adrian Mott
Doo Ik Park Steven Quackenbush Christopher Roffe

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

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 Fall term of 2002.

First Week: September 2, 4, and 6

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: September 9, 11, and 13

We will start off the week by continuing with basic 2D drawing in OpenGL. You should read Chapter 2, pages 28 through 56. Note that the book is using the GLUT windowing system, whereas we will use QT. This doesn't change the OpenGL code, but it does change the names of the functions that the code goes in. This is how some of the functions in these two systems relate:

         function in GLUT   corresponding function in QT
         ----------------   ----------------------------
           init()              GLCanvas::initializeGL()
           display()           GLCanvas::resizeGL()
           reshape()           GLCanvas::paintGL()

On Friday, we will start looking at 3D graphics, using the 3D modeling program blender. The goal is to learn some 3D concepts before we start trying to program with them.

Third Week: September 16, 18, and 20

We will take a first look at 3D graphics this week, in the form of a lab on Blender, a three-dimensional modeling program. The only reading for the week is the lab handout on Blender. On Friday, however, we will move on to talking about color, which is Chapter 4 of the OpenGL Programming Guide.

Fourth Week: September 23, 25, and 27

On Monday, we will continue with our discussion of color. You should read Chapter 4, but note that we will not used indexed color in OpenGL. With a test coming up next Monday, we will spend most of Friday reviewing and talking about the Gimp.

Your OpenGL paint program (Lab 2, Exercise 2) is due in class on Wednesday. Lab 3 should be posted on your Web site this week, but I will not look at it until after Saturday, noon.

Fifth Week: September 30, October 2 and 4

There is a test on Monday, September 30. A review sheet for the test is available. On Wednesday, we will have our third and final lab on the Gimp. By Friday, we should be ready to start in on 3D graphics programming in OpenGL.

The exercise for Lab 4 should be posted on your Web site by Thursday, noon.

Sixth Week:October 7, 9, and 11

We will continue our study of three-dimensional transformations this week. The reading for the week is Chapter 2, pages 93--139. In lab, we will be looking at a few of the more advanced modeling techniques in Blender.

Seventh Week: October 16 and 18

There is no class on Monday, because of Fall break. We will have a lab on animation in Blender on Wednesday, and on Friday we will continue with our discussion of transformation and 3D graphics in OpenGL. There is no new reading for this week.

News: Blender has been officially released under the GPL license, which means that the source code is availablethat and that Blender is now permanently free. A new website,, has been established to support Blender as free software.

Eighth Week: October 21, 23, and 25

We finish up 3D modeling and viewing this week and move on to lighting and materials. You should Chapter 5. We will not cover the last two sections of this chapter (page 211 and later).

Ninth Week: October 28 and 30; November 1

I hope to finish material from Chapter 5 this week. Remember that there is a test coming up next Monday, November 4.

Tenth Week: November 4, 6, and 8

The second test of the term will take place on Monday this week. An information sheet for this test is available. After the test, we will working on textures. The lab on Wednesday will be on textures in Blender. On Friday, we will talk about textures in OpenGL. However, we will not go into any depth about OpenGL textures. If you are curious, you can look at Chapter 9, but this chapter is not assigned reading. The main reading for the week is the lab handout.

A sheet of information about the final project is available.

Eleventh Week: November 11, 13, and 15

We will spend some time this week looking at the mathematical foundation of 3D graphics: homogeneous coordinates and transformation matrices. You will find some information on this in Appendix F of the text. I also want to discuss briefly the calculations used in lighting, which are discussed on pages 205 to 208. The next topic in the course, and the subject of the final programming assignment, will be hierarchical graphics. The main source for this will be lecture and a C++ header file, but the ideas are also discussed in the text on pages 139 to 150.

Twelfth and Thirteenth Weeks: November 18, 20, 22, and 25

We will continue on the topic of hierarchical computer graphics for a while, and will then look at two other features of the simple modeling system that you are using: display lists and indexed face sets. Display lists are a feature of OpenGL that can improve efficiency when an object is to be drawn many times. They are discussed in Chapter 7. An indexed face set is a way of representing an arbitrary polygonal mesh object. It is not covered in the book. By November 25-th, we might move on to a discussion of ray tracing.

There is no class on Wednesday, November 27 or Friday, November 29 because of the Thanksgiving holiday.

Fourteenth Week: December 2, 4, and 6

The lab this week will be on ray-tracing with POV-Ray. We will spend Monday talking about these subjects.

There is a test coming up next Monday, December 9. An information sheet for the test is available.