This is the first assignment for which you will work in teams of two. If you have trouble finding a partner, let us know as soon as possible. The next assignment you will have to work with a different partner.
You can write this program from scratch, extend your assignment 3 modeller, or work from a simplified version of your modeller, which at least has the following features:
Put all created objects in your scenegraph.
Your program should be able to output to the screen and to an Inventor file. You may use the Inventor NURBS classes to render to the screen. You'll have to compute the Bezier curve yourself though, using a recursive approach. When writing to a file, the user has the option of writing all curved surfaces as soIndexedFaceSets with a certain resolution. Be sure to support general saving and loading (you may design your own format). Also submit a file which shows off the curves your program can create.
If your modeller didn't already have this feature, add it now: the user can specify an arbritrary number of camera positions and orientations. Use the positions as a control polyline to create a smooth camera path. Then the user has two options: fly along this path, or save the animation to separate image files. Make sure that the camera maintains constant speed along the path, but start and end with zero speed (for example slowly accelerate in the first second, and slowly deccelerate in the last). Also allow the user to specify the total number of frames in the movie.
|The winning digit "4" for the art contest||2 points (!)|
|Some predefined shapes. Have at least a paraboloid, hyperboloid (saddle), and torus||1 point|
|Multiple Bezier segments patched together, allow the user to specify C0, G1 or C1 continuity||1 point|
|Textures. Note that Inventor texturizes NURBS easily. You should create the texture coordinates for the tesselations.||1 point|
|When using Frenet frame for extrusions, gracefully handle cases where curvature vanishes or inverts.||2 points|
|Varying scale and rotation along an extrusion spine. Add the ability to edit 2D graphs specifying the amount of scaling and rotation along the spine. Specify the rotation using yaw, pitch and roll angles.||2 points|
|Be able to edit camera motion in a similar way to a full-fledged extrusion spine: 3D path, orientation (yaw,pitch,roll) relative to Frenet frame, zoom (instead of the extrusion scale), and velocity specified by splines||2 point|
|Objects with animation paths (same complexity as camera motion).||1 point|
|VRML 2.0 output, this time not using ivToVrml etc., but by writing the VRML yourself. Use the Extrusion node for both extrusions and surfaces of revolution.||2 points|
|Error bounded tesselation: the user specifies the maximum distance between the curve/surface and the tesselation. Please explain/prove in your writeup how you guarantee the error bound.||3 points|
|Nice looking seashells (see "Modeling seashells", Deborah R. Fowler, Hans Meinhardt, SIGGRAPH92, pp. 379-387)||3 points|