Assignment 3
Handed out: |
Tuesday, November 3, 1998 |
Due: |
5pm, Tuesday, November 17, 1998 |
Overview
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 (http://www.cosmosoftware.com).
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:
/usr/class/cs248/assignments/assignment3/cosmoenv
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 http://www.vrml.org.
Online documentation and tutorials for VRML 2.0 information can be found
at the following places:
-
Some useful info can be found at http://www.cosmosoftware.com/developer/
-
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.
These are a good reference for basic 3D transformations.
-
One last place to look for reference info is http://www.wasabisoft.com/Book/book.shtml
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 http://www.protozoa.com/vrml_scenes/family/
(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:
-
(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.
-
(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.
-
(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.
-
(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.
-
(15 points) Your scene tree should contain at least 10 total animated
joint transformation nodes.
-
(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.
-
(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
-
Check the Assignment 3 FAQ every day or two. You are responsible
for any information given there.
-
As your model gets larger and more complicated, you'll want to separate
parts of the model into different .wrl files. Read up on
the PROTO and EXTERNPROTO keywords, and on the Inline node.
-
The CosmoPlayer plugin and Netscape may not work perfectly together, and
may crash in some circumstances. This is a big pain, but there's
nothing we can do about it right now. It should work well enough
for you to develop and test your VRML model.
-
The error messages given by most VRML browsers are not very helpful.
In CosmoPlayer, you can get more information on errors by displaying the
console (under the Options menu). This is extremely informative, giving
syntax errors and line numbers for VRML as well as embedded JavaScript.
You can also find a VRML validator at http://www.trapezium.com/vorlon.html.
-
To put everyone on an equal playing field, we do not want you to use any
third-party VRML modeling or world-building tools. However, you are
encouraged to write your own programs to generate VRML, if you so desire.
Just document your programs in your README, and include your source code
with your submission.
-
Don't ignore the double Level-Of-Detail requirement until the end; if you
do so, you will be unhappy when you need to break your painstakingly built
model in order to get your animations to look right.
-
This assignment has a larger artistic component than previous assignments,
so be prepared: difficult, intricate and interesting models will get you
more points. After you've completed the basic requirements of the assignment,
experiment with some of the other capabilities of VRML, such as lighting
and textures. Impressive and/or artistic extensions to the assignment
may earn you up to 5 points of extra credit.
CS248: Introduction to Computer Graphics,
Pat Hanrahan, Fall 1998