Sunday, March 1, 2009

Rig Preferences

(click pic to download sample rig)

Every animator has his/ her own set of preferences when it comes to animation rigs. While it is true every animator can adapt to a given rig and produce good animation with it, I believe that a well laid out rig allows for a more streamlined workflow, thus creating the potential for more polish time.

Creating a rig that has enough control for the animator while not being overly complicated is definitely a balancing act. Here are three main categories I like to use as a checklist.


So to start, at the top of my list has to be…

  • Try to separate controllers as much as possible. In other words, minimize the overlapping of controllers so you’re not constantly selecting the wrong controller. When there’s too much overlap, you’re wasting time by constantly bobbin’ and weavin’ and tumblin’ around just to select a specific controller.
  • Controller shapes don’t need to be exactly centered to the joints they are driving. I’d move them (the cv’s) if it helps with separation.
  • Take the time to resize the controller to fit the body part of the character, esp. when using automated rigging scripts. (ie. Don’t create hand controllers that are the size of the torso or controllers that are imbedded in the geo.)
  • Color code controllers. I probably won’t remember that red means right side and blue means left, but colored controllers will further help with separation.
  • The standard yellow/red/blue scheme seems to work well for a wide range of textures.
  • I like fingers controllers a bit brighter (yellow) since they’re smaller and harder to see. Other “secondary” controllers could be light blue. Whatever you choose, keeping a little bit of consistency helps when you’re jumping from character to character in a pipeline.
  • I’d also stay away from bright green and white controllers. These just confuse me as to what’s currently selected.
  • Create controller shapes that are selectable from wide angles. In other words, try not to have controllers that can only be selected from the front or the back. Spine, neck, and shoulder controllers seems to be repeat-offenders.
  • A character GUI/ picker is good for selection “backup” (when a controller is hard to select in a specific pose). Also good for selection sets.
  • Picker could also be used for frequently used tools and matching scripts.
  • Picker to help with scenes containing multiple characters.

  • Boxes for the spine. I like fin-shaped boxes because I can quickly judge the rotation of one spine controller in relationship to the others. This makes it easier to keep the torso rotations clean. If circles are used for the spine, then a direction indicator for each controller would help. Speaking of spines, I’m plenty fine with only 2 spine controllers (in addition to the Root and the hip). 3 spines controllers are ok, but any more than that feels to cumbersome to animate. If deformation is a concern, have fewer controllers drive more joints.
  • For the neck, I’m fine with one controller.
  • A "halo" controller above the head feels nice and clean and is definitely separated from the neck controller.
  • I prefer the head controller to never follow the rotation of the neck. Local/global switching of the head could be connected to the spine instead.
  • Likewise, I like the arms controllers to never follow the rotation of the shoulders (clavicles). Have it follow the world or the spine.
  • The main pivot of foot controllers should be at the ankle imo. Pivoting on the heel could be handled as an attribute in the channel box. When the main pivot is at the heel, I feel like I’m constantly readjusting the translation of the feet everytime I rotate it (too much counter-animation).
  • IK’s oriented to the world-->meaning that if I translate an IK controller using “world” mode, only one channel should be affected. If this is not so, it’s a lot harder to make translation adjustments in the graphEditor.
  • I prefer elbows to not follow the clavicles (again too much counter-animation). It can follow the world or the spine instead.
  • For knees I always preferred to have them follow the feet when the feet are translated but now when they are rotated. I haven't really used the knee twist attribute in the past, but I’ve recently been seeing a lot of noFlip knee solutions. I’m actually pretty intrigued by it as I think it might be the way to go for knees from now on. I'll be experimenting with this.

  • Long attribute lists in the channel box should be grouped and separated with “empty” channels.
  • Rotation behavior of mirrored controllers should be checked. (ie. Rotating both clavicles in one channel should rotate them both up)
  • Rotation orders should be checked and be allowed for change, so that FKIK switching would still works.
  • Controlling fingers is always going to be somewhat tricky. A controller for every finger segment can get bit cumbersome to select. On the other hand, a long list of attributes in the channels box can also get a bit confusing. The method I find to be the best balance between control and speed is to have one controller at the base of each finger. Each finger controller would then have 2 attributes to curl the remaining segments. Sure you can’t bend every finger segment every which way for “smear” frames, but for games (where you have to turn anims around quicker), I think it’s plenty of control. Joel Ku introduced this to me a few years back and I’ve been loving this method ever since.

Next category...

  • Since different situations may call for different approaches, I think the key here is a quick and intuitive way for FKIK and space switching on the fly.
  • I prefer all local and global switches as keyable attributes on the controller itself. That way, I’m not wasting time trying to track the switch from a list of 50 attributes on a separate controller.
  • I also prefer only one controller per body part. I’d rather have one IK controller be switchable between local/ global space as opposed to multiple IK controllers for each space. Again it’s so I don’t have to track down that other controller when switching, not to mention the added clutter and worry about more visibility toggles.

Lastly, but just as important is…

  • A rig could have a gazillion controls to cover every possible situation, but if it’s too complicated and heavy and runs at a very low framerate, then polish time could still be compromised because accurately judging your animation in real-time is too difficult.
  • The balancing act here, I guess, is to know your production goals. (What’s the target, what’s the budget and timeline?) Controllers for uber-subtly may not be used if the budget doesn’t doesn’t allow time for them.
  • Proxy meshes, in addition to how connections are hooked up in a rig, can make dramatic impacts on how it runs in Maya when I hit that “play” button. Of course some characters will be more complex than others, but if I’m constantly making playblasts for every little change because my scene is running at 5 fps, even during the blocking stage, then two things will probably happen. I’ll have to spend more time on this anim to get the level of polish I’d like, or this anim will get done on time, but with less polish that I’d like.
  • Playblasts are definitely important for final polish. But if I have to playblast from the get-go, then there will ultimately be less polish time.

As for the face, I’ll just quickly mention that I am a fan of the Osipa-type interface—one that lets you quickly get the shapes you want but at the same time allows for layering in detail with “on-the-face” controllers if needed.

So to hopefully better illustrate some of the things I’ve been rambling about, I made a simple rig for everyone to play around with. If you're interested, download it here. I know no one really reads the “readme” files but try to at least glance through this one, there are features in the rig that may not be obvious.

And remember, in no way is the rig meant to be the super-rig (it’s not even fully complete). I’m sure any TD out there could look at the rig and find many ways to build it better. But there you have it. Again, these are just my own preferences. Feel free to add to this list or bring up counter arguments. I’m always looking for more efficient ways of doing things:)


Anonymous said...

Great post, thanks for sharing.

When animating, do you use sometimes the Gimbal rotation mode?
These different modes are quite confusing and the results random.

Unfortunately the link doesn't work.

TJ Phan said...

I rarely use gimbal mode. Most of the time I'm in local. I know some animators who do use gimbal mode though. Again, no right and wrong way:)

Try the link now. I just made a direct connection to the file instead of redirecting to another page.

And thanks for reading JKG!

jeff said...

love it! being a gimble mode guy, my pref is for the rotate order of at least the biceps to be zxy to avoid gimble lock when doing an arm swing.

fantastic rig though..can't wait to start using it!

let me know if you need a hand with some facial targets

TJ Phan said...

Cool. Yeah, I can never totally decide on what rotation order I prefer for the arms, esp. when they cover such a wide-range of motion. I do have it set up so that if you change the order of the left FK arm controller, the right side will reflect that change as well.

And if you find anything that's broken, let me know. I'm sure it's broken somewhere:) Also, if you manage to mod the matching scripts to work with namespaces, hook me up!

Dela Longfish said...

Man, dropping some knowledge! When are you going to put all this in a book? :)

Hope all's well, folks at the old spot miss you man.

TJ Phan said...

Haha--I'm just fakin' the knowledge:) You still need to publish one of your sketchbooks. Tell Team 3 I miss them, TGIF's, and the Final Final!

Darrin said...

can we get an animation test?

TJ Phan said...

Darrin, part of my intention with a personal rig was to create personal animation--as soon as I have more free time from work:)

For the record, though, most of the anims that I've done in the past were on rigs that had this controller scheme to some extent, I just added a few more features that I personally liked. Let me know if it works for you:)

TJ Phan said...

BTW, I still need to hook up facial controls--again, when more free time comes around:(

Ian said...

Great post and rig TJ. :)

TJ Phan said...

Thanks, Ian. Great stuff you're doing with the A.R.C. as well.

Jean-Denis Haas said...

That's fantastic! You rule!

Unknown said...

The right foot won't rotate for some reason. Didn't try to look into it.

TJ Phan said...

Thanks, Jean-Denis! Hope all is well in the Presidio. The Star Trek trailers are looking pretty slick btw.

Robert, I've checked out the rig on a few different machines but haven't seen this bug yet (though one of my friends mention this to me as well). I'm running 2008--wonder if that makes any difference. If you (or anyone else) find out what's happening, let me know.

David Bernal said...

Thanks TJ! Aawesome!!

Mahesh Bisht said...

Thanks for sharing this wonderfull Rig man...



. said...

Super thanks. Such an appealing rig. I love the deformations and what brilliant clavicle joint placement! How did you come up with such a genius idea?! Bravo! And thank you.

Mahesh Bisht said...

there is no facial controller or eye cont..for this.???

TJ Phan said...

Thanks again, guys.

Hey Mahesh, sorry but yeah...facial controls will have to come later when I find more free time (I already lagged just to get this first pass out). That's why I threw the doughboy mesh on last minute. I figured if there are no facial controls (yet), it might be less distracting to animate without an actual face(physical, action, or pantomime tests). Hopefully version 2 won't have to wait too long...but no promises:)

juhada, the clavicle placement stemmed for last-gen game engines where we tried to minimize translation of joints. My crazy logic was if you placed the clavicle joints closer to the center of the body, or even more extreme, on the other side, you'd be able to shrug the shoulders higher before they collapsed into the head. Also, for shoulders, I don't think they ever really need to rotate the arms.

Unknown said...

Damn Tj... you are a freaking machine! I bow down to you dude.. bow down..yea... i am in awe of your endless capabilities.

TJ Phan said...

Haha--you're too kind, Saul! But if I was a machine, I'd want to be the T-1000!

Matt Ornstein said...

Hey TJ, I saw this rig on spungella a while ago, but I didn't realize YOU had made it! Bravo man. I look forward to there being facial on it! :)

TJ Phan said...

Matt O!...thanks man. Hope all is well down in Irvine.

marcelino newquist said...

Hey TJ I wanted to try your animation rig but I couldn't open it with maya 8.5. does this work with older version of Maya? Thanks TJ, can't wait to play around with it.

TJ Phan said...

Marcelino, I'm using Maya 2008. I think it's newer than 8.5.

I wonder if you could open the file in a text editor and change the version number. Not sure, but worth a shot.

Richard Adenot said...

Hey there TJ,

Awesome rig! seems to work great!

I was gonna use it to animate an animation mentor assignment, but for some reason, I can't rotate the R_foot_IK_CON.

is that just me?

TJ Phan said...

Richie, I hope you don't mind that I copy and paste, but you're not the first that brought this up. Here's what I replied in another post...

"...Michael, this glitch you're talking about is definitely odd. I have yet to see it on any of the machines I've tested it on, though a few other people have told me about it.

I've had a couple of other riggers take a quick look at it but could easily see what the problem was.

I'm not sure if it makes a difference, but I'm using v2008 and not v9. Still, why would only one foot be wiggin' out for you. I think the only way I'd have a chance to fix it is if I rebuild the rig, but unfortunately, I don't see myself having any free time in the near future.

Sorry man. But if you're able to get someone to figure this out, definitely let me know!"

Yeah, I'll probably have to put up a disclaimer in the main post. Thanks for giving the rig a go though.

TJ Phan said...

Hey Jeff, after playing around with this rig (and others), I see what you mean about having zxy for the rotation order of the arms. Definitely the safest bet for minimal gimbal lock. I'll be sure to change it if I ever get around to updating the rig. Thanks for callin' it out!

orme said...

Was wondering what rig were you using in your compilation video? You know the one where the guy is asking where Dante is. Just wondered, I've been seeing this character or characters like him for while, just wondered what he was and if there is a free rig out there like this. Let me know.



TJ Phan said...

That's Norman from the Academy. You can find him here:

Ken Saba said...

Thanks for this nice rig!

I´m just finishing a body mechanic study animation and it fits the personality I imagine.

My feedback (not complain at all):

I first try it on Maya 8.5 on with I could not rotate one of the feet; the other works... On Maya 2009 it works fine.

When he raise completely his arms, the shoulders sudenly become strange in shape, from side view.

If you offer the next version with facial rig, you´ll probably see a lot of students like me using it a lot, cause it´s very nice in shape and really very easy to use his controls.

Congrats and thank you a lot!

If you wish to see an exercise with your rig...:

Regards from Brazil!

TJ Phan said...

Nice exercise Ken! Your other anims were fun to watch too. And thanks for the comment and feedback.

Yeah, I definitely want to rebuild this rig one day and fix issues that it currently has (first off would probably be a new shoulder set-up with improved twist joints). Hopefully by just rebuilding, it would also fix the odd foot problem. And yes, a facial set-up would be nice. I'm thinking I may need to rebuild the face mesh a bit first though.

orme said...

Thanks for the rig hook up, TJ.

roryta said...

great blog! :)

TJ Phan said...

thanks, rory! :)