Robot Arm

Project 2: Articulate

Assigned: Tuesday, 19 October 1999
Due: Tuesday, 2 November 1999
Artifact: Tuesday, 9 November 1999


Project Objectives

In this project you will use a simple OpenGL modeling tool create and animate a character of your own design. You will become familiar with 3D hierarchical modeling and transformations.

What is a Hierarchical Model?

A hierarchical model is a way of grouping together shapes and attributes to form a complex object. Parts of the object are defined in relationship to each other as opposed to their position in some absolute coordinate system. Think of each object as a tree, with nodes decreasing in complexity as you move from root to leaf. Each node can be treated as a single object, so that when you modify a node you end up modifying all its children together. Hierarchical modeling is a very common way to structure 3D scenes and objects, and is found in many other contexts.

Here is a how-to on building and using the modeling tool that you should definitely go through before jumping into this project!

Project Requirements

First of all, you must come up with a character. This character must be composed solely of primitive shapes (box, generalized cylinder, sphere, and triangle), but use at least ten primitives and at least four levels of hierarchy. You must also use at least one each of the glTranslate(), glRotate() and glScale() calls to position these primitives in space (and you will probably use many of all of them!) You must also use glPushMatrix() and glPopMatrix() to nest your matrix transformations. The modeler has facilities for creating user interface widgets such as sliders and hooking them to different features of your model. You must use at least one of these to add a simple animation to your model - have your character do some simple action as you scrub a slider back and forth.

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

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.

Bells and Whistles

One bell is worth two whistles. Some of these will require altering the modeler tool itself. If you do them, keep in mind that we will be modifying the modeler for project 4 - be prepared to integrate your changes with ours (or just lose them).

[bell] Use a texture map on all or part of your character. (This requires altering the implementation of the primitives shapes to include texture coordinates.)


[whistle] Change the default light source to illuminate your scene more dramatically.


[bell] Build a complex shape as a set of polygonal faces, using the triangle primitive to render them.


[bell] [bell] Use some sort of procedural modeling (such as an L-system) to generate all or part of your character. Have parameters of the procedural modeler controllable by the user via control widgets.


[bell] Make an additional animated sequence your character can perform.


[bell+whistle] Add some widgets that control adjustable parameters to your model so that you can create individual-looking instances of your character.


[bell+whistle] Give you character a recognizable way of expressing at least three moods (for example: happy, sad, and puzzled), and have it change its mood periodically with no input from the user.


[bell] [bell] If in addition to mood cycling you have your character react differently to UI controls depending on what mood they are in.