Attached below is a working BVH file import program for Anim8or. For those that are not familiar, BVH is a motion capture file format that describes a skeleton made up of joints (points) and a timeline of XYZ Euler angles that describe the rotation of the joints. See
http://www.cs.wisc.edu/graphics/Courses/cs-838-1999/Jeff/BVH.html for an overview of the description.
Anim8or differs widely from the BVH file format in that Anim8or's Figure Mode uses bones for the skeleton where the orientation of the bones is described by a quaternion. The Sequence Mode uses XYZ Euler angles to describe the change in orientation of the bone relative to the initial orientation of the bone set in Figure Mode. In Anim8or, the rotation of the bones, when unconstrained, goes from -360 to +360 degrees. Conversion to and from quaternions and Euler angles requires the use of trigonometric functions. The atan2 function, for example, goes from -180 to 180 degrees. A small change in angle in the BVH file across one of these trigonometric limits can trigger Anim8or to flip the bone 180 degrees.
Anim8or has bugs in calculating the frames between keys. Sometimes it will interpolate wildly.
Scene Mode has a bug (or maybe it is intentional) where the root bone orientation is completely ignored. Since the root bone orientation is the orientation of the entire figure, the bug is overcome by keying the root bone orientation into the orientation controller of the figure in Scene Mode.
Sequence Mode has no translational motion abilities, so the BVH translation is keyed into the position controller of the figure in Scene Mode.
The program can currently read in a BVH file and create an Anim8or project file (an8). This means it generates a skeleton in Figure Mode, a sequence that uses the skeleton, and a scene containing the figure and the sequence. It keys the orientation and position for the figure directly in scene mode. For reference, the program also generates a simple line object in the same position as the skeleton. I found this useful for getting the size and posture of the object to be skinned close.
BVH files sometimes have issues as well. Most of the Carnegie-Mellon BVH repository files have zero-offset joints. This introduces some small error when these zero-offset joints have rotations. Many BVH files have skeletons of very small scale. I have added a scaling function to the program to allow you to modify the overall scale of the skeleton. Many of the BVH file have frames-per-second (FPS) of 30, 60, or 120. I have added the ability to change the FPS. Please realize that the recalculation of the FPS requires computational interpolation of the motion. I am using simple linear interpolation in that calculation that introduces some error. To reduce the number of keys (to reduce file loading time), the program allows you to choose how often to key the original motion as well as put in a tolerance factor to not key when there is change less than this tolerance factor. In BVH files that have a lot of fast motion, you will need to key more often. One martial arts BVH file I tested required every frame to be keyed or significant motion error occurred. Loading that 650 frame Anim8or file takes about 4 minutes on my computer. Some BVH files have a first frame that is zero motion (original skeleton pose). There is an option in the program to skip this frame in the sequence and scene.
Some minor tweaking in Anim8or is often necessary due to the fact that trigonometric functions change rapidly near the limits. This relatively easy to do. A BVH file I tested that had a runner turning a 90 degree turn worked fine except the right upper arm was slightly off. A small adjustment in Figure Mode was all that was necessary.
While the program works pretty well for what it does, the results of the program are not readily portable or incorporated into existing projects. The final product is in Scene Mode.
The program is written in VB6, so you might need to download some runtime libraries if your computer does not already have them.
Please play with the program and give me your feedback and ideas on how to make this more useful to Anim8or users.
Some hasty examples done with figures from BobIt's figure plugin are posted on youtube:
Chinese Martial Arts:
youtube.com/watch?v=KG9hBBvjoDo[/youtube]]http://www.Hooker Walk:
youtube.com/watch?v=3_AjJkl6qzk[/youtube]]http://www.Thank you.