Blender supports importing mocap data in the BVH format. Importing is accomplished through a script: go to File>Import>Motion Capture (.bvh). When you select a BVH file, the script automatically generates an Armature object (bone rig) with the bone names and hierarchical relationships in the BVH file. The animation is stored independently as an Action (block of animation keyframe data) that is automatically assigned to the rig.
In order for retargeting to work well, the new target rig should have the same relationships as in the BVH rig. In Blender I have found that the fastest and easiest way to do this is to simply use a copy of the same rig. Editing a rig in Blender to a new character regardless of size or shape is a snap.
What I have found works well is to edit the character mesh into a T-pose that matches the BVH rig rest pose. This ensures that the animation will play correctly. Also any major scaling – say to the size of a mouse – should be done in Object Mode. Any other reshaping of the Armature object to fit the character can be done in Edit Mode.
Once this is done, we can take advantage of Blender’s data system to quickly and easily retarget any new Action data from an imported BVH file to the Armature of a character.
In Blender, an Action contains a set of keyframe data as a separate block of information that can be swapped from rig to rig. Also you could load BVH files, delete the rigs and have a library of Actions stored for use on any character.
In the following steps I will assume you have a basic understanding of rigging, weight painting and so on in Blender. I will only cover the steps related to getting your rig ready for use with mocap data.
And to start, depending on where you get your BVH files, it’s likely you will have to prep them first. One main issue – among others – is the sample rate. Some BVH files have way too much information – up to 120 frames per second (FPS). That makes working with the files far too cumbersome, not to mention noisy. We will start by preparing the BVH file for importing well into Blender with a free program called bvhacker.
Prepare the BVH file What we want from bvhacker, or any tool you choose, is to make the following modifications where needed: at Frame 1, there should be a standard T-pose with the model at rest. The hip (root) bone should be centred. And finally, adjust the Frame Rate FPS. Some files come with 120. I like to work with about 30. In bvhacker, use the Set 1/2 frames in the Edit menu as many times as you need to achieve the target rate.
Import and setup When you import the file, the rig will likely need to be rotated because in Blender, Z is up. Do this in Object Mode so that the Armature object stands up. Then line up the character to the Armature and vice versa. This is very much a back-and-forth process. For the bones, move them in Edit Mode. If a rotation is required, do that to the character limb, rather than the bone.
Retarget animation To retarget, simply copy this rig (or import a new BVH) and repeat Step 2 with a new character model. You only have to do it once per character and it is simple and fast. To assign a new animation to any rig, import a new BVH and that new Action will be available. Select the rig of your character in Object Mode and, in the Action Editor, simply choose the new Action.
About the artist Richard Culver is a filmmaker and freelance 3D artist with more than 20 years of experience in all aspects of film production and postproduction. See more of Richard’s work at www.richardculver.com.