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,
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)
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
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
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
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.