Project 1: Path Editing

Screenshot
The Program

Adam Hupp
Stephane Blardone

Reads most BVH files, including arbitrary numbers of channels and arbitrary 
rotation orders.
	exceptions :
		- files that have comments
		- files with footplant data at end
		- files with speling errors in tokens

The program writes any file it can read, although non-zxy rotation orders may 
not work since I have seen no data to test it on.


As of the Fri. it was due we we did not have it working well with most motions. It would edit some paths correctly but there were significant artifacts in 
the characters movement.  The path could be arc-length parameterized, but this
was somewhat error-prone as well.

Subsequently we fixed the bugs and now it correctly path edits any motion it 
can open.  Orientation is maintained along the new path.  The path is 
arc-length parameterized and velocity is maintained correctly along the path 
for each frame.  This is done by storing the derivative at each 
point as a percentage of the total motion.  This ensures the velocity will 
remain correct as long as the spline error is constant across the motion.

The camera automatically follows the motion, and is placed at a point that 
allows the user to see the whole motion.  The user can rotate the camera 
around the root of the character and zoom.

There is a second camera mode that provides an orthographic view of the x-z 
plane.  This facilitates editing of the path.

Both B-Splines and Catmull-Rom splines are supported, although the latter 
of course does not work as well.

The character is displayed as stretched ellipses.  Traces may be put on the 
end effectors.  They show the effector's entire path and change color from 
blue to white to show the currrent time.

Projected shadows are drawn, and the user can move the light around.  
Reflections are also drawn.  The character can be drawn with motion blur.