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