Corrective Joint Rigging Setups
Kiel Figgins - 3dFiggins.com
Corrective Joint Based Rigs from Kiel Figgins on Vimeo.
Due to a large amount of questions and interest, I did an isolated breakdown of just the arm as it's the same setup used at the leg. The actual steps for creation were a bit more involved, so I decided to host the file trimmed to just that section so you can reverse engineer if you're interested.
I've been working up various iterations of these solutions for a while, but I've finally reached a point where all major areas are implemented. The anatomy / skin weighting / etc are still off, but this is more about the system, finesse will come with further refinement and anatomical studies. For the time being, this was to explore how, using as few additional joints as possible, I could remove major limb bend intersections, get a solid squat shape, head look up and internal pixel shift when the limbs are moving, all while being automatable and game ready.
The setup itself is fairly straightforward, the hierarchy is ( Constrain_Grp > SDK_Grp > Offset_Grp > CTRL > Joint ), the joint has translate/rotate/scale open and the SDK is driven by the primary bend joint (elbow, wrist, knee, etc). It's constrained to the nearest joint, typically a twist joint along the limb. The SDK's are created manually since they're fairly model specific, but can be mirrored over so only creating the Left side is needed. The crease areas (inside elbow/knees) are a slight modification by having 3 joints on the inside crease to better push and shape that area of high deformation.
Though not shown in this video, the jaw/throat corrective would work if the character is talking and even even the animator a slight option to look like a swallow or neck tension for a dialog piece. As the throat corrective is driven by the jaw angle in relation to the neck, not just the head.
For the crotch, I found that having an additional control for just the groin helps ease the 'cod piece' look doing sits/squats as painting weights can leave harsh seams in that area. Previously, I'd been spreading too much weight from the legs into the pelvis, which looks better when walking, but had severe volume loss during squats or sitting. When I shifted the weights more the pelvis, harsher lines would show up. You can see a hint of this in the 'duck tail' on the side view of the squat. Clearly that areas would be smooth a bit more during weightings, but with the addition of the bum/bum line/hamstring joints, getting a more robust shape there is more achievable.
Since this is a driven solution, it would be built for rigs where the animation team wants more control over the shapes of the character, to push or exaggerate. Since a character like spider-man is going to hit more extreme poses, or stay in a heavily squatted pose, this setup allows them greater flexibility to sculpt the silhouette of the legs/butt, the down side being more work for them as this means more controls and keys are needed.
A question I'm often asked is why I would go with joints instead of blendshapes. I agree, blend shapes have much better end results, however my skillset is not in modeling, and creating all the additional shapes would be tedious. As this setup can be created via script, and work with my paint weight and mirror weight tools, I find the construction more appealing. Plus, having the additional control allows animators to jiggle, flex, spot fix the areas if needed. Also, since the joints are leaf joints, any asymmetrical scaling in the solution still works for game engines. Lastly, if a corrective shape is needed after this, it's still can be created and only have to fix a much smaller error.
The next phase for this setup will be a stomach/torso pass to help maintain a bit more volume during bends and curls, as well as more work on the inner hip/thigh crease, hopefully exploring how this setup could be applied or worked into my own vimeo.com/295232753
Here are some answers to common questions:
Why use joints instead of deformers like blend shapes?
There's nothing wrong with a blend shape solution if you have the time and resources to create it. If you would like to explore a blendshape solution check out SHAPES by @brave_rabbit on twitter. What's being shown is an alternative to a full blown blendshape solution, not a replacement for one. In my work experience few projects outside of film have this, as the modeler may not be able to create all the shapes in time, the models are not ready, the team has no modelers or additional budget, this level of deformations isn't required but would be a nice boost.
Beyond those constraints here are some additional benefits:
+not mesh dependant
+animator can jiggle/push/spot fix
+blends can be added atop
+scales with project needs
+shape can be updated later
+smooth blend between poses
All of this comes at a loss of fidelity of final shape that can be created by blendshapes. So to me this is a trade off, especially for small projects.
Where would you use this setup? Film? Games?
Film typically blendshapes, muscle sims, and shot sculpts since they have the resources and want that level of precision. This setup works well for games being joint based and smaller commercial/personal projects where a dedicated modeler or creature dev artist may not be possible. This setup can also be used in a film but for mid to back ground characters
The results look good but they're not accurate
This solution, especially this example, is not about being right, but making the results less wrong. Anyone can spot major intersections at a glance, so the goal was to remove those. As a benefit, you get a lot of internal pixel shift that again may not be anatomically accurate, but helps ease the lifeless ness of a CG solution when these additional details are missing
Are helper joints same as corrective joints?
Yes. Both describe additional joints added to the rig and skin to improve the skinning results.
What vert influence count are you using?
In the video it's 8, however in game the typical max is 4. The 4 count is rough. Some engines can handle 8, but usually 4 is the default. I use the same setup but accept the loss in fidelity. Looks nice in playblast though with a full count.
Where to get started building my own version of this setup?
1) I hosted an example Maya file (2014) here 3dfiggins.com/correctivejoints/3dFiggins_Corrective_joint_example.zip
2) Start researching Set Driven Keys
3) Here's a tutorial I wrote about painting weights 3dfiggins.com/writeups/paintingWeights/
4) You can download free rigs to see other limb setups 3dfiggins.com/Store/#FreeStuff
Hopefully that gets you started down the right path
For more questions, answers and related links, check out the the original Twitter post here:
For further information, do read this incredibly detailed and informative breakdown on the use of helper joints vs blendshapes for Game Dev
Other Opinions, Further References, Typos, and Grammar Issues please contact KielFiggins22@gmail.com