Assignment 3

Handed out:  Tuesday, November 3, 1998
Due:  5pm, Tuesday, November 17, 1998


This assignment is designed to familiarize you with hierarchical 3D modeling and keyframe animation. The project will involve the creation of an articulated object in the Virtual Reality Modeling Language (VRML) that will contain a number of animated movements that can be triggered by a user.

VRML is a language that allows you to describe 3D objects and environments. Users can browse through these 3D environments and interact with the objects. VRML allows the objects to be animated and provides methods that trigger the animation through events such as a user "touching" them in the virtual environment. The language is less complex than a programming language such as C, but more complex than the standard HyperText Markup Language (HTML) that describes 2D web pages. For the assignment, you will have to write a description of your object and its actions in VRML 2.0.

The way in which objects are created in VRML is similar to that of OpenGL. In both, an object's geometry and material properties are defined, and the geometry is positioned by specifying and applying a number of hierarchically defined 3D transformations. VRML will be used instead of OpenGL because it automatically maintains many of aspects of the graphics state and interface, allowing you to focus on creating and animating the object hierarchy. Additionally, this will expose you to another way in which 3D models are created.

Getting started with VRML 2.0

You can view VRML 2.0 files using a web browser (such as Netscape 3.0 or higher) and a VRML 2.0 plugin viewer.  There are many VRML viewers out there, one of the most common being Cosmo Software's CosmoPlayer.  Unfortunately for the VRML 2.0 standard, however, not all viewers treat VRML in the same way; the same VRML world may look slightly different on two different viewers.  For this reason, we will be doing our grading on CosmoPlayer 1.0 for IRIX, which is the version set up on the Sweet Hall SGIs.  You many develop your VRML model on any system that you like, but test your model in Sweet Hall before you turn it in.  To get versions of CosmoPlayer for Windows or Mac, go to the Cosmo Software web site (  If you choose to use some other viewer, note that you will be using VRML 2.0 for the assignment; there is a lot of VRML 1.0 material on the web and it is not a strict subset of VRML 2.0. Make sure that you only use things that are VRML 2.0 compliant.

If you are working on the Sweet Hall SGIs, all that you should need to run the CosmoPlayer plugin is to load a URL that has the extension .wrl, which should be automatically recognized by Netscape (make sure that you save your work in files that end with .wrl as well).  If that doesn't work, try adding the following lines to your ~/.cshrc  file:

setenv NPX_PLUGIN_PATH /usr/pubsw/lib/netscape/plugins

or run the following which will add it for you:

To see if CosmoPlayer is working, go to the Hello World page.

To get you started in authoring VRML 2.0 content, there will be an Introduction to VRML 2.0 tutorial session held on Thursday, November 5, from 7:15-8:45pm in Gates B03 that will be broadcast live on channel E4.

General information on VRML can be found at Online documentation and tutorials for VRML 2.0 information can be found at the following places:

  1. Some useful info can be found at
  2. A nice step-by-step tutorial of VRML 2.0 from SIGGRAPH 96 can be found at
  3. A number of examples can be found at  These are a good reference for basic 3D transformations.
  4. One last place to look for reference info is
If you are interested in finding out more about VRML we suggest looking at the optional textbook The VRML 2.0 Handbook: Building Moving Worlds on the Web by Jed Hartman and Josie Wernecke. It should be available at the bookstore and is published by Addison-Wesley Developers Press.  Also, to see some really neat articulated models, check out some of the animated VRML characters from Protozoa at (but be warned: some of these VRML files might be a little buggy).

Modeling an Articulated Object (50 points)

Your first task is to compose a scene tree which models an articulated object. This object could be anything from a skeletal figure to a mechanical object to a plant to whatever, as long as it is complex enough. Your object should have the following properties:
  1. (15 points) The object tree should have a depth of at least 4, containing at least 20 transformation nodes, and at least 1 use each of scaling, translation, and rotation.
  2. (15 points) The object should contain at least 10 primitives using 3 different primitive types (Box, Cone, Cylinder, Sphere, etc). Using LOD nodes, you should make two versions of the model: a high-resolution version that contains all of the objects with a lot of detail (ie: has many polygons and looks smooth), and a version of the model that uses less than 200 polygons and closely resembles the high-resolution one. The low polygon count model is useful for display on machines without hardware graphics support (such as your average PC), and allows many objects to be displayed in a multi-user environment without significantly decreasing the rate at which frames can be rendered.
  3. (20 points) The object should be interesting. These 20 points will be based on how compelling and/or complex the objects is. 20 points will be given for an extremely interesting and complex object, 10 for one that resembles something and is moderately complex, and 0 for something that is simple and boring.

Animation (50 points)

Your next task is to animate both versions of your model with the same movements. The end goal is to make an articulated object that contains a number of interesting movements that can be triggered by user manipulation. For example, if you have a skeleton you could have it wave when the user clicks on its right arm.
  1. (15 points) The object should have 3 different animated sequences that are triggered by user manipulations. It is sufficient to have each sequence triggered by simply clicking on a part of the object.  You must document how your manipulations are activated in your README file.
  2. (15 points) Your scene tree should contain at least 10 total animated joint transformation nodes.
  3. (10 points) One of the object's animations should have the same configuration in the first and last frames of the animation, and this action should repeat in a cyclical manner.
  4. (10 points) The animations should be smooth, with adequate keyframes to prevent sudden jumps, and the animations should depict a plausible movement. 10 points will be given for animations that look completely realistic and fluid, 5 point will be given for animations that are mechanical and well-executed, and 0 for ones that just make the object move through random rotations and translations.

Other stuff

CS248: Introduction to Computer Graphics, Pat Hanrahan, Fall 1998