B582-Spring 2000 - Programming Assignment #2
"Simple Modeler"
Goal:
To create a simple 3D modeling application for the CAVE
CAVE Programming Concepts:
-
Interface design issues
-
Interprocess communication via shared memory
-
Scene database modification
-
CAVE navigation transformations
-
Methods for direct manipulation
-
Simple selection methods
Misc Info:
-
Due: Thursday, Feb. 24 by 5:00pm (demo in lab or before)
-
Value: 100 points (20 pts for interface design, 80 for implementation)
-
Sample Executable: available here (right-click
to save as, then use chmod 755 DemoPS2)
-
Additional code resources: TBA the week of 2/7.
Tasks:
Our goal is to implement a simple modeling package for the CAVE.
Specific functions which should be incorporated in this modeler include:
-
the ability to select between different shapes (e.g. sphere, cube, cone,
cylinder, octahedron, etc.)
-
the ability to select a diffuse color for the shape
-
the ability to determine the size, position, and orientation of the shape
-
the ability to select and modify the position and orientation of a shape
-
the ability to navigate through the environment
-
Begin by determining how you will map the above functions onto the standard
interface provided by the CAVE. You may assume the use of the three
wand buttons, the joystick, and the position and orientation of the wand
(and, if desired, the head). Feel free to introduce distinct modes
into the interface. Describe this mapping in a short text document;
include brief explanations for why you chose the particular mapping for
each function. (This portion is worth 20 points; creativity (without
sacrificing functionality) will be rewarded.)
-
Run the sample executable and familiarize yourself
with one possible implementation of the function set. My implementation
works as follows:
-
To change the shape, hold down the left button and move the joystick up
or down (y direction)
-
To change the color, hold down the left button and move the joystick left
or right (x direction)
-
To change the position and orientation of the shape, simple move or rotate
the wand.
-
To change the size of the shape, hold the middle button down; the shape
will grow from its minimum size of 0.2 feet in each direction to a maximum
size of 2.0 feet.
-
Releasing the middle button will place the object at the last position,
orientation, and size
-
To reposition or reorient a placed shape, depress the right button while
the wand is inside the bounding sphere of the object. While the right
button is down, the selected shape should follow changes in the wand position
and orientation.
-
Now code your version of the modeler as described in your design above.
(This portion is worth 80 points.)
Additional Features (for extra credit):
-
Delete a selected object
-
Provide for non-uniform scaling
-
Select a texture map for the object
-
Modify the shape and color of an object that has already been placed
-
Save a scene out in a simple file format; load a saved file via the command
line
-
Anything else you can think of ?