This course ended on May 10, 2010

CPSC 424: Fundamentals of Computer Graphics

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring 2010.

   Instructor:  David J. Eck  (

   Course Handout:

   Monday, Wednesday, Friday, 1:55--2:50, Room Lansing 301.
   Lab:  Tuesday, 11:55 to 1:20, Lansing 310.

Lab 1, January 26
Geometry and Java Graphics2D
Lab 2, February 2
Introduction to the GIMP
Lab 3, February 9
Moving into 3D
Lab 4, February 16
Introduction to Blender
Lab 5, February 23
OBJ Files and IFS's
Lab 6, March 2
Blender Modeling
Lab 7, March 9
Drawing without glBegin/glEnd
Lab 8, March 23
Blender Animation
Lab 9, March 30
Walk Through
Lab 10, April 6
Blender's Sequencer
Lab 11, April 13
Work on Final Projects
Lab 12, April 20

Some Links:

End of Term: May 3 and 9

It's all over except for the final projects. Your Blender animation is due at lab on Tuesday, May 4. Your final OpenGL project is due at the scheduled final exam period, at 7:00 on Sunday, May 9. Here are my office hours for this final week of the semester:

          Sunday, May 2        11:00 -- 4:00
          Monday, May 3        11:00 -- 12:10
          Tuesday, May 4       10:00 -- 11:00
          Wednesday, May 5     11:00 -- 4:00
          Thursday, May 6      11:00 -- 5:00
          Saturday, May 8      11:00 -- 4:00
          Sunday, May 9        12:00 -- 1:20

Week 14: April 26, 28, and 30

We continue with assorted topics in OpenGL. We will look at an example of OpenGL's selection mode. (Source code here.) We will talk briefly about the problems of dealing with translucent objects. And we will spend at least a little time on GLSL, the language for writing vertex and fragment shaders.

We will also look at some examples of GLSL programs. Applet forms of the examples can be found at this link.

For the lab this week, you can work on your final projects. Remember that your Blender animation project is due next Tuesday, May 4, the last day of class. And your OpenGL programming project is due at the regularly scheduled final exam period, Sunday, May 9, at 7:00 PM.

Don't forget that the deparment's Spring Dinner is this Tuesday, April 7, at 6:00 PM on the lower floor of the Barn!

Week 13: April 19, 21, and 23

There is a test on Friday of this week. An information sheet is available.

The lab for this week uses some of the techniques that we talked about last week for working with textures. This will be our last regular lab.

We have finished the basic material on OpenGL (geometry, lighting, material, and textures). There will be no more sections for the textbook. In class this week, we will talk about the OpenGL rendering pipeline and some of the ways that processing can be controlled at various pipeline stages.

Here is a link to the stereo viewing applet that we looked at in class. The source code for the main program and for the modified modified Camera class are also available.

Week 12: April 12, 14, and 16

We will continue our discussion of textures this week. This material will be covered in Section 4.5., which is not complete as this note is being written. It will be completed and handed out in class soon. In the meantime, you can read what is available so far on the web. The section on textures will be the last section of the book that I will write for this semester. We will spend the rest of the term looking at various other topics in OpenGL and computer graphics, but I won't be writing about them.

You should be working hard on your two final projects, in Blender and OpenGL. For the lab this week, you can use the period to work on final projects and get help from me on them.

Week 11: April 5, 7, and 9

We will be taking a break from OpenGL for at least part of this week. I will lecture on some alternatives to OpenGL rendering. Mostly, I will cover classic ray-tracing, but I will also spend a little time on radiosity and perhaps some other rendering techniques. There is no reading for this material, just the lecture. (But you might do some on-line browsing to see what you can find on the topic of ray tracing.)

For the lab this week, you will work with the sequencer in Blender. Hopefully, you will have some time to work on your final project.

Week 10: March 29 and 31; April 2

We are working on Chapter 4. We have just begun discussing OpenGL lights, and we will continue that on Monday and Wednesday. On Friday, we should start a more in-depth look at textures.

Kevin Guay will be talking about OpenGL ES on Monday or Wednesday.

Week 9: March 22, 24, 25

Part of the class on Monday will be a demonstration of Blender animation. The lab on Tuesday will be on the same topic.

We still have to finish up Section 3.5, on projection and viewing. After that, we begin Chapter 4, which will cover materials, lighting, and textures.

Kevin Guay will do his presentation on Friday (or possibly Monday of next week). The topic will be OpenGL ES.

Week 8: March 8, 10, and 12

We will continue to talk about vertex arrays and vertex buffer objects (Section 3.4) on Monday and most likely on Wednesday as well. The lab on Tuesday will also be on that material. After that, we'll cover projection and and viewing more thoroughly than we have so far, in Section 3.5, which I hope to have ready by Friday.

Your work from Labs 5 and 6 should be turned in before class on Wednesday.

We'll have our first student presentation on Wednesday of this week. Travis will be telling us about WebGL.

Next week is Spring Break. Have fun -- and come back ready to work on the 22nd. We will be covering lights and materials when you get back, with a lab on Blender animation.

Week 7: March 1, 3, 5

There is a test on Wednesday of this week. An information sheet is available

On Monday, I will answer questions about the upcoming test. In the remaining time, I will give a Blender modeling demo in preparation for the lab on Tuesday.

On Friday, we will move on to Section 3.4 of the notes, which covers vertex arrays and the glDrawArrays method, an alternative to glBegin/glEnd.

Week 6: February 22, 24, and 26

We will continue working on the first three sections of Chapter 3 this week. We still have a bit of linear algebra to do. After that, we will cover the various "primitive types" that can be used in glBegin, from Section 3.2. We have already covered some of the material on polygonal meshes from Section 3.3, but there is more to cover, and we might get to that by Friday.

The lab for the week is on Indexed Face Sets and OBJ files.

Note that there is no test on Wednesday of this week, even though the syllabus lists one for that date. As announced in class, the test is the following Wednesday, March 3.

Week 5: February 15, 17, and 19

Blender, the 3D modeling and rendering program, will be demonstrated in class on Monday, and the lab on Tuesday will get you started with working with Blender yourself.

As for OpenGL, we will finish up any remaining material from Chapter 2, and we will move on to Chapter 3. Chapter 2 provided an overview of OpenGL. Chapter 3 fills in details of the geometric aspects of OpenGL. The chapter starts by covering the essential facts about linear algebra that you need to know to understand 3D graphics, but we will probably have to start with some material from later in the chapter, to get ready for next week's lab.

For a handout with more information about term projects, click here.

Week 4: February 8, 10, and 12

We should come pretty close to finishing Chapter 2 this week. You should finish reading that chapter. We are moving into 3D graphics. At the end of last week, we covered the various OpenGL 3D coordinate systems and the transformations from one to the other, and we started talking about some of the essential OpenGL settings for 3D graphics. On Monday of this week, we will start creating geometry and applying modeling transforms and hierarchical modeling in 3D. The lab on Tuesday is based on this material.

We will move on to covering display lists, which can significantly speed up repetitive rendering tasks, normal vectors, which are required for correct lighting calculations, and textures, which are 2D images that are applied to the surfaces of 3D objects. (Depending on how things go, we might not start textures until next week.)

Week 3: February 1, 3, and 5

On Monday, I will demonstrate the Gimp (GNU IMage Processing program), and we will discuss how you might implement some of its features using Java's BufferedImages. The lab on Tuesday is also about Gimp. This is a break from the geometric modeling we have been doing so far.

On Wednesday, it's back to OpenGL. We will discuss scene graphs from 2D scenes, Section 2.1.5. By Friday, we will start Section 2.2 and three-dimensional graphics.

Week 2: January 23, 25, and 27

The first lab of the course is on Tuesday. It will be about geometric transforms and hierarchical modeling in Java Graphics2D. We will continue to discuss this topic on Monday. After that, I might have a few more words about Chapter 1, but I am eager to move on to programming with OpenGL and Jogl. To start, for at least the rest of this week, we will work with OpenGL in two dimensions. The reading for this material is Section 2.1.

Week 1: January 20 and 22

Welcome to Fundamentals of Computer Graphics. We will begin the semester on Wednesday with an overview of the rest of the course. On Friday, we will jump right into two-dimensional graphics in Java with Graphics2D. A major goal of the next few classes will be to understand geometric transforms and hierarchical modeling.

You should read Chapter 1 of the on-line notes for this course. We will be spending this week and most of next week on this chapter.