....MotView Internals.
....This page was created to quickly summarize the source code for MotView. This will assuredly be quick, as since the source is available, it would be most beneficial for the interested party to delve directly into that mess. Consider this page a guide to your digging. Hopefully it will come in handy.

....Tools and Libraries Used:
....MotView was primarily developed in C++ using the Microsoft Visual Studio v6.0. Parallel development was done on a Linux-based intel machine to insure portability in the end, but the bulk was created in Windows NT. FLTK (and Dr. Michael Gleicher's helpful tutorials) offered a fast and easy windowing environment for both platforms and caused few headaches throughout. SGI's STLibraries were used in the implementation of the data structures and helped immensely in the rapid creation of MotView. Two people, Steven Dutcher and Andrew Gardner were also used in the creation of the final product.

....Data Representations:
....The motion capture data in MotView relies heavily on SGI's STL tools. Once opened, all of the rotations for all of the frames of animation are stored in a series of 'Vectors' which are referenced with a 'Map.' This allows for robust node addition and removal, but also introduces the bug where no two joint names can be the same. Global marker data is calculated via forward-kinematics and stored for each joint to insure proper trails are drawn as well as assist with the optical motion data export. A quaternion representation is also stored for each joint to insure proper SLERPing and quaternion representation. Note that the number of 'keyframes' or data points is constant throughout the program. When the user interpolates between two sets of points he/she does not actually reduce or manipulate the number of keyframes, but rather changes the makeup of all of the data between the two requested interpolation points. This was a choice the designers of MotView made, and it has (thus far) turned out to be a logical one.
....The Animation Graph Editor contains a vector of points which make up its lines. The only time data is ever effected by the graph editor is either on an 'interpolate' command or a drag manipulation. Upon either of these events occuring, the graph editor updates the proper motion data structures and reloads all of the pertient information. This insures the Graph Editor will not accidentally destory any information system does not want it to.

....Display Tricks and Techniques:
....Windowing was a snap using FLTK. All of the provided buttons and time sliders were quickly implemented using FLTK's easy-to-use window-creation paradigm. The main (and secondary) animation windows were created using many different OpenGL techniques. Dr. Michael Gleicher provided code for implementing the groundplane and dropshadows, and everything else was created by one of the two authors. The camera rotations are implemented with two rotations (X and then Y), and allows for the accumulation of angles (rather than resetting to 0 after reaching 360) in case multiple-rotation camera keyframing is desired. Camera keyframing is, however, not implemented in MotView 0.8. The trails and curves in the animation window and graph editors are both implemented with GLLines, not splines. Splines were deemed to computationally intense for the tasks at hand, and were consequently left out. Speaking of the graph editor, the entire editor is implemented on a Orthogonal OpenGL window. All of the selection operations and point manipulations are done directly on the data, rather than what lies in the GL window, insuring proper control of the curves and points. At times, a line in the graph editor may not be visually changing, but the user can be sure that the internal data is being updated.

Everything else is classified information... ;)
....(or i just forgot to add it)...


..........all content copyright 2000 - Andrew Gardner and Steven Dutcher.