## CPSC 324:

Computer Graphics

Department of Mathematics and Computer Science Hobart and William Smith Colleges Fall, 2002. Instructor: David J. Eck (eck@hws.edu) Monday and Friday, 10:10 -- 11:05. Room Lansing 300. Wednesday, 10:10 -- 11:05. Library Multimedia Lab. Course Handout: http://math.hws.edu/eck/courses/cpsc324_s01.html

Lab Worksheets Lab 1, September 4:

GIMP Painting ToolsLab 2, September 11:

Basic OpenGL 2DLab 3, September 18:

Basic Blender 3DLab 4, September 23:

GIMP Color and SelectionsLab 5, October 2:

Last Look at GimpLab 6, October 9:

Blender ModelingLab 7, October 16:

Blender AnimationLab 8a, October 23:

OpenGL 3D, Part 1Lab 8b, October 30:

OpenGL 3D, Part 2Lab 9, November 6:

Blender TexturesLab 10, November 13:

Blender Particle SystemsLab 11, November 20:

Hierarchical GraphicsLab 12, Part 1, December 4:

Alternative Rendering: Ray-tracingLab 12, Part 2, December 11:

Alternative Rendering: Radiosity

On-LineResources The Gimp

- http://www.gimp.org/ -- The home page for Gimp (the GNU Image Manipulation Program)
- Gimp Resources, a collection of patterns, brushes, etc., at gimp.org.
- "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.)
Blender

- http://www.blender3d.com/ -- The home page for Blender
- Elysiun -- a Blender user site
- BlenderBase -- A Blender "knowledge base" site
POV-Ray

- http://www.povray.org/ -- The home page for POV-Ray (the Persistence of Vision Raytracer)
- POV-Ray user manual (Local access only.)
- International Ray Tracing Competition, with many examples of ray-traced images
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
- Documentation for QT, a GUI toolkit that we will use for OpenGL programming. (Local access only.)
Other

- Final project information.
- Information about your Linux account
- CPSC 324 Web page from Spring 2001
- 3D Cafe -- An artist's site, including free stuff like textures and photos.
- 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 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, www.blender.org, 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.