bvhacker: Software description

This page gives an overview of bvhacker's capabilities

What does it do?

bvhacker is designed to give full control over every aspect of a bvh file. bvhacker is not intended to be used to create bvh animations - there are a selection of packages out there already, both free and commercial. bvhacker was initially created as a tool for converting existing bvh files into a format usable by games like Second Life. However, since it's creation, bvhacker has evolved into a tool ideally suited to preparing animations for uploading into Second Life.

Bvh files created using motion capture data can be found all over the web. I recommend Animazoo because the files there are free to use without legal obligation. Producing animations using real motion capture data can make the final results look far more natural than those produced using artificially generated motion data.

Things you can do with bvhacker

  • Convert many types of bvh files to be Second Life compatible
  • Add, remove and rename joints
  • Make adjustments to any motion channels across all frames at once
  • Make adjustments to the joint offsets (i.e. skeletal structure)
  • Zero out any motion channel (e.g. to keep the figure from 'wandering off' from the origin)
  • Trim off frames from the front and back of the file (to create a loop-able animation)
  • 'Knit' together the start and end frames for smoother looping. (Uses linear interpolation only)
  • Set a T-pose for the first frame (for Second Life compatibility)
  • Adjust the frame time to speed up or slow down the animation
  • See graphically how the joint structure and motion data work together
  • Quickly and easily see which axis the arms are aligned on
  • Open and view many other bvh file variants
  • Get a detailed report on your animation listing any common errors or problems.

Things you can't do with bvhacker

Create a new animation using key framing. For that, I'd recommend:

  • Daz3D (free, commercial)
  • Avimator or SLAT (free)
  • Poser (entry level)
  • Blender (free, top end)
  • MotionBuider / Maya / 3DSMax (top end)

Background

I started bvhacker for a number of reasons. The initial idea came after I found I couldn't import a bvh file from Animazoo into Second Life. Not to be so easily dissuaded, I opened up the bvh file in a text editor to see what was there. Since the format was human readable, and didn't appear too convoluted, I decided that it would be an interesting project to further investigate exactly how the file could be adapted to be compatible with Second Life. In addition, I had wanted to 'get my feet wet' with some OpenGL / STL / 3D tools programming for some time, and so got started.

The greatest challenges were in compounding all the offsets and rotations for the joints during drawing and keeping track of joint hierarchy during changes in skeletal structure. Since writing the program, I've spent a lot of time using bvhacker to help make Second Life animations. New functionality has been added as required, resulting in the evolution of bvhacker 1.3, the current version.

A note on intellectual property rights

If you do sell animations made with bvhacker you have an obligation to obtain permission from the original bvh motion file creator to re-sell their work. However, this does not apply to files from Animazoo - if you want to re-sell animations from there you are permitted to do so as long as you add the word 'Animazoo' to the name of the animation when you put it up for sale.