Improving Motion Capture Import & Workflow

Benjamin Cook

Abstract

Motion capture animation is both faster and at times more realistic than a human animator, but it can hard to work with, for a variety of reasons. While Blender has had BVH import (a popular format for mocap data) for a while, it lacks tools to deal with this type of data properly. My proposal is to provide tools to streamline mocap data into a project’s workflow: conversion to f-curves, cycle and stride bone conversion and most importantly, retargeting the motion to a user-created rig.

Additional Information

My goal in this project is to provide semi-automatic tools for artists to deal more easily with motion capture data. While Motion Capture is very realistic, I feel artists need tools to easily change the original data so it has the look and feel they want for their project and characters. I see mocap in this context as a tool and base for animators, and do not want to get into the realistic physical and biological models that Blenders more scientific base might be interested in.

What users can expect from the project is a comprehensive system for dealing with motion capture. The GUI component will easily give you access to:

  • Remapping the original "Performer" mocap rig to a user created rig, allowing you to retarget animations to your character.
  • Converting the heavily-keyframed mocap animation to less dense keyframes, reflecting how a human animator works.
  • Auto-detecting loops within the animation. For example, if you import a walk cycle, at a touch of a button the system will convert this series of walks to a single walk that loops well.
  • Stride bone/object - You will be able to transfer the displacement of the root bone from the animation a chosen stride bone or empty. Most mocap anims move the Hip bone (the usual root) around the world space, and often this movement is important for realism (the up and down movement in a walk cycle, jumps, etc.). However, being tied to the root bone is incompatible for most workflows, especially those using stride bones to move a character along a curve. Therefore the pace and tempo of this displacement can be transfered to a chosen bone or object, which handles the world displacement of the rig.
  • A layered animation system, where the raw retargeting data is on the bottom layer, and on top of this will be various constraints that can be applied to deal with artifacts arising from the retarget. For example, ensuring that the target's feet do not cross the ground plane, or using IK to allow the user character to use the same footplant locations as the original anim, interacting with objects, etc. On top of this constraint layer will be a "user-tweak" layer, allowing the artist to layer on custom keyframes with ease. My hope is that this layered approach will result in a non-destructive system, allowing you to go back to the original animation, turn constraints on and off with ease, etc. It is not fully decided how this will be implemented, but I'm leaning towards using the NLA system to create a usable action that contains more than one layer of animation.
  • Handling of batch importing/retargeting - if you have a number of animations that use the same original hierarchy, you will be able to save and load your remapping of the bones, to enable quick importing of other animations from the same mocap session. I also hope to include some presets to popular hierarchies, such as CMU's huge mocap library.
  • Use for BGE - The Blender Game Engine is a big part of Blender in my opinion, and as such I want to ensure that as much of the above functionality will be compatable with animating for games and the BGE.

A link to the Blender Artists thread containing updates and feedback is below