Reader Ric Williams emailed me a raft of questions about animation with blendshapes versus joints, mostly for facial animation. I thought I would post my answers here, as others might find them helpful!
Q1: When is it best to use joints or blendshapes?
Historically, it used to be that blendshapes meant pre-rendered, and joints were used for real-time stuff.
But now that engines like Unreal 4 offer morph targets in-engine, this distinction is no longer entirely valid. And with enough joints, you can get really detailed facial setups, meaning blendshapes aren’t the guaranteed best solution for quality results.
So: joints are the most flexible choice. But the initial setup time is a pain. For a long project where animation quality is important, joints are the way to go. And if you can reuse a facial setup, this can become the easiest solution.
But if you need to bang out something quickly? Taking the time to create a joint rig might be overkill, so making a few blendshapes might get the job done faster. Blendshapes will also be easier for a modeler who doesn’t want to learn character setup!
Q2: When is it best to use both joints and blendshapes?
Corrective blendshapes are often used in combination with joints to create proper muscle deformation in the body. E.g., when the arm is raised, the pectoral area blends to an ‘arm up’ pose. This generally requires an elaborate set of driven behaviors (like set driven keys) to make it automatic.
Nowadays this workflow is probably obsoleted by simpler and more robust muscle simulations, that weren’t available when the corrective blendshape workflow was first developed. Muscle systems are just as complicated to set up, though, if not more so, than blendshapes.
Q3: I’ve seen blendshapes used within blendshapes–why would one do such a thing?
You could create blendshapes for specific areas – e.g. the forehead blendshapes are separate from the mouth blendshapes, and they are combined to create expressions.
Or, you could combine full face blendshapes, e.g. angry + smiling = incredulous disbelief.
Q4: When should one detach the head from body – or not detach head from body?
This would be a big issue with blendshapes. Blendshapes add history in Maya – i.e., it is all computationally expensive. If the body is connected to the head, then every blendshape includes the body as well, and is that much heavier. So, it would be ideal to detach the body and the head.
Using joints, though? No reason to separate body from head.
Q5: What is best way to detach and reattach the head?
Again, only an issue with blendshapes.
If the head doesn’t need to attach to the body – e.g. it is tucked inside the collar of a shirt – then don’t reattach the head!
Otherwise, use joints! Or have a lot of RAM. The best workflow might be to get the head blendshapes completed and set up, and then attach it to the body and do bone setup for the body… but IME that is how to create a buggy, crash prone file!
Q6: How can I rig faces without making it so heavy my faces barely move on my rig?
Make sure history is deleted before you start rigging and morphing!
Try deleting non-deformer history.
Reduce the number of polygons. If you’re using blendshapes, this will have a multiplicative effect – every blendshape will be lower poly, too.
Reduce the number of history nodes. Lots of blendshapes? Reduce the number.
Creative solutions: if the character’s face only needs to animate for closeup, create a character that is just the bust, and animate that.
And if it’s joints, you can reduce the joint count, especially if the head and body are part of the same skeleton.
Have a question of your own that warrants a detailed response?
Email me! I plan on doing more reader request posts like this one, whenever I run into an issue that a lot of people ask about.
Oh blendshapes is the same as using the Morph modifier in 3DS Max. I’m not sure if that information will help anyone else but it immediately clarified what blendshapes was for me 😛
Yes, exactly. 🙂
Really useful Maya tips James!
Thank you!
if your head is connected to the body you can also connect by making 2 duplicate meshes, deleting the body faces on one, wrapping the other duplicate to the delete faces mesh, and blendshaping it in to the full body mesh ( sorry long comment)