Mirroring complex rigs

Hello everyone,

I have been a hobbyist rigger, but recently I completed an internship at Disney for rigging, but one thing that I found myself lacking was speed, and a true understanding of some very simple rigging concepts that made me much slower (and sloppier) than I would have liked. Then I found this forum. HUZZAH! Though I left the apprenticeship with many questions, I’m going to start slowly.

Question #1: As rigs get progressively more complicated, (IK/FK hand controls, clavicle, shoulder, wrist and finger setups) is there a way to mirror ALL joints/handles/controls/constraints over so I’m not doing everything twice? Please bear in mind, I am highly considering going back to school for computer science as I was greatly lacking in that area as well, and as you can imagine, made much of what was happening in the TD dept. near impossible to grasp.

If scripting is the answer, could I get a push in the right direction? I have some basic mel and c++ knowledge, but for now I was just curious if anyone had a solution for this.

Thanks all and I look forward to diving into this site more thoroughly!

I personally feel scripting is a must when it comes to rigging. Even if you were already great at rigging, scripting will make you better and faster.

Why take half an hour setting up FK/IK switches, when a simple script will do it for you in seconds? The same thing applies to mirroring rigs. Scripts can be created to “mirror” all your functions onto the other side as long as you maintain a good standard for all the rig nodes. There are no default full rig mirroring feature that I know of in Maya. (I presume maya since you said mel).

School is always a great idea, but if all you’re looking for is more technical knowledge to help support your rigging, you might be able to achieve through self learning. There are plenty of books, videos, and websites out there that can help.

Here’s some of my personal favorites:

http://mayamel.tiddlyspot.com/
Awesome mel/python wiki page. Can answer a lot of your questions about scripting in maya.

http://www.rigging101.com/cds.htm
The Quadruped Friendly rigging dvds are good.

Art of Rigging books. I’ve always liked their sample mel scripts focused on rigging.

Don’t forget about riggingmentor.com.
Also, I’ll agree with Zhi and say that if you really want to rig efficiently, you’ll script out the entire process in modular pieces. So a script that builds a base arm, a script that then takes the base arm and builds the extra bits ontop of it (ik/fk/stretchy/etc). Depending on how you do this, this could be very naming convention based ,or if you want to get fancy you can cut into some metadata type stuff. I’m pretty sure David Hunt put out some stuff at bungie on modular rigging and using metadata. Also, you can check out the Maya Masters Class Supertoon Pipeline.

David Hunt’s slides from GDC 09:

http://www.gdcvault.com/play/1708/Modular_Procedural_Rigging

Awesome slides, thanks for the link.

Scripting is definitely the answer you’re looking for. Certainly for mirroring, but it will really become your lifeline when building rigs once you get comfortable with it and see how kick ass and easier/faster it becomes.

Don’t underestimate how tricky it would be to write a tool that mirrors complex systems, especially with limited scripting experience.

As already mentioned, scripting elements of the rigging process is a good way to go. The only thing I’d say in addition is not to put everything into a single script that tries to do everything. It’s best if you can split the process up into chunks as this will give you a much more flexible and easier-to-manage build process, particularly when it comes to layering per-character custom stuff on top of core functionality and when dealing with varying character configurations.

Essentially what you want is a toolkit that allows you to quickly set up core functionality for lots of characters in various configurations rather than a few ‘uber scripts’ that try and do everything in one go but are really inflexible and difficult to manage. Having a single-button that builds an entire character might look impressive but it’s ultimately useless for anything else.

Also, I don’t know if you’ve seen Gran Torino, but remember the line about a man aquiring tools over a period of time? Well it’s kinda like that, identify your core needs and script them and build on those over a period of time.