Hi all,

I am the author of bvhacker, a free animation application (see here: www.bvhacker.com)

I'm currently working on a new release, and am trying to change the orientation of bones in a bvh animation file. My problem is this:

I have a bvh file that has it's arms aligned down the y-axis. I need to convert it so that it's arms are aligned along the x-axis.

Or, put another way, when all joint's rotations are set to zero, the figure's arms are by it's sides. I need the figure's arms to be outstreched horizontally when zeroed out.

When I first encountered the problem I tried the naive solutions - e.g. just rotating the arms through 90 degrees. Of course, this didn't work well!

I've researched this as far as I can on the web. The solution *appears* to be in changing the arm bones initial translations from 0,L,0 to L,0,0 (where L represents the length of the arm) and then multiplying all my XYZ rotation data values in turn, each rotation value represented by a 4-element vector (where w=1), by a 4x4 'orientation matrix'. I'm fairly comfortable implementing this in code, but I have no idea of the values that should go into the orientation matrix, other than as follows ('u' is for unknown value)

u u u 0
u u u 0
u u u 0
0 0 0 1

I did study matrix transformations at uni, but it was a long time ago now, and I didn't get a really good grasp on the subject at the time! Can anyone help?