CPSC 424: Fundamentals of Computer Graphics
Spring 2008


Stina Bridgeman
Lansing 312, x3614

  Office Hours

M 1:30-2:30, T 10:30-11:30, W 4-5, F 1:30-2:30
or by appointment (schedule)

Class Hours /
Meeting Place

Lecture MWF 3:00-3:55pm, Lansing 301


Course Links

OpenGL Links

Note: The online versions of the Red Book and Blue Book document older versions of OpenGL, but should still be useful. For serious OpenGL development, it is worth investing in the current (print) editions.

Project Links

C++ Links

Unix Links


[4/17] Check out /classes/s08/cs424/OpenSteerDemo - this is the behavioral animation demo from class on 4/16 (including capture the flag and driving through an obstacle course). Some modes use function keys to control certain parameters; those are printed on the display if applicable. Press 'h' and look in your shell for a listing of other commands you can use (e.g. to switch between modes or change the camera angle).

[4/9] When you move on to a new phase of the project, you can delete the old "viewer" executables (sceneviewer, intersectviewer, etc) - they are large, and keeping them all around may cause you to run into disk quota issues. If you do get a "quota exceeded" message at some point, delete some files before logging out (or else you may not be able to log back in).

[3/19] The scene file directory has been reorganized, and the current intersectviewer likely won't be able to find the scene files any more. The easiest way to fix this is to do the setup for the "Basic Raytracer" project - you can then continue working on the intersection code.

[3/7] The problem that was mentioned in class (concerning the provided code for project 4b) turns out to not actually be a problem, so it is fine to go ahead and work on the coding.

[2/20] The demo has been updated for oblique parallel projections, and a new oblique2a.scn scene file has been added since fixing the bug in the demo means that the scene in oblique2.scn is now mostly not in view. Keep in mind that the shear matrix for oblique parallel doesn't keep the left, right, top, bottom of the view window in the same place - taking those changes into account is important when translating the center of the view volume to the origin.

[2/18] If you have copied the provided files for the projection project to your directory before now, it likely overwrote your camera.cc file. (That's why you have backups!) To restore your camera:

[2/17] If you try to compile the projection project and get the error /classes/s08/cs424/provided/camera/*.o: No such file or directory, open up src/makefile and change the lines

sceneviewer: ${SUBDIRS}
        g++ -o $@ ${LDOPTS} scene/camera.o ${PROVIDED}/camera/*.o


sceneviewer: ${SUBDIRS}
        g++ -o $@ ${LDOPTS} scene/camera.o ${PROVIDED}/camera/obj/*.o

[2/17] For the bonus: EYE_LEFT and EYE_RIGHT are public constants defined in the Camera class, so you need to refer to them as Camera::EYE_LEFT and Camera::EYE_RIGHT when you are outside the Camera class.

[2/15] There has been a small reorganization in the provided code directories for the raytracer project. The upshot is that your camera project won't compile until you do the "setup" steps for the projection project. Doing the setup for the next project, however, will fix your makefile to work with the new organization.

[2/12] A bug in the sceneviewer demo has been fixed. This mostly affects the rollVC operation for the cube. (The bug had to do with what happens to eye and lookat when you roll, pitch, yaw, etc - while eye and lookat don't change for roll because you are rotating around the axis containing both of those points, they may change for the other operations. In the VC versions, the axis of rotation definitely no longer contains lookat. The demo wasn't properly updating these and was still using the old version of the renderer which was based on drawOpenGL to setup the camera; the new version of the demo uses getViewMatrix to setup the camera, like in your program - and so it not sensitive to bugs in the updating of eye and lookat.)

[2/11] A change to the provided files for Camera means that it should be easier to test getViewMatrix, because that is used by the support code to position/orientation the camera in the scene. Thus, if you load a scene and it doesn't look right, you know that there's likely a problem with getViewMatrix. There is a side effect to this change, however, which is that until you've implemented getViewMatrix, you won't see anything if you load a scene into the viewer.

[2/10] The linalg.h file contains some free functions for operations like dot and cross products. Look it up in the API documentation for more information.

[2/10] Office hours on Wed 2/13 will be from 1:30-2:30pm instead of their regular time due to a department colloquium.

[2/7] Project #1 (Camera) is posted on the syllabus page, along with some C++ tips (linked above.

[1/21] If you do not have an account on the department Linux computers or have forgotten your password, email scottyorr at hws dot edu. Include your login (if you have one).

[1/21] Welcome to CPSC 424! This web page is your source for a great deal of important and useful material, so you should take a few minutes to familiarize yourself with the website. Check back often for announcements and new information.

Valid HTML 4.01!