I'm opening this thread to connect with the community in regards to my GSOC 2011 project - Improving Motion Capture workflow within Blender. This thread will contain updates regarding my progress, and releases of early functionality, probably in the form of python Addons for Blender.
Most important to me, I hope the community will be unabashadly forthcoming with comments and feedback. Blender as a whole and GSoC projects in particular are for you, the users, and I believe in this approach.
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.
The looping and curve simplifcation features have already been coded in the form of Python scripts, and I'm thinking towards releasing them in Add-on form in the coming days.
In sum, user feedback is very important to me. If you have any comments or suggestions regarding the above ideas and features, or how they should be implemented within Blender, please don't hesitate to comment here or PM me. I'm also interested in your animation workflows, to ensure that my changes will mesh well with the popular methods of working in Blender.
A copy of my proposal and current progress is available at: http://wiki.blender.org/index.php/User:Benjycook