CS 248: Introduction to Computer Graphics
Pat Hanrahan
Assignment 3
Handed out: | Tuesday, February 18, 1997 |
Due: | 5pm, Thursday, March 6, 1997 |
Overview
This assignment is designed to familiarize you with hierarchical 3D
modeling and keyframe animation. The project will involve the creation of an
object in
the Virtual Reality Modeling Language
(VRML) that will contain a number of animated movements that can be
triggered by a user.
After the assignments are handed in, a multi-user virtual
gallery will be setup in which these objects are placed.
The class members can then enter the gallery using a web browser,
play with the objects,
and watch the animations
you have created.
VRML is a language the allows you to describe 3D objects and environments.
Users can enter 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.
You can view VRML 2.0 files using Netscape 3.0 (or a higher version number)
and a VRML 2.0 plugin viewer. The viewer on the Sweet Hall SGIs is
called Cosmoplayer. The suffix of VRML 2.0 files is ".wrl". When Netscape
and the plugin viewer are correctly setup you will be simply be able to
open a location in Netscape with the ".wrl" suffix and view the VRML file.
You will create an object by writing a VRML 2.0 file, have the file name
end in the suffix ".wrl", and view the object by opening the file in Netscape.
You will be using VRML 2.0 for the assignment. (Note: 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)
None of the textbooks for the class cover VRML 2.0. There will be an
Introduction to VRML 2.0 tutorial session held on Thursday, February
20 from 8:15-9:15pm in Skilling Auditorium that will be broadcast on
channel E2. There will also be a review session on Thursday, February 27;
more specific information on the review session will be posted in the
near future.
General information
on VRML can be found at http://vrml.sgi.com.
Online documentation and tutorials for VRML 2.0 information can be found at
the following places:
- A good source of documentation for the VRML 2.0 specification can be
found in the following way.
Go to http://vrml.sgi.com/develop/ ,
click on "Specifications" on the left hand column, click
on "VRML2.0 - Moving Worlds Spec" on the right hand side of the screen,
and then click on "The VRML 2.0 Specification" link. The information on
nodes is particularly useful.
- A nice step-by-step tutorial of VRML 2.0 from SIGGRAPH 96
can be found at
http://www.sdsc.edu/siggraph96vrml/course/toc.htm.
- A number of examples can be found at
http://www.wiley.com/compbooks/vrml2sbk/toc/toc.htm and are a good
reference for basic 3D transformations.
If you are interested in finding out more about VRML we suggest looking at
the book
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 it published by Addison-Wesley Developers Press.
Modeling an Articulated Object (50 points)
Your first task is to compose a scene tree which models an articulated
object. We have provided some example of objects that
we think at complex enough and your object can be anything from a skeletal
figure to a mechanical object to a plant.
Your object should contain the following properties:
- (15 points) The object tree should have a depth of at
least 4,
containing at
least 20 transformation nodes,
at least 1 of each type (scale, translation,
rotation).
- (15 points) The object should contain at least 10 primitives
using 3 different
primitive types. 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 a PC, and allows many objects to
be displayed in a multi-user environment without significantly
decreasing the rate at which frames can be rendered.
- (20 points) Represent an interesting object.
These 20 points will be based on how compelling and 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.
- (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.
- (15 points) Your scene tree should contain at least 10 total
animated joint transformation nodes.
- (10 points) 1 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.
- (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.
hanrahan@cs.stanford.edu
rsg@graphics.stanford.edu
Copyright © 1997 Pat Hanrahan and Reid Gershbein