Blender

Durian DVD

Follow our progress!

  • on Twitter
  • on Identi.ca
  • Follow our commits on Twitter!

    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. Virgilio Says:

      Amazing!! ๐Ÿ˜€

      A real time saver. Huge feature.

      Thanks!

    2. creek23 Says:

      Will this become part of Blender? ๐Ÿ™‚

    3. mcreamsurfer Says:

      Really interesting. It looks like a lot of thinking process behind it and I really appreciate all great improvments for blender. It’ll propably get me into rigging some time in the nearby future. I am really astonished by this – good stuff!

    4. stvndysn Says:

      wow amazing work guys

      would a quadraped rig be made as well

    5. Manga Gothic Media Says:

      I’ll be watching for 25450 on GraphicAll with baited breath

    6. Fatfinger Says:

      Hey, you read my mind! I was using AdvancedSkeleton for Maya, yesterday and I thought “I wonder if Blender will have something like this soon….nah”, then, lo and behold!

      Great work, you’ve taken a lot of the tedium out of rigging, this should save a nice chunk of time for everyone. My request, would be to see the FK bones/controllers disappear when you use IK and vice versa. All in all, well done and thank you!

    7. alalo Says:

      Very neat ๐Ÿ™‚ Well done.

      Ps.: waiting for a statement from Endi… maybe “now blender users can make a cylinder bend” ๐Ÿ˜€

    8. -jay- Says:

      WOOOWOOOO! You programmers are making us lazy artists even more lazy, not complaining tho. ๐Ÿ˜‰ This will save several hours per character as I’m sure you know, absolutely awesome job Nathan and Campbell.

    9. Steven Says:

      Impressionant

    10. Kirree Says:

      Now this will help me a lot! When dealing with TV commercials, I have to build simple skeletons again and again from scratch, but this rigging system will speed up my production time for sure. Great and thanks for developers ๐Ÿ™‚

    11. higginsdj Says:

      WOW. At last a rigging tool for the rigging challanged amoungst us ๐Ÿ™‚

    12. lalo Says:

      clap! clap! clap!

    13. rexprime Says:

      this is the coolest thing i have seen in weeks. a person could creat a default rig and use it for as many characters as he wants. that is awsome

    14. Madmantos Says:

      This is gold, thank you so much! ๐Ÿ˜€

      Btw, is this in project to create an official big Blender database of materials, rigs, settings, plugins, etc… (looking like Mozilla adds-on website or similar for example) ?

    15. MrNoodle Says:

      Amazing!

    16. Kemeros Says:

      This is quite impressive.

      Altho i will learn to rig eventually… this is really good for people who just want to animate.

      Really cool!

      Kemeros

    17. dusty Says:

      Stunning job!

    18. CS1982 Says:

      The Blender must be scaring the Autodesk. lol

    19. Wolfgang Says:

      this autorig is amazing, good work!!

      Question.

      -I haven`t yet try the blend file, but, does this have FK-IK Matching?…, if not please implement it.

      thanks

    20. Gryphon Says:

      What about skinning? That’s the part I have the most trouble with… especially facial skinning and skinning of overlapping geometry.

    21. Loolarge Says:

      Nice! But i hope the pyConstraints will come back soon, i found them more useful for complex things compared to pyExpressions. Ok, i will check out the rigging system now. Thanks alot guys!

    22. Mike Says:

      @ Loolarge : I’m pretty sure the current Blender2.5 supports PyConstraints.
      @ Wolfgang : FK-IK matching, is that like seamless switching? I don’t think the current rigs can do that.

    23. Mitch Says:

      All I can say is: WOW!

    24. Kevin Says:

      Incredible feature! congrats Campbell (and Nathan for the great idea).

      Just to understand it well…. the idea would be to create a “meta rig” with just the appropriate *hierarchy* for the “rig type” we want to generate, without the need of special names for the “meta bones”?

      In the example, Sintel’s shoulders get down a bit… will this likely going to happen or there are tips to follow to make the generated rig’s bones exactly positioned as the “meta rig”?

    25. Bill Says:

      This is fantastic. I think having a generic biped rig built in is definately worth it – this is something almost everyone wants to use, yet is quite hard to do well.

    26. vykelt Says:

      oh dear god this is sweet. Thank you for saving me and everyone else countless hours of repetitive rigging.

    27. danlei Says:

      That’s it! I’m putting my animation project on hold until this and the other new improvements in animation and rigging have been released to public use ๐Ÿ™‚

    28. D Says:

      Thanks for showing us the autorigificationator! It looks awesome. ๐Ÿ˜€ I think a lot of people would want this to eventually end up permanently in Blender.

    29. JDob Says:

      One step closer to the “Make Awesome Model” button in blender. Just out of curiosity, how many characters does durian have planned? Seems like there would need to be a lot to justify the 4 weeks time spent creating this system.

    30. D Says:

      By the way, I’m going to enjoy the dragon rig; it looks fascinating. ๐Ÿ™‚

    31. ccherrett Says:

      very very nice feature!

    32. shrinidhi Says:

      wow……….. very usefull feature. ๐Ÿ™‚ .

    33. Rudiger Says:

      This is fantastic! It will be like having a little Nathan living in our computers ready to create one of his awesome rigs for us whenever we need it.

    34. Kevin Says:

      @Rudiger
      In fact Nathan was already merged in Build 25452
      http://www.graphicall.org/builds/builds/showbuild.php?action=show&id=1204

    35. Loolarge Says:

      @ Mike: No, i don’t think PyConstraints are back yet. You cannot set any script in the constraint panel, or it seems to not be recognized at least. If it really works, i’d wish to see an example somewhere. Also there is no template for it yet.

    36. Juan Carlos Montes Says:

      Man this is somethig super useful, now I can imagine more people are going to move to Blender. Great work

    37. MD Says:

      Woooooow.
      I love it.
      And it even LOOKS cool!

    38. ndee (Andreas) Says:

      Hey Campbell,
      this really looks great!! One Idea I hat while watching this. Is there a possibility to make his own “presets”. For exampel I rig an arm and and say this should be the constraints and restrictions, and then say save this as preset. Later I just can asign this to other arms and so on. Because here you have to stick to nathans rigging. Maybe in some cases it is better to customize and change it a little.
      Just an Idea I had and maybe some constructive Brainstorming ๐Ÿ™‚

    39. ideasman42 Says:

      @creek23, since its in SVN at the moment it is a part of blender but you probably mean for the next stable release. I’m expecting so but its not 100% sure yet.

      @stvndysn, the dragon blend file kind of a quadruped but something more like a dog would be useful, yes. We’ll probably do this for Durian.

      @Fatfinger, regarding IK/FX visibility, the rig usability is more Nathans area but we have talked if making the script generate a panel for each rig with all the blend sliders and visibility for IK/FK. – This isnt really that hard to do but not a priority at the moment.

      @Madmantos, This isnt supposed to be a library system, that needs previews, ways to manage databases of models. rig templates should remain minimal max ~30 types (for body parts). and ~8-16 preset rigs.

      @Wolfgang, not sure what you mean by IK/FK matching.

      @Gryphon, skinning is out of the skope of this tool, the metarig should be used for weight painting, then the metarig can be constrained to the control rig.

      @Loolarge, PyConstraints are not back yet, Nathan seemed to think we didn’t need them for Durian (at least not yet).

      @Kevin, bone names are not used at all for rig generation, only bone types are used, then each type checks for expected relationships between this and other bones. normally a chain of children.

      You mention the arms move on the generated rig, this is intentional and caused by a simple preset called ‘delta’, it means the rest pose can be different to the edit-mode rest pose. would need Nathan to explain why he needs this.

      @JDob, I think we’ll have ~8 rigged characters, but we will need to rig background characters too.

      Note: This isn’t finished yet, we just started using it and Nathan still has some requests for improving the system and generated rigs.

      I’m really trying to keep this system simple so its not totally confusing to use and develop for, its so easy to add complexity but end up with code that nobody else will ever understand.

      The weak point at the moment is that there is no way to reference edit-bones and pose bones at the same time so scripts need to switch editmode.

    40. freen Says:

      Allow me to add to the chorus:
      FREAKIN SWEET, CAMPBELL!

    41. Ruben Says:

      What an innovation. I’m fascinated.

    42. RNS Says:

      Wow! it bring tears if is not put in the final release..

    43. horace Says:

      are those rig flowcharts generated on the fly?

      visualization like that seems to be very useful to me since i also often have troubles understanding someone else’s rigs.

    44. malefico Says:

      Congrats Campbell !

    45. nathan Says:

      @creek23:
      I’m not sure how much say I have in this, but I’m a little wary of including it in the default Blender distribution.
      Partly because I think we can do even better than this, and I don’t relish this solution getting stuck in Blender because people don’t want to break backwards compatibility.
      And partly because there are already other autorigging solutions out there for Blender, like Rigamarule. And I don’t think it makes sense to favor ours as the “official” blender autorigging system.
      And lastly, because I think it’s cool that stuff like this *can* be distributed separately from Blender, and I think that with Blender 2.5, encouraging a more modular development ecosystem would be a really positive thing. So why not start with this?

      But again, I’m not the developer, so I don’t know how much say I really have. ๐Ÿ˜‰

      @Wolfgang:
      I’m planning on the rigs in Durian having IK/FK matching utilities, yes. Hopefully we can make this something that Rigify automates as well.

      @Gryphon:
      The idea is that this system will specify and generate both a control rig and a deformation rig, which will be separate objects. You can then deform your character mesh with the deformation rig. But you will still have to do weight painting.

      In general, the intent of the Rigify design is to automate the objective/non-artistic aspects of rigging, but to leave the subjective/artistic tasks to the user. Weight painting falls into the latter category, as does modeling shape keys, etc.

      @Kevin:
      As Campbell mentioned, the moving shoulders are due to a “delta” rig type. It is on purpose.
      It is useful to be able to set a different default pose than the character model has. In this case, her shoulders were raised in the model I was given, but from an animation standpoint it is better if the rest pose has more neutral lowered shoulders, because it affects how the rotation axis’ are aligned.

    46. Eric Jang Says:

      this is so amazing. I never was any good at armatures and IK, but now I don’t need to! ๐Ÿ™‚

    47. JiriH Says:

      As was asked already above, is it possible to make our own pre-sets? You know if I have different rig solution for example for finger I would like it will generate my own solution.

    48. marwin Says:

      that was greaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! xD))) now we can set up rigs with ik and fk feature with ease

    49. marwin Says:

      thanks sir nathan for sharing your rig ^^

    50. yoff Says:

      Excellent! I tried doing something like this long ago, but only got to a rudimentary prototype…
      (http://wiki.blender.org/index.php/Extensions:Py/Scripts/Manual/Animation/BSoD_Rigs if you are curious)

    51. 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.

    52. JiriH Says:

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

    53. 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.

    54. -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!

    55. Loop Duplicate Says:

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

      Loop Duplicate

    56. 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.

    57. 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.

    58. 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

    59. kABHIr Says:

      wow nice feature looking great to work with it.

      Thank you for your hard work keep it up.

    60. 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?

    61. 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?

    62. 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?

    63. 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.