Rigify Auto-Rigging System
on December 17th, 2009, by ideasman42Since 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


December 17th, 2009 at 21:53
Amazing!!
A real time saver. Huge feature.
Thanks!
December 17th, 2009 at 21:58
Will this become part of Blender?
December 17th, 2009 at 22:08
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!
December 17th, 2009 at 22:13
wow amazing work guys
would a quadraped rig be made as well
December 17th, 2009 at 22:21
I’ll be watching for 25450 on GraphicAll with baited breath
December 17th, 2009 at 22:21
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!
December 17th, 2009 at 22:29
Very neat
Well done.
Ps.: waiting for a statement from Endi… maybe “now blender users can make a cylinder bend”
December 17th, 2009 at 22:29
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.
December 17th, 2009 at 22:42
Impressionant
December 17th, 2009 at 22:51
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
December 17th, 2009 at 23:00
WOW. At last a rigging tool for the rigging challanged amoungst us
December 17th, 2009 at 23:04
clap! clap! clap!
December 17th, 2009 at 23:05
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
December 17th, 2009 at 23:16
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) ?
December 17th, 2009 at 23:18
Amazing!
December 17th, 2009 at 23:36
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
December 17th, 2009 at 23:43
Stunning job!
December 17th, 2009 at 23:43
The Blender must be scaring the Autodesk. lol
December 18th, 2009 at 00:02
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
December 18th, 2009 at 00:10
What about skinning? That’s the part I have the most trouble with… especially facial skinning and skinning of overlapping geometry.
December 18th, 2009 at 00:14
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!
December 18th, 2009 at 00:19
@ 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.
December 18th, 2009 at 00:21
All I can say is: WOW!
December 18th, 2009 at 00:31
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”?
December 18th, 2009 at 01:08
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.
December 18th, 2009 at 02:23
oh dear god this is sweet. Thank you for saving me and everyone else countless hours of repetitive rigging.
December 18th, 2009 at 02:56
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
December 18th, 2009 at 03:48
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.
December 18th, 2009 at 03:49
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.
December 18th, 2009 at 03:51
By the way, I’m going to enjoy the dragon rig; it looks fascinating.
December 18th, 2009 at 03:54
very very nice feature!
December 18th, 2009 at 03:57
wow……….. very usefull feature.
.
December 18th, 2009 at 05:20
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.
December 18th, 2009 at 06:55
@Rudiger
In fact Nathan was already merged in Build 25452
http://www.graphicall.org/builds/builds/showbuild.php?action=show&id=1204
December 18th, 2009 at 08:12
@ 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.
December 18th, 2009 at 10:40
Man this is somethig super useful, now I can imagine more people are going to move to Blender. Great work
December 18th, 2009 at 11:57
Woooooow.
I love it.
And it even LOOKS cool!
December 18th, 2009 at 12:09
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
December 18th, 2009 at 12:27
@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.
December 18th, 2009 at 12:39
Allow me to add to the chorus:
FREAKIN SWEET, CAMPBELL!
December 18th, 2009 at 13:44
What an innovation. I’m fascinated.
December 18th, 2009 at 17:16
Wow! it bring tears if is not put in the final release..
December 18th, 2009 at 17:22
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.
December 18th, 2009 at 17:32
Congrats Campbell !
December 18th, 2009 at 19:27
@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.
December 18th, 2009 at 20:25
this is so amazing. I never was any good at armatures and IK, but now I don’t need to!
December 18th, 2009 at 20:47
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.
December 19th, 2009 at 05:39
that was greaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! xD))) now we can set up rigs with ik and fk feature with ease
December 19th, 2009 at 05:49
thanks sir nathan for sharing your rig ^^
December 19th, 2009 at 18:18
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)
December 19th, 2009 at 22:21
@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.
December 20th, 2009 at 16:54
Thank you for your answer. Last little question. Any plans for auto facial rigging?
December 20th, 2009 at 18:12
@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.
December 20th, 2009 at 23:13
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!
December 23rd, 2009 at 03:29
Thank you so much for giving us these incredible rigs! I am having so much fun!
Loop Duplicate
December 23rd, 2009 at 10:29
@-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.
December 24th, 2009 at 13:28
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.
December 28th, 2009 at 01:09
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
January 3rd, 2010 at 07:09
wow nice feature looking great to work with it.
Thank you for your hard work keep it up.
February 4th, 2010 at 15:36
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?
February 4th, 2010 at 15:55
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?
March 10th, 2010 at 19:09
When will see a page explaining how to use this rig?
After I generate the rig should I be deleting the original armature?
March 10th, 2010 at 19:30
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.
May 13th, 2010 at 21:27
Damn, very nice website. I actually came across this on Yahoo, and I am really happy I did. I will definately be revisiting here more often. Wish I could add to the post and bring a bit more to the table, but am just absorbing as much info as I can at the moment.
Thank You
Houses for Sale in Drogheda
May 13th, 2010 at 21:56
Hey, very nice website. I actually came across this on Ask Jeeves, and I am happy I did. I will definately be coming back here more often. Wish I could add to the post and bring a bit more to the table, but am just absorbing as much info as I can at the moment.
Thank You
Property For Sale Ireland
June 28th, 2011 at 20:10
This is the best blog Ive ever seen in my life! I really appreciate you taking the time out of your busy day to share your this with everyone.
July 3rd, 2011 at 18:25
Hey this is kinda of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. Im starting a blog soon but have no coding skills so I wanted to get guidance from someone with experience. Any help would be enormously appreciated!