Buy Avastar-1
for US$ 22

Using BVH and Mocap

Motion capture is a great way of quickly creating realistic animations. Unfortunately animating a rig from mocap data is a not a trivial exercise. There are several approaches you can take and efficient methods for retargeting animations from one rig to another is very much an active research topic.

Avastar’s mocap tools

Avastar has some support for retargeting  motion from another rig such as one from an imported BVH. This is a work in progress and is somewhat manual at this stage. Good results can be obtained with about 10 minutes work. There is essentially three steps involved:

  1. Ready. Add an avatar to layer 0 and hide the meshes and set the bones to stick shapes. This will be the target. Select layer 1 and import the BVH file, this will create a new armature that will probably be orientated wrong and be much too big. This will be the source. Select both layers so you can see both armatures and scale/move/rotate the source armature object (i.e. in object mode) so that it matches the target as closely as possible in size and orientation.
  2. Set. Scan through the source animation and choose the segment you want to copy, set the start and end frames in the scene for this segment. Choose a frame to be the reference frame – you want to choose a posture that will be easy to match with the Avastar target. It can be either inside or outside the range you want to copy, it doesn’t matter. If necessary, you can create a new posture in the source animation by selecting the source armature, switching to pose mode, and removing all rotations (Alt-R) and translations (Alt-G). Sometimes BVH files don’t have a nice T-frame to copy so you can add one this way. Don’t forget to keyframe the results. Select the target armature and create a new action. For the reference frame  you chose before set the pose of the target to match as closely as possible the pose of the source, keyframe the result. You will now have an action that has a single keyframe – the reference pose.
  3. Action! In the Motion Transfer pane (Tools panel) set the source and target objects,  more options will become available when you have these set. In the bone map, set the bones in the source that correspond to the bones in the target. You only need to do one half and use the Mirror Copy button, and you can select a bone in the source armature and press the target icon next to a field to automatically fill in the name. Use COGloc to map any translations of the armature as a whole. There is a degree of artistry in this mapping and you may need to play around and see the results. Typically the two armatures will not have the same numbers of bones and they will be in different proportions. You should choose bones that should have the same visual orientation rather than the same relationship within the armatures. Set the reference frame number to the one you chose and everything is ready. Now you can choose to copy across individual poses (Transfer Pose) or the animation segment as a whole (Transfer Motion). You can also choose to simplify the resulting keyframes with various algorithms.

Once you copy across the motion you will probably have to manually tweak things to fix any glitches, foot skating etc.

Tips and Tricks

  • If you use curve simplification, aim for at most 80% keyframe reduction. More than this and the animation starts to become noticeably deformed. You can see the reduction achieved reported on the console logs. Start with high values for the tolerances and reduce them, this will add more and more keyframes.
  • The tool will not delete keyframes, you have to do this by hand if you need to.
  • Switching off the rotation constraints can help, you can always switch them on again later.
  • Using motion paths can be really useful for finding places where the animation has problems. Set them up in the armature tab of the property editor, there are also buttons for clearing and recalculating them in the tools panel.
  • You can correct problems in a BVH by carefully setting up the reference frame. For instance, if the animation drifts to the left a bit you can turn the Avastar reference to the right a bit and the resulting offset can remome the drift. Similarly you can make the arms hang further out or in to adjust for different body shapes between source and target.

How it Works

The reference frame is the key. This defines a map from the source to the target for each bone involved. The map is concerned only with the orientation of the bone in the global coordinate system so you just need to match up the bones with how they should be visually aligned. Or, to be more accurate,  with how the mesh that the bone controls should be aligned. Having this reference frame map means you can transfer the pose from an armature with different proportions, bone rolls, bone orientations, and even structure. It also means that you don’t have to have a zero-rotation posture that’s a T-pose – any pose will do. Through the reference map you can also correct for different proportions and different orientations of bones with a bit of practice. The price to pay is that it’s hard to automate this whole process as there are various artistic choices to be made.

Curve simplification

There are two simplification algorithms available, though this may change as we are actively experimenting with different approaches. Generally, simplifying the motion curves is a good thing. The resulting curves should capture all the motion but have substantially fewer keyframes so be much nicer to work with if you want to adjust the motion later. Experiment a bit with the algorithms to find out which is best for you.

  • Lowes Local. The rotation of each bone can be thought of as a curve in 5 dimensions (well, you could if you could visualise 5 dimensions). Each point is made up of the frame and the components of a quaternion. Lowes algorithm is applied to this curve to find a subset of keyframes that captures the curve to within a tolerance. The tolerance is just the distance in this 5D space. Note that Lowe’s algorithm doesn’t modify keyframes, it just identifies a subset. Also it retains the extreme points of a curve. The Lowes Local method will do this simplification for each bone independently.
  • Lowes Global. As you might guess, this treats all the rotations of the armature as a single curve in a 100+ dimensional space (depends on how many bones you’ve mapped). The Lowes algorithm is applied to this single curve. The resulting keyframes are across all the bones.

Make seamless

Use this for looping animations. For it to work well you need to choose the start and end frames so that the posture is nearly the same. This tool will then replace the start and end posture with their averaged values and blend in the change back through a number of frames.

Blender’s mocap tools

Blender comes with it’s own mocap tools and you can freely mix-n-match with the tools in Avastar. Here are a whole lot of tutorials on Blender’s Mocap tools by BenjyTCook:

Use imported BVH as a reference

The sure-fire way that will always give you good results is not surprisingly the most tedious. You simply import the BVH animation into a separate layer, scale and position the imported armature to match Avastar’s, then use it as a reference to pose your avatar by hand.

Start by blocking out the motion first at key places starting with the COG, then work out from there.

For example, for a walk animation set up poses at the frames where the foot lands on the ground and at the frames where the feet cross. Start by keyframing the COG at those locations then add the hip bones and torso etc, working outward …

The same technique can be used to copy across the motion from video.

Resources

For all these sources please respect the license imposed by the content creators.

  • CG Speed – over 2500 files from the Carnegie Mellon University Motion Capture Database. Available in a variety of formats including BVH. There is a separate index though it requires a bit of searching to find clips that match what you are after.
  • ACCAD – sample files from the Advanced Computing Center for the Arts and Design.
  • centralsource.com – collection of BVH files for personal use by Michael D’Andrea.
  • mixamo.com – online animation creation with both commercial and sample BVH files. Neat preview on hover.
  • freemotionfiles – Blog with news and various sets of free mocap files.
  • gfx-motion-capture – various free motion capture sequences with previews.
  • www.ipisoft.com – Commercial markerless motion capture system for your desktop making use of MS Kinects or webcams

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>