Recent Changes - Search:

Advanced Graphics 2009

All Pages
All Changes

Login

Yangk / Project2WriteUp

A description of the limitations of your parser.

Our parser parses and stores all the channels specified. It expects the hierarchy definition of the joints followed by the motion definition. The parser will display an error message if the join definition is not standard. We store the all the channels definition of joints and process each of these channel separately so it doesn't matter which order the position or rotation channels are specified. A few of the bvh files specified 6 channels for each joints so currently the function that computes the position of the joints ignores the position channels except for the first joint because we did not know what the position channel for the rest of the joints were used for.

A list of the basic requirements that you have working.

  • Reads in BVH files
  • Displays the motions in an interactive viewer
  • Our ground plane has a logo texture with shadow and reflection
  • Support some simple editing operation like combining two or more motions or user-specified portion of the motions. The user can specify the number of frames to blend. Zero would equal contatenation. More than zero frames would be blended linearly. To align the motions, we take the transformation for the beginning of the second motion and apply the inverse of the transformation at the end of the first motion.
  • Draws traces of the end-effectors (it currently draws 2 seconds ahead but that could be easily changed)
  • Different rendering options for the motion: lines, ellipsoids, and variations of a stick figure (the stick 2 variations use the bounding sphere information to compute the size of the cylinders and spheres so that small or large skeletons will look similar). My favorite is the one of the stick figure with the custom face which looks for a file named 'face.png' and loads this file as the face of the stick person so the user could make the face look like anything they want
  • The default camera tries to show the whole animation by computing the bounding box of the motion and using that information to project the camera back enough to see the whole motion
  • There were a few bhv files where 0 was not the floor position so we use the lowest y position of the first frame as the floor position

A list of all of the bonus features that you've implemented.

  • An auto camera that tracks the motion. It basically finds a bounding sphere of the guy and moves the camera 5 times the bounding sphere radius. To stop the camera from being to bouncy, pretend the camera is put inside a box so the camera will only move if the camera is at the edge of the bounding camera box.
  • Strobes. One type of strobe draws 6 previews of the motion in different colors. Another type of the strobe draws 6 trailing motions.

A list of any outside code that you used (libraries, ...)

  • FLTK 1.1.9 for the GUI
  • Eigen2 library for doing quaternions and matrix transformations
  • GLUT

A description of how to use your program. Describe the basic interface, and how to access the features. In particular, be sure to describe how you specify what blends/concatenations to do.

The program should be pretty simple to use. There is a load button that allows the user to load multiple bhv files. Once the files are loaded, they will be listed in a bvh file listbox. The active motion will be selected in blue. To change to a different motion, just select it from the listbox. There is a file menu on the top containing the following menus: Render Options, Camera, and Skeleton. Render Options toggles shadow, reflection, fps, colored preview, trailing motion, and end effector traces. The Camera toggles changes the camera type to free or auto. The Skeleton enables the user to change the way the skeleton looks: lines, ellipsoids, and variations of a stick figure.

To play/stop the animation, click on the play button. Next to the play button is a slider showing the current frame which can be moved manually. To the right of the slider is a repeat toggle button. To the right of the repeat button is an fps slider which enables the user to specify the current fps to play the motion at.

There is a single and a multiple files button that will toggle between displaying the current active single motion or the multiple motion. To combine motion, just select a motion in the list of motion files and click on the right arrow button. The user can add as many motions as they want to combine. Once the motion added to the list of multiple files, the user can select a motion and specify the range of the motion to use and the number of frames to blend (note that the number of blend frame in the last item in the list will not do anything since there is no animation that comes after it).

Image showing skeleton rendered using lines and trailing motion.

Image showing skeleton rendered using a stick guy and strobe colored motion.

Image showing skeleton rendered using ellipsoids.

Image showing skeleton rendered using a stick guy with a custom face.

Image showing skeleton rendered using lines and concatenation between two motions.

Image showing skeleton rendered using lines and blending between a cartwheel and a jump.

Assessment of every other group's project

Eric and Blayne's will properly read and write motion files (the writing thing being something not as many groups did as far as I could tell.) The also have the neat tracing thing that draws out the paths of the end effectors. They got blending working, not quaternion and hacky, but it works and it looks alright.

Yoh, Brandon, and Finn's project reads in motion (though if you want it to concatenate more than one, you have to plug it into a script and load that) and displays it looking pretty good. They've also got tracing and blending working, both of which are also presentable.

Dan, John, and Adrian's group actually read the stress-test motion and displayed it (though it looked sort of funky.) The rest of the files they read looked pretty good, they can do looping. Their blending, done with SLERP, looks good with reasonable motions and they figured out the right alpha value to combine panicked running with regular running to get something that looks just like C3PO.

Jeff, Will, and Ryan's group draws most of the time, without normalizing the size of the skeletons like John's group does (unless that was Alex's group that normalizes them, I don't remember.) They've got strobing, as well as drawing every frame of the motion simulataneously. While I'm not sure what good that does, it looks pretty cool. They've also got non-quaternion blending that looks ok.

Cory, Alex, and Tom's group also draws as long as there are three channels per joint (otherwise their parser breaks, but they assure me it's very good otherwise.) Even if the parser breaks, though, the program doesn't crash, it just draws funny. They set up the camera to have a view that will show the entire range of the motion so the figure doesn't walk off screen, and they do strobing that looks quite good. They also do same skeleton blending that looks a little off.

Overall if we were going to pick another group's to act as a base for project 3, it would be either Finn's, Blayne's, or John's, because those consistently draw and blend correctly. Probably Dan, John, and Adrian's because I think their blending is set up the best.

History - Print - Recent Changes - Search
Page last modified on April 21, 2009, at 07:40 AM