Here you can download the Pinocchio library for automatic character rigging. It comes with a demo application and a little mocap data (from the video) that you can use to play around with meshes built in, for example, Teddy or any other modeling program. It can also produce files containing bone weights and skeleton positions. Read the README.txt file for details. The library is distributed under the GNU Lesser GPL and the demo app under the MIT license.

This is a research prototype. It should be relatively stable if you feed it input like it expects (manifold, closed, connected triangular mesh), but better error detection is necessary for use in production. See the note about using your own motion data below.

Download (about 5MB)

Read the README.txt for instructions!

Windows binary: .zip

Source (requires FLTK 1.1.x with OpenGL and VS2005 for Windows or gcc for unix) .zip .tgz

If you have any questions, email me at ibaran AT mit DOT edu.


SolidWorks has given me permission to share the 16 test meshes from the paper with others for research purposes, under the following condition:

Any public use of the meshes must be accompanied with an attribution that states that the meshes were initially created using Cosmic Blobs® software developed by Dassault Systèmes SolidWorks Corp.

Download (About 5MB, OBJ format)



Using your own motion data

The short answer is that unfortunately, with DemoUI, you can't. The package comes with several sequences that DemoUI can read, but my skeleton is hard-coded in the code and the format is non-standard. If you would like to animate meshes rigged by Pinocchio with your own motions, you have to write your own front end. If you don't care about skeleton embedding, but only skinning weights, Blender's "Bone Heat" and the PM_heatWeight plugin for Maya are implementations of my algorithm (neither was implemented by me, so I can't answer questions about them). If you are very stubborn and/or foolish and would still like to try feeding your own mocap data to DemoUI, here's a rough format description:

The format is that each row in the motion file corresponds to a frame. Each row consists of 19 bone specifications (which are then internally mapped to the 17 bones in the skeleton Pinocchio embeds--see Motion::readH). Each bone specification is relative to the parent and consists of 3 values specifying an axis-angle rotation (axis is vector, its length is angle in radians) followed by three values specifying the translation.