Date Assigned: Monday, October 27, 1997
Date Due: Monday, November 10, 1997
Artifact Due: Wednesday, November 12, 1997
In this project you will use VRML (Virtual Reality Modeling Language) to create and animate a character of your own design. You will become familiar with 3D hierarchical modeling, transformations and some basic keyframe animation. After you are finished, we can create a 'virtual classroom' accessible through the web, filled with everybody's characters.
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 ro o t 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 really common way to structure 3D scenes and objects, and found in many more contexts than VRML.
VRML makes hierarchy a breeze. The types you work with are called nodes; There are Shape nodes, Attribute nodes, Group nodes and many others. There will be mores coverage of the VRML language in the Project 2 help session. Overall, it's a pretty easy language to learn and use, and though we do not have any manuals available in the lab (yet), there are loads of resources on the web. Be aware as you are exploring that we will be using VRML 2.0, also known as "moving worlds," which is quite different from VRML 1.0. Stay away from VRML 1.0 tutorials, they will probably just confuse you. Some good tutorial and reference sites are:
http://vrml.sgi.com/developer The most comprehensive site with lots of links to tutorials, demos, and the VRML 2.0 specification
http://www.vruniverse.com/tutorial.shtml Some not-so difficult tutorials, also part of an extensive site \
http://www-venus.cern.ch/vrmltut Well - organized documentation
http://www.sdsc.edu/siggraph96vrml/ Notes from a VRML class given at the SIGGRAPH 96 conference
http://www.sdsc.edu/vrml/ "An impartial, comprehensive, community resource for the dissemination of information relating to VRML"; Their words, not ours.
The language specification itself resides at http://www.vrml.org/VRML2.0/FINAL/spec/index.html
but it can be reached via most of the sites listed above. Especially useful to you will be the chapters on Nodes and Fields and Events.
A recommended book is The VRML Handbook written by Jed Hartman and Josie Wernecke. We will try to make copies available in the lab.
Not that you'll have any trouble fining cool VRML demos on the web, but just to start you off with some that we like: http://www.mediadome.com/Webisodes/Dilbert/Strip/index.html has 3D Dilbert comics
http://mfpwww.jpl.nasa.gov/vrml/vrml.htm has cool mars stuff and you can fly on the pathfinder trajectory around the solar system!
http://vrml.sgi.com/worlds/ , http://www.netscape.com/comprod/products/navigator/live3d/cool_worlds.html
all have long lists of stuff.
First of all, you must come up with a character. This character must be composed solely of primitive shapes (box, cylinder, cone, and sphere), but use at least ten primitives and at least four levels of hierarchy. You must also use at least one each of the translation, rotation and scale fields of the transformation node. Other than that, you have complete artistic freedom on this, so be creative! When creating your model, keep in mind that the units of measurement you use for size should correspond roughly to meters (1 meter = 3.28 feet = default radius for a VRML sphere).
OK - once you have all that done, you must create an animated sequence that begins when the user clicks on a part of your model. Make the first keyframe match the last keyframe so that the movement can smoothly repeat itself until the user clicks again.
You are required to complete two Bells (or equivalent) from the list below:
One bell is worth two whistles
Before implementing any bells and whistles save your original file for reuse in project 3
Use a texture map on all or part of your character
Add a light source illuminate your scene.
Use a more complex shape, like a point set, indexed line set, or indexed face set in your model. (If you do this, keep a copy of a strictly primitive-shape-based model for use in project 3.)
Make another animated sequence your character can perform.
Better yet, give your character superpowers by doing something to adjust the whole scene (fog, viewpoint shifting), or making something appear and disappear at will when the user clicks on your character.
Allow for adjustable levels of detail (Hint: check out the LOD node type)
Define your entire character as a PROTO and add some adjustable parameters to your prototype so that you can create individual-looking instances of your character.
Give you character a recognizable way of expressing at least three moods (for example: happy, sad, and puzzled), and have them change their mood periodically with no input from the user.
Make your character respond to collisions (this involves collision detection and some type of animated reaction)
If in addition to mood cycling you have your character react differently to clicks (or collisions) depending on what mood they are in.
+ Variable extra credit for anything else cool you can think up! Have fun!
When you are finished with this assignment, type 'make clean' to clean up unnecessary disk space.