Steam-powered Turing Machine University of Washington Computer Science & Engineering
 Project 2: Modeler - Required Extensions
  CSE Home     CSE 457    Modeler  About Us    Search    Contact Info 

Modeler
 Project Description
 Getting Started
 Required Extensions
 Bells and Whistles
 Project Artifact
   

Project Requirements

This project does not have a lot of requirements. However, the additions that we do require are definitely more complex than the ones for the first project. Also, there are many more possibilities to extend your project! Please start early.

  • First of all, you must come up with a character. This character can be composed solely of primitive shapes (box, cylinder, sphere, and triangle) (code for drawing these primitives is provided in the skeleton). It should use at least ten primitives and at least four levels of hierarchy. Use glTranslate(), glRotate() and glScale() calls to place these primitives in space. You must also use glPushMatrix() and glPopMatrix() to nest your matrix transformations. The modeler skeleton provides an easy way to create sliders and fetch their values for use in your model, you should make use of this framework.

  • Additionally, one of your sliders should function as an animation control. As you scrub the slider back and forth, your character should perform some simple animation. This slider should control multiple joints or components of your model. For example, you might have your character waving, which would require that you control the shoulder and elbow joints.

  • In the Camera class, there is a function called applyViewingTransform() that sets up the transformation for placing and orienting the camera. Currently, it is implemented using the gluLookAt() function. Your job is to implement this function yourself. You may choose to do this using glTranslate()s and glRotate()s, or alternately you can build the matrix yourself and use glMultMatrix() to apply the transformation. applyViewingTransform() takes three parameters. The documentation of the gluLookAt() describes its functionality as follows:
    gluLookAt creates a viewing matrix derived from an eye point, a reference point indicating the center of the scene, and an up vector. The matrix maps the reference point to the negative z axis and the eye point to the origin, so that, when a typical projection matrix is used, the center of the scene maps to the center of the viewport. Similarly, the direction described by the up vector projected onto the viewing plane is mapped to the positive y axis so that it points upward in the viewport. The up vector must not be parallel to the line of sight from the eye to the reference point.

    You are encouraged to look at the documentation of gluLookAt() yourself. Hint: check out the blue openGL book that is floating around the labs.

  • Finally, you are required to complete two bells (or equivalent) from the list below. Feel free to come up with your own ideas and pass them by us. If they're cool, we'll count them as bells and whistles.

Other than these requirements, you have complete artistic freedom on this, so be creative!


CSE logo Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to ethel]