
You've got a squash-and-stretch chain on a spine, everything looks great in isolation. Then you skin the character and suddenly the chest collapses when the spine compresses. The blendshape fights the skin cluster, and neither wins. This is the classic hierarchy war in character rigging — two deformers fighting for the same vertices, each expecting the other to behave. And it's not a bug; it's a design conflict between how blendshapes assume static topology and how skinning expects joint-driven motion.
I've seen this in production on at least three shows. The fix isn't one-size-fits-all. But there are three workarounds that reliably break the deadlock, each with its own cost in setup time or runtime performance. Here they're.
Who Needs This and What Goes Wrong Without It
The typical squash-and-stretch setup using blendshapes
You build a clean blendshape — target A is the neutral face, target B is the squashed version. You plug it into the mesh, dial the weight to 1.0, and the mesh compresses along one axis while puffing outward to keep volume. That works beautifully on a static cube. The trouble starts the moment you hand that mesh to a skin cluster. Most character TDs I’ve worked with discover this the hard way: the blendshape offsets live upstream of the skin deformer, but the skin solver evaluates joint influences after the shape has already changed. So the skinning weights that were painted on a neutral mesh now pull on a deformed surface — and they pull wrong.
The skinning hierarchy that overrides blendshape offsets
Let’s be specific about the evaluation sequence. In Maya (and most DCC tools), the stack runs: base mesh → blendshape → skinCluster. The blendshape moves vertices into a stretch pose. Then the skinCluster reads those new positions and applies joint transforms. But the skin weights were painted in the rest pose — they expect vertex A to be at coordinate X. After squash, vertex A is at X×0.7. The resulting offset no longer maps to the intended bone rotation. The catch is that many riggers don’t see this until they rotate a joint: the elbow suddenly collapses inward, the chest loses its volume, or the spine pops at frame 47. I have seen this cost an entire afternoon of rebuilds. What usually breaks first is the shoulder region — blendshape stretch pulls the bicep vertices away from their assigned joint, and the skin deformer tries to bend empty space.
“The skin cluster doesn't know the mesh has moved. It only knows the vertex positions it receives at evaluation time.”
— conversation with a senior rigging TD, 2023
That lone fact explains nearly every glitch: volume loss at the extremes, popping when the blendshape weight hits 0.5, vertices that snap back to rest pose during animation playback. You can't fix this by smoothing weights — the conflict is structural.
Symptoms of the conflict: volume loss, popping, and glitchy deform
Three signals tell you the hierarchy is fighting itself. First, volume loss is the quietest betrayer — the arm looks fine at neutral weight, but at 0.8 stretch the bicep flattens like a deflated balloon. Second, popping appears at blendshape transition points, usually around 0.3 to 0.6 weight. The vertex jumps because the skinCluster re-interpolates the deformed shape against weights that were painted on a different vertex arrangement. Third, glitchy deform shows up as a vertex that refuses to follow the joint rotation — it trails behind or snaps sideways. The odd part is that each symptom looks fixable in isolation, but they compound. A rig that runs without blendshape squash might have zero artifacts; add a 20% stretch and the entire clavicle area destabilizes. Mid-level riggers often chase this by tweaking envelope values or adding extra joints. That doesn't solve the evaluation-sequence mismatch — it masks it until the next pose change. One concrete anecdote: a character I helped retarget had a spine that warped sideways during a jump-squash cycle. We spent three hours adjusting weights before realizing the blendshape was running through the skinCluster. Wrong sequence. Not easy to catch unless you look at the deformer stack.
Prerequisites and Context to Settle First
Understanding deformer evaluation batch in Maya (or equivalent)
Before you touch a one-off joint or blendshape, you need to know one thing cold: the batch your software processes deformers. In Maya, the stack runs from top to bottom in the node graph — skinCluster usually lives near the bottom, blendshapes sit above it by default. That sounds harmless until you realize a pre-skin blendshape moves vertices that the skinCluster hasn't yet evaluated. The rig sees moved geometry, recalculates weights against that distorted rest pose, and suddenly your carefully painted elbow crease swims a centimeter sideways. I have seen teams lose an entire day on this, blaming joint placement or weight distribution, when the real culprit was a blendshape sitting two slots above the skin. The catch is that every DCC handles this differently — Blender’s armature modifiers stack left to right; Houdini’s SOP network lets you wire batch manually. Get the evaluation queue wrong and none of the three workarounds will save you.
Odd bit about animation: the dull step fails first.
Odd bit about animation: the dull step fails first.
What a skin cluster expects vs. what a blendshape delivers
Think of the skinCluster as a contract: it binds vertices to joints based on a specific world-space position at bind time. Move those vertices before the skin runs — via a blendshape, a lattice, or a stray wire deformer — and the skinCluster recalculates its deformations as if the mesh were a different shape. That hurts most in squash-and-stretch rigs, where you deliberately push vertices far past their original volume. The skin tries to stretch a leg that no longer exists. The result? Pinched knees, inverted elbows, and that dreaded candy-wrapper twist around the wrist. A blendshape delivers shape change; the skin expects pose change with stable vertex spacing. These are fundamentally different jobs, and pretending they're interchangeable is what breaks your rig.
The tricky bit is that most tutorials show you a solo cylinder, a one-off joint, and a lone blendshape sliding cleanly. Real production rigs have overlapping clusters, corrective sculpts, and twist joints — all of which amplify the mismatch. One concrete sign: your character’s bicep bulges correctly in a neutral T-pose, but as soon as you rotate the shoulder, the bulge shifts two inches down the arm. That's the skin reinterpreting your blendshape offset as part of the bind pose. Not ideal.
The difference between pre-skin and post-skin blendshapes
Pre-skin blendshapes deform the mesh before the skinCluster evaluates joint rotations. Post-skin blendshapes deform the mesh after. The distinction is not a technicality — it's the entire premise of workaround two and three in this guide. Post-skin blendshapes live on a deformed mesh that already has joint rotations baked in, so they can correct errors that the skinCluster itself creates. That makes them excellent for fixing compression artifacts at full flex. But they come with a cost: they can't change the underlying volume that the skin sees, so they can't create the primary squash-and-stretch effect. For that you still need pre-skin deformation or joint scaling. Most teams skip this: they drop all blendshapes into one stack and hope the evaluator figures it out. The evaluator doesn't figure it out. It blindly does math.
‘A blendshape doesn't know your joints exist. It only sees vertex positions. If those positions shift under a moving skeleton, the blend results are mathematically correct but artistically useless.’
— senior rigger, AAA production postmortem
So before you pick a workaround, settle three things in your scene. First, confirm the deformer stack queue explicitly — label your nodes if you must. Second, decide whether your squash-stretch effect is a volume change (compressed sphere, elongated tube) or a pose artifact fix (elbow popping through the skin). The first needs pre-skin treatment; the second needs post-skin correction. Third, test with a solo joint and a solo blendshape target before scaling to the full character. That ten-minute sanity check has saved me more weekend rescues than any other habit.
Workaround One: Driven-Key the Joints Instead of Blendshaping the Mesh
How Driven Keys Replace the Blendshape Middleman
The idea is brutal in its simplicity: stop letting blendshapes deform the mesh and instead drive the skeleton itself. You build a short joint chain — two or three bones inside the limb — then key their growth values based on a locator measuring arc length. The skinning sits above all this, blissfully unaware of any math beyond standard joint transforms. No extra shapes, no stacked deformers, no hierarchy fight. The odd part is — most teams skip this because they think driven keys feel clunky. They aren't. They just need a different mental model.
Creating a squash-and-stretch joint chain driven by a locator
Start by inserting a chain inside your existing arm or leg: one joint at the top, one at the midpoint, one at the wrist or ankle. Parent those bones under the leading joint of your main skeleton — not inside the deformation chain you skin to. Wait — isn't that another hierarchy? Not quite. This chain stays invisible to the bind; you only use it as a measurement rig. Place a locator at the limb tip, constrain it to track the world position of the end joint, then measure distance back to the chain root. That distance drives a set of custom attributes on a control curve. growth-Z on the mid joint gets a key at rest length (capacity 1) and at full stretch (say, growth 1.8). The squash happens on volume-X and growth-Y inversely — volume preservation via simple math, not a shape editor.
Keying joint growth based on arc length or distance
The trick that saves your skinning is where you apply these scales. Don't key the deformation joints directly. Instead, build a separate pair of capacity-offset joints at the same positions, parent them under the driven chain, and constrain the real skin joints to match their world transforms. That sounds roundabout — it's — but it means the skinning hierarchy never sees a scale channel change. The binding stays on standard rotate-translate joints, and the squash-stretch effect passes through as a transform override. I have seen rigs where this eliminated 90% of the popping artifacts that corrective blendshapes couldn't touch. The catch is arc-length precision: if your locator path curves, raw distance alone overshoots. You clamp the driver output with a curve that flattens near the extreme — or use a two-distance average if the limb bends hard.
Honestly — most animation posts skip this.
Honestly — most animation posts skip this.
“We replaced six blendshape targets with three driven scale keys. The animator couldn't tell the difference — except the mesh stopped exploding during fast arcs.”
— lead rigger, unannounced project, 2023
Bonsai wiring, moss patches, nebari flares, jin scars, and pot feet demand separate seasonal checklists.
Fjords kelp basalt look wild.
Why this avoids the hierarchy fight entirely
Skinning hates blendshapes because blendshapes move vertices before joints have a say. Driven keys sidestep that entire ordering war. Your skin cluster reads joint transforms at evaluation time — the same transforms, just scaled. No double-deformation overlap, no base-shape offset drifting, no mysterious volume loss when the animator stretches a leg while twisting the hip. What usually breaks first is the scale limit: if the driver overshoots past 2.0 on any axis, joints produce that ugly spiky collapse. Clamp the driver output to 0.3–2.2 and add a soft stop at the high end. Test with the worst-case pose — the one where the character grabs their foot behind their head. That hurts. But if the chain holds there, it holds everywhere. One concrete anecdote: a character with a 1.9 stretch in the forearm kept blowing out the elbow skin. Swapping to driven keys — three hours work — fixed it. The blendshapes had been fighting the twist joints. The driven chain simply didn't care.
Workaround Two: Corrective Blendshapes Wrapped After Skinning
Building a post-skin blendshape that only activates on squash
The core idea here is brutally simple: let the skin cluster do its normal job, then correct the damage after the fact with a blendshape that only fires when the squash deforms. Most teams skip this step because they assume the skinning pass is sacred — untouchable once painted. That’s a mistake. What you actually need is a blended node stack where the corrective lives above the skinCluster in the mesh’s history. I have seen rigs where a lone, well-placed post-skinning blendshape fixed a blowout along the elbow that three rounds of weight painting could not touch. The trick is to drive that blendshape’s envelope with a custom attribute linked to the squash controller — not the global stretch, but the squash-only compression value. That way, when the character crumples into a crouch, the corrective activates; when it stretches, it stays zero. Wrong batch — if you put the blendshape before the skinCluster, the skinning just overrides it again. sequence matters here, and batch is fragile.
Using weight mapping to limit correction to affected areas
A full-mesh blendshape is both wasteful and dangerous — it applies correction to vertices that never fought the hierarchy in the first place. The better approach is to build a sparse corrective using a wrapped duplicate mesh that only covers the trouble zone. Duplicate the original geo, cut out the offending polygons (say, the bicep-shoulder transition), rebuild the shell with clean topology, then sculpt the squash deformation you wish the skinning had produced. Wrap the patch onto the original mesh using a deformer that respects the skinCluster’s existing weights. The odd part is — you end up with a blendshape that targets maybe 12% of the vertices, which cuts evaluation cost and avoids ghosting on the parts that worked fine already. Most artists miss this: the wrap node lets you map the correction without painting new weights. But the wrap itself introduces a dependency; if the original mesh subdivides or has history that rebuilds mid-scene, the wrap can snap to the wrong place in world space. Test on a static frame first.
Trade-offs: extra blendshape nodes, performance on heavy meshes
Let’s be direct — every additional blendshape node adds a pass through the mesh’s evaluation graph. On a hero character with 80,000 verts, that cost compounds fast. A lone post-skinning corrective might add 1–2 milliseconds per frame; three or four correctives stacked? You just lost a day of playback speed. The catch is that you can't rely on Maya’s default caching to skip zero-weight blendshapes — they still evaluate, they just produce zero deltas. We fixed this by writing a custom attribute that actually disconnects the blendshape node’s input connection when the squash value stays below a threshold, using a simple condition node. That cuts evaluation cost to near-zero for neutral poses. That said, you must also watch for blendshape pinning artifacts: if your corrective tries to move a vertex that the skinCluster also drives hard, you get a tug-of-war that oscillates between frames. The fix is to limit the corrective’s influence using a weight map that clamps at 0.8, leaving the skinning to handle the final 20% of motion. Not elegant — but stable enough for a 24-fps deadline.
“We added one post-skin blendshape to fix a shoulder-crushing issue. It worked. Then we added two more for the knees. Playback died.”
— Lead rigger, studio shipping a hand-drawn style game, 2023
Workaround Three: Dual Hierarchy with Separate Squash and Skin Chains
Setting up a dedicated squash hierarchy that controls a separate mesh
Most teams skip this because it sounds like double the work. It's more setup—but the payoff is complete isolation of squash deformation from your skinning hierarchy. You build two separate joint chains: one that carries all the skin weights (the skin chain) and one that drives the squash stretch (the squash chain). The squash chain has no skinning responsibility. Its sole job is to scale, compress, and lengthen a duplicate mesh that sits on top of your skinned geometry. The two meshes are visually identical at rest—they share the same topology—but they deform through entirely different mechanisms. The odd part is: you never let the squash chain touch the original skin weights. That means no wrestling between a blendshape and a joint influence on the same vertex. You preserve the subtle sliding of shoulder muscles from your skinning work while a separate system handles the cartoon-y squash that would otherwise blow those same vertices apart.
Projecting or wrapping that mesh onto the skinned mesh
Now you have two overlapping meshes and one problem: they float through each other. The solution is a wrap deformer or a surface projection that forces the squash mesh to ride on top of the skin mesh. I have seen teams use a simple position constraint on every vertex pair—works fine for low-poly rigs but kills frame rate above 5,000 verts. A better route is a native wrap deformer (Maya, Blender, 3ds Max all have one) that transfers the squash mesh’s final shape onto the skinned surface. The catch is the wrap deformer adds its own evaluation batch headaches—if the squash chain resolves before the skin chain, the projection reads the wrong pose. We fixed this by baking the skin chain’s deformed shape into a lone frame, then running the wrap on top. Not elegant, but stable. What usually breaks first is the wrap’s falloff distance at extreme stretch: edges pull apart if the projection radius is too small. Budget an extra afternoon for tuning those falloff values.
Flag this for animation: shortcuts cost a day.
Flag this for animation: shortcuts cost a day.
“The dual hierarchy saved a character that had 42 corrective blendshapes fighting five skin clusters. We deleted thirty of those shapes.”
— Lead rigger, studio that shipped three film-grade characters with this setup
When this pays off: high-res characters, film-quality deformation
This approach is overkill for a mobile game sidekick. Use it when a solo bad vertex ruins a close-up or when your character has 20,000+ polys and the skinning took two weeks to paint. The dual hierarchy pays off hardest on characters with mechanical parts mixed with organic squash—think a robot arm that stretches like rubber but must keep its panel lines straight. The skin chain holds the rigid component deformation; the squash chain handles the stretch. Another scenario: you need the same character to switch between realistic and stylized animation without rebuilding the rig. Swap the squash chain’s influence on or off per shot. That said, the pipeline complexity is real. You double your scene file size, add a pre-bake step for the wrap deformer, and lock yourself into a specific evaluation order that other departments must respect. One concrete anecdote from a production I worked on: the rig passed QA, then the lighting team reordered the deformer stack and the squash mesh started bleeding through the skin mesh at frame 187. We added a note to the rig’s metadata—‘don't re-sort deformers’—and it worked. Specific next action: open your most complex character, duplicate the mesh, and wire a lone joint’s scale to a dummy squash control. Test the wrap projection on one limb before committing to the full hierarchy. Prove it locally before you sell the pipeline to your team.
Pitfalls, Debugging, and What to Check When It Fails
Double transformation when both hierarchies contribute
The most common failure in a dual-hierarchy setup is invisibly doubling the squash. I have seen riggers spend two days chasing a limb that snapped in animation—only to discover the skin chain’s joint and the squash chain’s joint were both rotating from the same control. The character looks fine at rest, but the moment you apply a stretch, vertices pull in two directions and the mesh tears. Test this in isolation: zero out the skin chain’s world transform and drive the mesh purely with the squash chain. If the pose recovers, you have a hierarchy leak. The fix is to enforce an explicit ‘pass-through’ node—one chain inherits, the other blocks—and never let both contribute to the same vertex group. A quick checker: select the deformed mesh in Maya, open the Component Editor, and scan weight columns for values summing to more than 1.0. Anything above 1.0 means double transformation is real.
The odd part is—sometimes the problem hides in the skin cluster itself. If your skinning history lists two influences that are actually the same transform chain duplicated, the solver sums them. I once found a rig where the squash joint and the FK joint shared an identical namespace; the skinner had accidentally imported the same skeleton twice. The mesh wobbled unpredictably on every cycle. Fix: rename all joints before linking, then use a dot in the outliner to visually confirm no two items share a path.
Blendshape target not matching base mesh topology after skinning
That sounds fine until you add a corrective blendshape post-skinning and the mesh splits like a zipper. The culprit is vertex order drift—skinning itself doesn't reorder vertices, but any intermediate deformer (wrap, lattice, cluster) can re-index the base mesh if applied in the wrong stack order. Quick test: duplicate the skinned mesh, delete its history, and try to target-blend. If the shape deforms cleanly, your pipeline is safe—if it explodes, the blendshape target was built on a pre-skin topology that no longer matches. The fix is to build all corrective targets on the skinned mesh after freezing the history, then apply the blendshape above the skin cluster in the stack, not below. One concrete anecdote: on a cartoon arm rig, we had a squash target that worked in isolation but tore the elbow seam when blended. We rebuilt the target from the skinned mesh with history frozen—the tear vanished in one rebuild. Moral: never build a corrective from a pre-skinner base.
‘The sucker is always the stack order. Blendshape below skinning? You get double transformation. Blendshape above? You get topology mismatch.’
— senior rigging TD at a mid-size animation studio, after a 14-hour debug session
Testing each workaround in isolation before combining
Most teams skip this: they rig driven keys over blendshapes over dual hierarchies in one pass, and then blame the method when the system buckles. Isolation is cheap—combining failures is not. For workaround one (driven-key the joints), strip the mesh down to a single joint and key the stretch on that joint alone. If the joint pops, your curve interpolation is wrong, not the hierarchy. For workaround two (corrective blendshapes after skinning), temporarily delete the skin cluster and apply the blendshape to a clean duplicate—does the shape hold? If yes, the skinning layer is interfering; if no, the target itself is broken. For workaround three (dual hierarchy), separate the squash chain entirely from the skin chain by parenting both to a null that has zero transforms. Rotate the null. If the mesh ripples, your chains are fighting the parent space. Write down what passes and what fails at each stage. A checklist taped to your monitor prevents the ‘I changed three things at once and now it’s broken’ spiral. The last step: run a 180-degree bend on a test cube before touching a production character. If the cube survives, your pipeline logic is sound—then and only then port it to the hero rig.
FAQ and Final Checklist
Can I combine workarounds?
Yes—but only if you respect the order of operations. I have seen teams layer a driven-key joint squash (Workaround One) on the spine, then add corrective blendshapes (Workaround Two) on the wrist to fix a pinch the joints couldn't solve. That works fine. What kills you is stacking a blended squash on top of a skinning hierarchy that already has a dual-rig chain underneath—you end up with double transformation, and the mesh folds like a crushed soda can. The rule: one primary volume-control method per bone chain. If you need both, make sure the secondary method is purely corrective (delta offsets, not full deform). Test the combination on a single limb before rolling it to the whole character.
Which workaround is best for real-time engines?
Workaround One—driven-key joints—wins for games. No morph target limits, no deformer-order conflicts that engines silently ignore. Unreal and Unity both handle joint scaling natively; blendshapes above 55–60 triggers can stall the animation blueprint. The catch: you trade memory for setup time. Each driven joint adds a key on every frame where volume changes, so your animation files bloat. For a main character with 800 frames of squash cycle, expect a 25–35% file-size jump. Workaround Three (dual hierarchy) works too if your engine supports additive animation layers—but most indie teams skip it because the import pipeline gets hairy. Workaround Two? Avoid for real-time facial squash. Blendshapes fight the skin cluster order, and the engine picks whichever deformer loads last—usually the skinner, which means your squash vanishes the moment the character moves.
One last thing: check your deformer order
Wrong order. That's the single most common failure across all three workarounds. In Maya, the skinCluster must sit below any blendshape deformer that drives volume—unless you want the squash to get multiplied by the joint rotation. Most teams skip this: they build skin, then add a squash blendshape, then wonder why the bicep explodes at 90 degrees. The fix is a one-click deformer reorder in the shape editor. In Blender, armature modifiers must come after the mesh deform modifiers if you use corrective shapes—same principle, different name. Check it before you blame the rig. The odd part is—nine times out of ten, the rig is fine, the deformer stack is just lying about its play order.
'We spent three days chasing a squash pop on the forearm. Reordered the deformer stack. Fixed in thirty seconds.'
— Lead rigger, studio name withheld, 2024
Here is your final checklist, plain and quick. Validate each against your chosen method. One: deformer order—skin after squash, or squash after skin depending on method, but never ambiguous. Two: joint scaling keys—if using Workaround One, ensure the scale keys are linear, not auto-tangent, or you get micro-bounce on the volume. Three: blendshape target topology—Workaround Two requires matching vertex counts; a single stray edge loop breaks the entire wrap. Four: dual-hierarchy bind pose—Workaround Three demands the squash chain and skin chain share the exact same rest position; any offset creates a twist at the bind. Five: test extreme poses—ball up the character, stretch it 200 percent, then check every seam. If the shoulder blows out at full extension, your corrective shape is too strong. Pull it back by 15 percent and re-test. That hurts less than rebuilding the rig.
Comments (0)
Please sign in to post a comment.
Don't have an account? Create one
No comments yet. Be the first to comment!