Skip to content

← Back to blog

How Characters Learned to Bend: A Field Guide to Skinning and Deformation

14 min read

Every animated character you have watched bend, breathe, or pick something up rests on a single, central problem: how do you take a rigid skeleton and wrap a deforming surface around it so the result reads as flesh and not folded cardboard? Today the answer can feel settled: bind the mesh with a skinCluster, then stack a handful of deformers on top. But it has not always been that clear, and it is worth knowing where the problem came from and how the answers have evolved. Each generation of work inherits a limitation from the one before it and chips away at it, so you can trace a straight line from hand-tuned lattices in the 1980s to neural networks that learn a film rig’s behaviour outright. This is my attempt to map how all of that technology connects.

The foundations: driving the skeleton, warping the space

The earliest move was to drive the shape from a skeleton. Interactive Skeleton Techniques (1976) posed a stick-figure skeleton and warped keyframe imagery from it, a full decade before anyone trapped a model in a lattice, and the seed of every skeletal rig that followed. The piece we lean on most, linear blend skinning, which binds each vertex to a weighted blend of bones, is famously hard to date: it spread through production as folklore and never got a single landmark paper, so the story picks it up at its first careful write-up a decade later.

In parallel, a second idea took hold: deform the space the model sits in rather than the model itself. Pierre Bezier sketched it in General distortion of an ensemble of biparametric surfaces (1978), trapping shapes inside a triparametric Bernstein lattice and letting them follow as the lattice flexed. Alan Barr’s Global and Local Deformations of Solid Primitives (1984) took the nearer route of bending the object directly with a fixed menu of warps, twist, bend, taper and scale, and worked out the part everyone forgets: how the surface normals ride along (via the inverse-transpose of the deformation’s Jacobian) so the shading stays honest.

Free-Form Deformation of Solid Geometric Models (1986) is what you get when you keep Bezier’s embed-and-warp idea, drop Barr’s fixed set of operators, and let an artist push the lattice anywhere. Instead of touching the model directly, you trap it inside a flexible cage of control points and bend the space around it, and the math (trivariate Bernstein polynomials) carries the model along. It became the foundation for countless rig deformers that followed.

Two years on, the skeleton thread got its first careful write-up for character skin: Joint-Dependent Local Deformations for Hand Animation and Object Grasping (1988), which went after a harder, more specific target, hands. Its JLD operators mapped a surface onto a skeleton and added believable touches like joint rounding and muscle inflation, all driven by the joint angle. That instinct, letting the pose of a joint decide how the nearby surface should deform, is an early ancestor of the pose-space and corrective workflows that would dominate later.

FFD itself was not a dead end but the start of a family. Extended Free-Form Deformation (1990) let the lattice take arbitrary, even cylindrical shapes instead of a rigid box, and Direct Manipulation of Free-Form Deformations (1992) cured its biggest annoyance by letting you drag the model itself while the system solved for the lattice behind the scenes. The same warp-the-space instinct later swapped the lattice for curves in Wires (1998), a sculptor’s-armature approach that still turns up in facial and character rigs.

Underneath all of this, production needed smooth, bendable surfaces out of messy topology. Subdivision Surfaces in Character Animation (1998) brought Catmull-Clark subdivision surfaces (1978) into Pixar’s pipeline for Geri’s Game, with semi-sharp creases and cloth work alongside. It is less a skinning method than a foundation: the kind of smooth surface that the deformation methods around it could safely push on.

Pose space and the first unification

For me, the hinge of the whole story is Pose Space Deformation (2000). It took the FFD lineage of Sederberg and the joint-driven instinct of Magnenat-Thalmann and folded them into one clean, purely kinematic framework. The key insight is that many different kinds of deformation, both shape interpolation and skeleton-subspace deformation, can be written the same way: as a mapping from a pose to a set of displacements. In practice that means you sculpt corrective shapes and blend them in pose space on top of ordinary skeletal skinning. That idea is the backbone of essentially every modern corrective workflow, and you will see it cited again and again below.

The catch is that good correctives are expensive, so the next move was to make them cheap. EigenSkin (2002) compressed a character’s pose-dependent corrections into a small per-joint eigenbasis and evaluated them on the GPU, getting dense corrective quality in real time. That basis is just principal component analysis used as compression: across all the corrective shapes you keep the handful of directions that capture most of the variation and throw the rest away. Hold onto that move, compress the correctives, because the neural deformers at the end of this story are largely the same idea with a learned function in place of the eigenbasis.

Automatic weights, cages, and the candy-wrapper problem

Once skinning was a standard tool, the complaints split in two: the weights were tedious to author by hand, and linear blend skinning simply looked wrong.

On the artifact side, Skinning with Dual Quaternions (2007) is the clean win. Plain linear blend skinning suffers from collapsing joints and the notorious candy-wrapper twist, problems that normally need an artist to babysit. Dual quaternion blending fixes both at almost the same runtime cost, building on the corrective thinking of Pose Space Deformation by changing how blended transforms are computed rather than patching the result after the fact.

On the authoring side, a cluster of work asked whether the weights could come for free. Automatic Rigging and Animation of 3D Characters (2007), the Pinocchio system, fits a skeleton inside an arbitrary mesh using a distance field and sphere packing, then computes the bone weights by heat diffusion, giving you a one-click rig for a brand-new character.

In parallel, the cage-based camp chased smooth space deformation, and this is the lineage behind a tool every rigger already knows: the wrap deformer (or cage deformer), where a simple low-resolution cage drives a dense, detailed mesh. Mean Value Coordinates for Closed Triangular Meshes (2005) is, near enough, the math under that idea. It generalized mean value coordinates from flat polygons to closed 3D meshes, so every point trapped inside the cage is written as a smooth weighted blend of the cage’s vertices and rides along as the cage moves. That is exactly what happens when a low-res control cage drags the high-res skin with it.

The catch is that mean value coordinates can go negative, which lets a cage point near one limb tug on the other, so a knee cage starts pulling on the opposite calf. Harmonic Coordinates for Character Articulation (2007), developed at Pixar, fixes that by demanding the weights be harmonic. A function is harmonic when it satisfies Laplace’s equation: its Laplacian is zero, which is the mathematician’s way of saying it is as smooth and featureless as an interpolation can possibly be, like a soap film stretched across a bent wire or heat that has settled into steady state. The useful consequence is the maximum principle: a harmonic function has no peaks or valleys of its own in the interior, so its largest and smallest values sit only on the cage itself. The weights therefore stay non-negative and stay obedient to the shape of the cage, so deformation no longer leaks across a gap from one limb to its neighbour. It built on both Mean Value Coordinates and the subdivision substrate of DeRose, and it is the method behind Blender’s Mesh Deform modifier to this day.

Learning deformation from examples

The next move was to stop authoring deformation and start extracting it from data. Skinning Mesh Animations (2005) took arbitrary deforming mesh sequences, with no skeleton supplied, and recovered proxy bones by clustering, effectively reverse-engineering a skin from captured motion. Deformation Transfer for Triangle Meshes (2004) solved the neighbouring problem of carrying a deformation from one mesh onto another with different connectivity, which became the standard tool behind blendshape and rig transfer.

Bodies got their own statistical treatment. SCAPE (2005) split a human into separate shape and pose models learned from scans, and SMPL (2015) built directly on it to produce a skinned, vertex-based body model that captures pose-dependent shape while staying compatible with normal graphics pipelines. That compatibility is exactly why SMPL became foundational across both vision and animation.

The example-based thread matured with Smooth Skinning Decomposition with Rigid Bones (2012). SSDR draws on both Pose Space Deformation and Skinning Mesh Animations to pull linear blend skinning bones and weights out of a handful of example poses, handling both near-rigid and very soft motion. It is the workhorse behind a lot of rig conversion and crowd pipelines. If you have ever reached for the open-source DemBones library from Electronic Arts, that is SSDR in production form: feed it an arbitrary deforming mesh and it bakes the motion down to bones and weights you can carry into any engine.

Cloth, meanwhile, learned to skip the simulator. Stable Spaces for Real-time Clothing (2010) introduced a surprisingly simple model, trained on simulation, that drapes thousands of detailed garments in real time while keeping the folds.

The neural deformer era

By the late 2010s the question flipped again: rather than extracting bones, could a network just learn the rig’s behaviour outright? Fast and Deep Deformation Approximations (2018) is the paper I point to as the start of this era. Film rigs are procedural systems that compute bulges and wrinkles at a quality real-time rigs cannot match; FDDA trains a neural network to approximate those nonlinear deformations so the character can run interactively. It builds on Pose Space Deformation and SSDR, keeping the pose-driven and example-driven framings and swapping the interpolation for a learned function. Where EigenSkin compressed those correctives into a linear basis, FDDA simply makes the basis nonlinear and learned.

Binding went neural too. NeuroSkinning (2019) extends the SSDR line with a deep graph network that predicts skin weights for production characters from learned geometric features, generalizing across a whole studio’s roster. Learned cloth followed the same pattern: Learning-Based Animation of Clothing for Virtual Try-On (2019) combines the SMPL body with the data-driven cloth idea from Stable Spaces, using a recurrent network to predict drape and wrinkles from body shape and motion in a few milliseconds.

The same learned-representation thinking reached faces, motion, and even hair. Production-Level Facial Performance Capture Using Deep Convolutional Neural Networks (2017) densely tracks an actor’s face from ordinary video at real-time speed and production accuracy. AutoHair (2016) became the first fully automatic single-image hair modeling method, using a hierarchical deep network for segmentation and direction. And motion retargeting went data-driven through a pair: Learning Character-Agnostic Motion for Motion Retargeting in 2D (2019) separated motion content from style for video-to-video retargeting without 3D reconstruction, and Skeleton-Aware Networks for Deep Motion Retargeting (2020) built on it with a skeleton-aware graph network that moves motion across skeletons of different proportions while keeping the style.

It is worth flagging one production-side counterpoint: Patch-based Surface Relaxation (2018) transfers a desired edge-loop layout onto deformed meshes through decal-weighted relaxation, used in practice on Bao and Incredibles 2. A reminder that not every advance here is a learned model.

The shape of the arc

If you take away one picture, take this one. Two separate ideas spent two decades growing in parallel, the skeleton thread and the space-warp thread, and around the year 2000 they meet in the same place.

Skeleton thread 1976 · LBS · JLD '88 Space-warp thread FFD family · Wires Pose Space Deformation '00 Compress EigenSkin · SSDR Learn neural deformers
Two threads, one hinge. Skeletal skinning and space warps both feed Pose Space Deformation, which later gets compressed and then learned.

Read top to bottom, the lineage is remarkably tidy. Space warps grew into a whole family of deformers, joint-driven local deformation taught the surface to follow the skeleton, Pose Space Deformation unified the corrective idea, EigenSkin and the example-based methods made it cheap and scalable, and the neural deformers finally absorbed the whole thing into learned functions. The corrective instinct from 1988 never really left; it just kept changing its clothes.

A note before you close the tab

If all of this feels like a lot, that is the honest reaction, and here is the reassuring part: you do not need to implement any of it. As artists we live inside the DCCs, Maya, Blender, Houdini, and the studio tools stacked on top of them, and the people who wrote these papers have already poured this math into the deformers and solvers we click on every day. Re-deriving linear blend skinning or harmonic coordinates from scratch for a shot would be a fine way to waste a perfectly good deadline.

So why read any of it? Because knowing where a tool came from, and where the field is heading, is the difference between operating software and understanding your craft. It turns a wrap deformer from a mystery button into a cage of mean value coordinates, and it lets you reason about why a rig misbehaves instead of just poking at it until it stops. That is the educated view of the industry worth having.

And the story is not finished. The arc above stops at the present only because I had to stop writing somewhere. The way to keep up is to read the source: skim the SIGGRAPH program when it lands each year, glance at Eurographics, and keep half an eye on arXiv. You do not have to follow every equation. Noticing what problem a paper is trying to solve is usually enough to see where the puck is going.

Every paper here links straight to its source, so do not take my summary for it: open the originals and read them, that is where the real detail lives.

A wide-eyed dog staring at the camera with the caption: remember to reset the controllers, after testing

Share