B582-Spring 2000 - Programming Assignment #3
"VRML Rube Goldberg Competition"
updated 3/22/2000
Goal:
To create a simple "Rube Goldberg"
contraption for the desktop and the CAVE using VRML
VRML Concepts:
-
simple VRML modeling
-
animation through timers and interpolators
-
simple scripting for triggers and synchronization
-
sensors for interaction
Misc Info:
-
Due: Monday, March 27 by noon.
-
Value: 50 points
-
Sample Code:
-
Working with VRML on SGIs
-
when modeling with CosmoWorlds or Showcase, it is difficult to determine
the final scale and orientation of the object. Use the models below
to help you. Import these reference models while working on your
objects (.iv for showcase, .wrl for cosmoworlds), then size and orient
your shape relative to these reference models. Be sure to delete
the reference model before saving your scene.
-
to convert from Inventor to VRML2:
-
/usr/sbin/ivToVRML foo.iv > foo.vrml1
-
/usr/sbin/vrml1tovrml2 foo.vrml1 > foo.wrl
-
to convert RGB images to PNG
-
/usr/sbin/imgcopy foo.rgb foo.png
-
to convert RGB images to GIF or JPEG
-
/usr/sbin/imgcopy foo.rgb foo.jpg
-
or use xv
Tasks:
1. Design a Rube Goldberg style contraption or animation sequence.
Your system should contain a minimum of four objects which move in sequence,
plus a method to trigger the sequence and a button to reset the objects
so that the sequence can be repeated. It is recommended that you
plan your contraption or sequence on paper before coding. See the
official Rube Goldberg web
site and gallery
for some inspiration.
2. Implement your design using VRML97. You may wish to start with
the sample as a basis for your code, modifying for your particular sequence
using the VRML97 specifications
and the VRML97 SIGGRAPH course
notes. (The VRMLScript
spec is also available.) You may wish to create your static models
in showcase or CosmoWorlds and incorporate them via Inline
nodes. Please code the animations (interpolators) by hand; do not
use a keyframe animator such as that provided by CosmoWorlds.
3. Test your application on the desktop using CosmoPlayer, and in the
CAVE using cave6u. For the CAVE, remember that units are assumed
to be meters (although you can override that via the .caverc) and that
the "walk" viewer is preferable to the "examiner" viewer. (e.g. add
the following
node to your code):
NavigationInfo {
type ["WALK", "ANY"]
#can still switch to examiner on desktop
speed 10
#travel speed in units per second
}
Also remember that there is no support for the Text
node, so any text should be handled through texture mapping.
4. Bring you judge's hat on Wednesday, March 29; the class will select
a winning design. The winner will receive a special award and
bonus.