Apply armature's object rotation to animation data

I’m trying to rotate a walking animation. It’s stored as motion capture data in a BVH file (download an example here), and then loaded into Blender as a moving armature. What I would like is to be able to (manually) align the animation. My approach so far was:

  • Load the BVH.
  • Move the armature object (so in Object mode) such that at frame #1 it’s at the origin.
  • Rotate the object around the origin (so still in Object mode), such that the walking animation is aligned with the X-axis.
  • Press [Ctrl]+[A] to apply the location + rotation.

This last step doesn’t do what I want. Rather than modifying the animation data, it modifies the armature itself. When I go to edit mode, I see that the edit bones have been changed (see before/after image).

Since I have multiple BVH files with multiple motions, this is a problem. Since the motion data itself isn’t changed, it’s impossible to use the aligned animations as actions, and I cannot link those edited actions to a single armature.

My question to you: how do I apply my alignment (rotations & translations) to the animation data, while keeping the armature itself unchanged?


PS: I’ve also asked this question at StackExchange. I’ll make sure that if there is a solution posted here, I’ll update my post there, and vice versa.

The answer lies in the MakeHuman Blender tools. There are a few steps you need to get right, though:

  • Load a BVH with the “Load BVH” button in the “Misc” tab. This will cause the BVH to be loaded incorrectly, as it’ll be scaled down. Unfortunately you can only change this behaviour after you loaded the BVH. We’ll fix this, and then re-load the BVH correctly.

  • Open the “MakeWalk: Options” panel.

  • Deselect the “Auto Scale” checkbox and/or set the scale to 1.00.

  • Scroll down to the “MakeWalk: Utilities” panel and click “Save defaults”.

  • Remove the armature from the scene, and load your BVH again.

  • Open “MakeWalk: Edit Actions” and enable “Global Edit”.

    Now you can go to Pose Mode, move the armature around, and click on the “Shift Animation” button. Contrary to its name, this also applies rotations. It then applies your translation & rotation to the entire animation.