A motion-capture stage delivers something surprisingly useless: for every frame, a flickering cloud of anonymous 3-D dots. The cameras saw bright reflective markers and triangulated where each dot floated in space — but they don't know that this dot is a left knee and that one is the right shoulder, some dots vanished behind an arm for half a second, and a stray reflection off a watch spawned a ghost point that never should have existed. Raw mocap is not an animation. It is evidence.
This page walks the solving pipeline — the chain of steps that turns that noisy dot
cloud into a clean, retargetable clip of joint-angle curves that a rigged character
can actually play back. Before the dots ever arrive you need
Solving is a fixed sequence of stages. Each one hands cleaner data to the next, and skipping any of them shows up as garbage later — a foot that slides, an elbow that pops, a spine that shivers.
Everything downstream leans on calibration. The actor stands in a known T-pose — arms out, legs straight — for a beat. In that pose the software knows roughly where each named bone should be, so it can measure how far each marker sits from the bone it's taped to. Those marker offsets — a marker is glued to skin a couple of centimetres off the bone — become fixed constants used by the solve on every later frame. A range-of-motion take (the actor cycling every joint through its extremes) then nails down limb lengths and joint limits. Get calibration wrong and the whole clip inherits the error, silently.
The cameras output unlabelled trajectories — dot #47 in one frame may be dot #12 in the next. The
labeller assigns each dot to a named marker slot (LSHO, RANK,
C7, …) using the reference marker layout and continuity between frames: a marker can't
teleport, so the dot nearest to where LSHO was last frame is probably LSHO
now. Auto-labelling handles the easy majority; the artist steps in when markers cross, occlude, or
swap — a common failure is two nearby markers trading identities as the actor's
wrists cross, which the solve would read as a limb suddenly snapping to the wrong side.
Cleaning is four distinct chores, each fixing a different sin of the raw capture:
The chart below shows the most common of these, a gap-fill: one marker's height
With labelled, clean markers in hand, the solve answers one question per frame: what pose of the actor's skeleton best explains where all the markers are right now? The skeleton is a tree of bones with joint transforms (mostly rotations, one root translation). From calibration we know each marker's offset from its parent bone, so given a candidate pose we can predict where every marker ought to be. The solve searches over the joint transforms to make those predictions match the measured markers as closely as possible — an optimisation very much like inverse kinematics, but driven by dozens of marker targets at once.
Because there are more markers than joint degrees of freedom, the fit is over-determined — no pose matches every marker perfectly, so we settle for the least-squares best. That redundancy is a feature: it averages out residual noise and survives a marker or two dropping out.
The pelvis is usually tracked by a small rigid cluster — say three markers on the lower back that
don't move relative to each other. Call their calibrated reference positions (in the
pelvis's own frame, learned from the T-pose)
This is the classic rigid-alignment (Procrustes / Kabsch) problem, and it has a clean recipe:
That
Capture often runs at an odd or high rate — 120, 240 fps — while the shot needs 24 or 30. The solved motion is resampled to the target frame rate by interpolating the joint curves (not the raw markers). Finally the clip is exported as joint-angle curves: one rotation channel per bone over time, a compact representation any rigged character can consume and retarget onto a differently-proportioned skeleton. The dot cloud is gone; what remains is clean, editable animation.
Because markers ride on skin, not bone. Skin slides, jiggles and bulges as muscles flex, so a marker's world path is the bone's motion plus a wobble of soft-tissue artefact. Bolting a joint directly to a marker would import all that wobble. The whole point of the skeleton solve is to recover the rigid bone motion underneath — by fitting many markers per limb, the soft-tissue slop averages out and you get the clean joint rotation the skin was only hinting at. It also lets you retarget: a skeleton of joint angles maps onto any character, whereas raw marker positions are locked to one actor's exact proportions.
The most notorious mocap artefact is foot skate (or "foot sliding"). When a foot is planted on the ground, it should be perfectly still — but tiny errors in the solve, in marker noise, or in retargeting onto a character whose legs are a different length nudge the solved foot a few millimetres every frame. Played back, those nudges accumulate into a visible glide across the floor: the character looks like it's skating on ice, and once you notice it you can't unsee it.
The fix is contact detection plus constraint. Detect the frames where the foot is genuinely planted (low foot height, near-zero foot velocity), then IK-lock that foot to a fixed ground position for the whole plant, letting inverse kinematics bend the knee and hip to keep the rest of the leg attached. The planted foot stops moving, the skate vanishes, and the weight of the step reads correctly. Never ship a walk cycle without checking the feet.