CPSC 324, Spring 2004
Information about the Third Test


The third and final test in this course will take place on Friday, April 30. It will cover everything we have done since the previous test; earlier material will be covered only to the extent that new material depends on it. Reading from OpenGL Programming Guide includes Chapters 5 and 7 on Lighting and Materials and Display Lists. You are required to have only a reading knowledge of OpenGL functions that are used for lighting and material. In addition to the material on OpenGL, we have covered some other topics, including: homogeneous coordinates and transformation matrices, the physics of lighting and materials, object-oriented hierarchical graphics and my "Models" framework, indexed face sets, ray-tracing, and radiosity.

There is no final exam in this course, but the final project is due during the scheduled final exam period. You can turn in your project between 10:00 AM and noon on Monday, May 10. I prefer that you come in and present your project to me, but that is not absolutely required. Your Web site for the course should be complete by 2:00 PM on Monday, May 10. Remember that your final project is worth 17% of the course grade, and that you get an overall grade for your Web site that is 8% of the course grade.

Important terms and ideas for the test include:

homogeneous coordinates <x,y,z,w>
points at infinity
using matrices to represent transformations
why are homogeneous coordinates used
lighting in OpenGL
"lit" vs. "unlit" objects
glEnable(GL_LIGHTING)
materials in OpenGL
glMaterialfv(sides, property, value_vector)
difference between materials and basic colors
diffuse color
ambient color
emissive color
specular color
specular exponent
specular highlights
normal vectors
glNormal3f(dx,dy,dz)
lights in OpenGL
glEnable(GL_LIGHT0)
setting position of lights with homogeneous coordinates
attenuation of lights
physics of lighting:
   how the color of a vertex is determined from the normal vector,
   the material colors, the direction of incoming light, the
   distance to the light source, and the direction of the viewer
faceted vs. smooth appearance of polyhedral objects;
   "normals-per-face" vs. "normals-per-vertex"
object-oriented hierarchical graphics
representing a scene graph using objects
the Object class in "Models":
   object->addTransform(transform)
   object->setColor(r,g,b)
the BasicObject class in "Models"  (a subclass of Object):
   new BasicObject(x), for x = SPHERE, CUBE, CONE, CYLINDER, LINE
the Model class in "Models" (a subclass of Object):
   model->addObject(object)
   inherits addTransform, setColor, etc., from the Object class
using the Model class to build hierarchical models
the Light class in "Models" (a subclass of Object)
the View class in "Models"
   view->setViewEye(x,y,z)
   view->setViewCenter(x,y,z)
   view->setViewUp(dx,dy,dz)
   view->setViewVolume(xmin,xmax,ymin,ymax,zmin,zmax)
   view->setNDCViewport(hmin,hmax,vmin,vmax)
Normalized Device Coordinates
using multple views of the same world
Indexed Face Sets:
   vertex list
   face data
   front faces and back faces of polygons (based on vertex ordering)
display lists in OpenGL:  
   what are they and why are they used
   listID = glGenLists(1)
   glNewList(listID, GL_COMPILE)
   glEndList()
   glCallList(listID)
advantages and disadvantages of OpenGL-style graphics
ray tracing:
   casting a ray
   determining the color of a point using ray-tracing
   the recursive ray-tracing algorithm
   reflected ray
   refraction
   refracted ray
   casting a ray to a light source
   anti-aliasing in ray-tracing
radiosity:
   relationship to ambient lighting
   patches
   the radiosity equations
   form factors
   "shooting" energy from a patch