Sintel, the Durian Open Movie Project » Blog Archive » Rigify Auto-Rigging System

    

Rigify Auto-Rigging System

on December 17th, 2009, by ideasman42

Since there are more then 3-4 characters to be rigged we agreed having some way to make a rig once and re-use with minimal manual tweaking was needed.
Over the past few weeks Nathan and I have been working together to make a system which can generate these in a way that lets us apply them in a variety of situations.

Nathan broke his rigs down into body parts; hips, neck, spine, finger, arm, palm and leg. with the desired ‘before & after’ for each.
Then I took these and wrote a script that would look at the simple rig and create the final version.

After this it was just a matter of putting it all together to rig an entire character.
If this proves its self to be useful it may well become the defacto auto-rigging system in blender, too early to say now.

Rigify Demo .OGG file (higher quality)
Please excuse the needless mouse waggling, clearly I can’t talk and use blender at the same time šŸ™‚

Download the blend including metarig and generated rigs, older versions of Blender 2.5 should be able to open these too.
Sintel &Ā Baby Dragon

Technical Details

  • WrittenĀ entirelyĀ in python 3.1
  • Uses the blender 2.5 data api from python and operators in a few some cases, mostly to toggle editmode.
  • ~400 lines of code for the rigging system, ~400 lines for utility functions, ~2500 lines for 9 metarig types.
  • Rig types areĀ separateĀ from the rigging system, new rig types can be added by copying files into the module directory.
  • Pose bone properties, one tag per rig type, optional tags can be added to set layers and the root parent.
  • PyDrivers got a ~20x speedup by caching the compiled expression which helps since we needed to use PyDrivers in the more complex rigs.
  • Available the regular Blender2.5 SVN revision 25450.

– Campbell

63 Responses to “Rigify Auto-Rigging System”

  1. nathan Says:

    @JiriH:
    Yes, it’s designed to be extensible, so you can write your own rig generators and they’ll work just like the bundled ones.

  2. JiriH Says:

    Thank you for your answer. Last little question. Any plans for auto facial rigging?

  3. nathan Says:

    @JiriH:
    As part of this same system, yes. We just add another rig type. šŸ™‚
    But there are no plans to make a separate specialized facial auto-rigging system.

  4. -jay- Says:

    I can’t seem to get this to work on 64 bit ubuntu: http://blenderartists.org/forum/showthread.php?t=174658 Any help would be appreciated!

  5. Loop Duplicate Says:

    Thank you so much for giving us these incredible rigs! I am having so much fun!

    Loop Duplicate

  6. ideasman42 Says:

    @-jay-, there is no reason the module should be missing, all I can guess is that somehow the scripts are somehow mixed old & new. Try see if a different build works.

    Avid readers may notice Nathan and I are not giving the same answer to this as a default tool in blender.

    From my point of view, an autorigging system is not very complicated (~400 lines in this case), so there is really not much point in having many different systems the user has to go and download.
    most of the work is in making the rigs, so even if this system gets replaced in 2 years for example, the rigs we have can be ported to this system.

  7. rben13 Says:

    I’m running this under Windows 7 64-bit on a user account. I created a sample quadraped leg rig and tried the graph button, which gave me an error. IOError:[Errno 22] Invalid argument:’meta_leg_quadrupe.dot’ fileobject= open(path,”w”)
    File “C:\…\scripts\modules\graphvis_export.py”, line 57, in graph_armaturesaved= graphvis_export.graph_armature(bpy.context.object,path_dot, CONSTRAINTS=False, DRIVERS=False)
    File “C:\…\scripts\ui\properties_data_armature_rigify.py”, line 240, in execute Traceback (most recent call last):

    Hope this helps.

  8. Loop Duplicate Says:

    I really like Nathan’s rigs but it was hard to understand them at first. I think I understand the quadraped leg now and I made a chart so I would remember. I uploaded it to my site in case it helps anyone else. Sorry if there are any errors. Here’s the link:

    http://burningtoken.com/bands/loopduplicate/LegRiggingHelper.jpg

  9. kABHIr Says:

    wow nice feature looking great to work with it.

    Thank you for your hard work keep it up.

  10. toweyed Says:

    Hi, this looks fabtastic in the video but I can not get a handle on the different layers and what does what. There appears to be three rigs in total.

    The initial rig can be moved out of the way as a sort of master.
    The other two remaining rigs seem to be very interdependent and confuse the absolute bejaysus out of me.

    How is Nathan using them to simply animate? Which armature is used as the parent of the mesh? I’ve been struggling with this setup and it is (to me) just plain confusing.

    Any chance of a demo on the questions above?

  11. toweyed Says:

    I guess my question is : how do I hide the 2nd rig (armat,,, .001) and still see the effects of the ‘rig’ rig.

    When I move the footIK with both rigs visible all works great, but visibility is v. difficult. When I hide or go to local view on rig – nothing works. Everything moves but nothing is connected.

    I’ve changed the shapes for the ‘rig’ bones but the arm.001 armature still gets in the way.

    How does this work? Can we have a quick demo of what Nathan is doing and how is he interacting with layers and rigs? please?

  12. Todd A McCullough Says:

    When will see a page explaining how to use this rig?

    After I generate the rig should I be deleting the original armature?

  13. Todd A McCullough Says:

    I guess we’ll still need to add controllers to the rig in order to use it? Or will those be included in a later release.

    BTW
    This is very welcome. Thank you.