Stefan Ehrenhaus (You may know him on the forums as the moderator "Adeptus") is the featured guest author for this in-depth rigging article. He started his 3D journey more than three years ago as a hobby, learning from books and videos in his spare time. After discovering Digital-Tutors he began to focus more on 3D and quickly realized that this was starting to become more than just a temporary hobby. He took the time to learn each step within the 3D pipeline, but it was rigging that caught his interest. It was watching Disney's Tangled that sealed the deal and inspired him to become a rRigging TD. Along with learning from Digital-Tutors, in October 2011 he also enrolled at a film school in Berlin where he was driven to succeed. Right after graduating he got hired at MPC London where he currently works as a Rigging TD.
Rigging is an essential part of the 3D production pipeline. You need to know what it takes to make your rigs stand out from the multitude of other rigs out there, and what's important for a great rig that is both intuitive and flexible for the animator. In this article you'll learn the general workflow of a rig creation process, key principles that you need to keep in mind and some vital tips for making your rig stable, so you can create the best possible rig for any project you encounter.
We will split this post into a few sections, here's an index of them:
- What you need to do before
starting a rig
Joint and Control Layout
- You planned your rig, now let's get stuff done
-What it takes to make your rig look believable and dynamic
Tips and Tricks
- Scripts, skinning and muscles
Planning the Action
Many things will fail very quickly if you don't plan correctly for your rigs. So what does that mean? First of all - range of motion:
It's always good to build your rig in the most flexible way, the more poses and complex motion your rig can perform without breaking, the more fun it will be for an animator to use it, and therefore the better the animation will be. But it's not always easy to build a rig that stays stable on extreme poses, and if you are building the rig for a project that involves more than just yourself it is wise to find out what the character will be performing and what he won't be. Knowing those things can save you a great deal of time. Remember, the more people that are involved in the creative direction process the more likely it is that things will change, so always prepare for changes.
If you want to make the best rig possible for a reel, personal project or just for fun, things can look a little different. Here's a simple tip: a stable rig can perform “most” of the actions that an average human can do. Don't try to force in features that under normal circumstances would not be possible to the character that you want to rig. If you needed to incorporate added features for example, if you want to rig a car accident victim or something that extreme, it's better to make a specialized rig for just that instead of stacking all the things in your main rig file.
A Good Model
A clean model is essential; working with a symmetrical pose with clean topology will make the skinning process much easier. If required, you can always add asymmetry with a blendShape, displacement or skin weight and transfer to the asymmetrical render mesh later. Having the right topology and edge flow for the right places is crucial as well.
To be able to sculpt good-looking muscle activity and corrective shapes, it's important that your topology supports the correct creasing in required areas. Try not to use an extreme polygon density for the base model for the first skinning pass. Skinning a low-resolution character is much easier and takes a fraction of the time that is required to properly skin a subdivided character with more than 20,000 vertices. However, if you're given a rather high-resolution model, don't worry - there are ways to make skinning go much faster!
Joint and Control Layout:
It can be very frustrating to notice that a joint is badly placed after you were almost done with the first pass. Unless you have a well-designed scripted rigging tool set, but even then you want to be 100 percent sure your joints are all in the right spot and with the right orientation, which is something that many people don't spend enough time on. For example, the elbow and knee joints, if your joint front axis is X, then the elbow joint shall not have any X rotations, and
only rotations in one
of the other two axes (which is going to be the bend axis).
Not doing that can cause IK handles with pole vectors that don't work correctly. Another good example is fingers, there are many fingers, and you might need the job done quickly so you don't put enough attention required for the fingers. Once you begin skinning and animating you will notice they're not rotating as they should.
Taking a look at anatomical reference is very important. Studying how things move, and where certain things pivot from is always a good habit. Get to know the different skeleton joint types and how to represent them best in your rig. For instance, where to use double joints, and where not to, (i.e. Elbow = no double joint. Knee = double joint.)
Control System and Rig Hierarchy
Using a certain naming convention for all the rig nodes, and using a consistent rig hierarchy will make working with a rig much easier in a larger pipeline since it will be easier for rig-managing tools to pick up module names and corresponding nodes. A well-organized control design is another important topic - everything from the placement and shape of controls, to the level of detailed settings for control systems.
A good rig always has more controls than it would require to get the character moving, but it doesn't show them right away. Animators don't want to get “face slapped” by a rig with 300 controls on their screen. In blocking phase of animation it's a good manner to say “less is more” so the less controls an animator needs to be able to get the main body action of a character done, the better. All the other controls should be hidden and ready to be used in the next animation passes. So in case anything on the animation needs to go through art direction, chances are high that the animators want to change the shape of things slightly or shift volumes around without messing with the general skeleton transforms.
Adding muscle/volume controls, which are controls that work as offsets, to move certain areas of a mesh around are very important in a rig that needs to appear flexible, fleshy and dynamic. Also, the ability to squash and stretch different areas can be a life saver to match certain shot requirements. It's important that you split all heavy features away from the animation rig. Stuff that will make your rig file slower will be very annoying for animators.
So make sure to keep an eye on performance, and if things get too slow, try to isolate them on a cache/render rig file that the animators won't need to mess with. If there are important features that animation may need, try to proxy them, and add a proper switch that turns off the evaluation of those features when the animator wants them.
The Difference Between Game and Film
A game rig will have to be of a rather simple structure and probably joint-only based, and maybe even restricted to rotation/translation only, depending on the game engine. Normally one starts to learn to build rigs that way. In film however the degrees of freedom are only limited by simulation time and deadlines, so it's good to get away from that overly simplified way of thinking if your rig is for cache. To be able to achieve certain things one must sometimes rig through many meshes and have plenty of deformer stacks that eventually build up to the final result mesh.
A Simple Example
If you have built a rather simple and classic joint-based rig, that works well nevertheless, but you want to add a muscle system there is no need to override the skin cluster on that mesh. You can just rig the muscle system on an extra mesh. If you then blendShape (using two blendshape nodes stacked on top of each other) both rigs into a third output mesh, you can have one rig type (preferably the joint rig) be the base, and blend nicely to the muscle rig on any area that you want by painting deformer weights on the second node. Since you're using two blendShape deformers instead of one with two targets, the second one will override the first one which will prevent double transforming completely.
That was a quick example that hopefully demonstrated what can be achieved by thinking outside the “One Rig - One Mesh” ideology.
Volume is a tricky one, it may not be easy to build a rig that holds stability on extreme poses, but here we aren't talking about flipping, here it's all about volume loss due to classic linear joint matrix interpolation (i.e. raising the leg, will make the bottom area shrink [problem: bend], or rotating the hand will cause the wrist area to do the “candy wrapping” thing [problem: twist]).
So there are two main types of volume loss: Twist and Bend. While building counter rotating twist chains can be a rather simple and obvious task, addressing bend volume issues is something that many people just don't do at all, so how should you tackle this? Well, to solve this issue you would need to find a way to be able to push influenced vertices on the outside bend out in the opposite direction of the orthogonal vector of the aim axis of the rotating joint and its parent.
This would also need to be done in the actual direction of the vector explained above on the inside of the bending mesh since the volume loss there is noticeably collapsing. By doing this you can also delay or reduce the creasing a little and have a nice feeling of volume underneath the skin.
A simplified way of doing this is by adding a joint on the rotation point and having it be orient constrained to both driver joint and its parent, and drive its corresponding scale values by the two rotation input joints. For example, with a driven key based on the distance between the start and end of the bend chain. It's better to over exaggerate the push value of a joint, so that smaller weight values work well, that way you can almost paint weights without really affecting your original skin weights.
Tips and Tricks
A Scripted Rig Approach
This would actually be addressed to the ones that already have a good base of rigging knowledge. Of course it's fun to rig, but doing a similar rig for many characters over and over again is not.
The more repetitive a task gets, the less you will pay attention while doing it, and the higher chances are for you to make mistakes. So imagine you are asked to rig a snake, seems like a simple task, but soon you'll notice that rigging a good snake-like spine with lots of joints has a couple of repetitive processes in it.
So if it takes you 15 minutes to rig a human spine with six joints imagine what a snake spine with 24 joints would take or an octopus with 8x32? That can take several days to accomplish manually. And now you need to rig more than one octopus all with different sizes and proportions. You could be looking at weeks, or months of time. You might be getting goose bumps just thinking about it. Now what if you had a script that you can just put a single curve in, and some parameters, and it builds such a thing in one second. Sounds awesome, right?
Doing stuff with a more automated approach will also guarantee a certain quality and consistency throughout all rigs in your project that makes it easier for pipeline tools to work with your assets. Since building general rigs via scripts can be so fast, it leaves you much more time and motivation to develop solutions for the problems that really are challenging you.
As mentioned before, skinning a low-res character is much faster and easier, because you can address certain smaller issues on a per-vertex basis via component editor or with the weight hammer or other tools. Therefore you'll get a good-looking deformation much faster than with a high-res mesh. A good workflow is to have a low-res version of a mesh, that you can skin paint the main deformation to (and maybe also use that mesh for a layout/blocking rig), and when you are satisfied with the results, transfer those weights over to the high-res version of the character.
Since Maya's initial skin weights aren't really good, and even the new heat map skinning doesn't work perfectly, a good workflow is to harden out all weights, so grab a hard brush, with a value of one, have your skinCluster weight normalization on interactive, and start segmenting the weights to the proper bones.
That way you can remove those influences from unwanted joints very quickly. From there applying a first smooth pass will soften things back in again. Be very mindful of your max influence value because Maya will tend to mess up your weights if you smooth on areas that would involve an additional joint into the current vertex weightList.
So it's a good idea to turn off Maintain Max Influences, and just to be sure, set the max influences to a very high value. When you're happy with the results, and transferred the weights over to the high-res version, try to work with post normalization from this point, to add joint weights for new joints non-destructively.
Do You Even Lift? What about Muscle Systems?
A muscle system can add the missing bit of dynamic mesh deformation onto your rig, but you want to really be mindful of how you place your muscles, which muscles you want to have in your rig, and how you constrain them to the rig. Just throwing in some NURBS Spheres, stretching and scaling them so they represent muscle mass, converting them to muscles and then parent constrain the controls to the nearest joint may seem like a fancy thing and probably not too complex.
But in fact, it is. So you should really spend time in planning a muscle rig, look up reference and analyze and develop methods to constrain muscles in a meaningful way to the rig. Otherwise, you'll just get a different kind of “messed up rig”. Also, muscle is a very heavy calculation progress, so a good idea is to use a lower resolution mesh, with no hands, feet and facial geometry, to save some computing time, and wrap that to a full copy of your character mesh, and blend it onto the output mesh as described in the Deformation topic.
To add stability to a muscle rig, it's a good idea to model the muscles as simple as possible, not too flat or too curvy (banana-shaped). For larger muscles or muscle-groups like the pectoralis
or the trapezius
use multiple muscle objects to cover the entire attachment area rather than just one object scaled and stretched in place to be flat and wide-surfaced. That would make it unstable and deformations won't look like expected!
This in-depth article should now give you a very strong grasp of the workflow and key techniques and principles that go into creating a rig that will fit the needs of any project. Make sure to utilize this guideline in your next rigging process and see first hand the benefits it has on not only the quality of your rigs, but the speed in which you create them. To learn more about rigging be sure to check out our hundreds of in-depth rigging tutorials