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.



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

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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