Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am developing a motion capture animation system and I want my data to be stored within a BVH file. At the moment I have measured the size of the actor so I can create the hierarchy of the BVH file. I also have points in 3D representing the relative positions and orientations of the middle of certain bones such as the lower leg, foot e.t.c.

I was wondering what the best approach would be to map the bones into the BVH motion frames. I have to take into account slight inaccuracies in the 3D positions, for instance the foot might be plotted in 3D space 1cm off the actual location in the realworld.

Furthermore I was wondering how to recover lost 3D points. For instance if I have the left foot and left thigh, is it possible to recover the estimated position of the left shin?

Any help would be greatly appreciated.


share|improve this question
up vote 0 down vote accepted

For the first part, the BVH file's header sets up the skeleton with hierarchy and location offsets. I could easily see you scaling that to your needs (normalize vector "locParent-locChild" then scale at will), and the second part of the .bvh file (frame bone coordinates) would accordingly be scaled as well (a little trickier). You can check if scaling is done without conflict by adding collision data to body parts and have system tweak or stop rotations when parts of body are overlapping.

source:BVH file specs

For the inaccuracies you'll have to interpolate the x,y,z coordinates of locations and rotations (whatever is used in the animation). You can try best fit whenever there is noise in the data or a too high of a delta change given a small amount of time. For example:

if the location-x coordinate goes from 0 to 10 in less than 3 frames and goes back to 1 on 4th frame, then you can smoothen that out by averaging the frames so it would increase at a smooth rate.

You can easily write an alogrithm and tweak it per animation with threshold controlling a (deltaChange / deltaFrame) ratio.

Hope this helps.

Here are some resources for animation/interpolation:

Interpolation of irregularities

Interpolation example

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.