Quick answer: A MetaHuman rig “breaks” after retarget because retargeting applies only to the body skeleton, but the actor pipes animation through a shared Anim BP. The face loses its curves and the groom loses its binding. Keep the Body and Face on separate Anim BPs, restore Master Pose Component and LOD sync on the Face, and regenerate groom bindings against the new skeleton.
You import a MetaHuman, set up a third-person character, then retarget a mocap or Marketplace animation onto the body. The body moves correctly but the face goes slack: eyelids half-closed, mouth open at rest, brows collapsed. Worst case the hair untethers from the head and drifts behind the character. The rig is not “broken” — it is disconnected. Here is how to reconnect every part.
The Symptom
Before retargeting, the MetaHuman animates its default idle with full facial life: micro-expressions, idle blinks, subtle breathing. After applying a retargeted body animation (for example a Mixamo clip or a Marketplace run cycle), the face freezes in a partly-open neutral pose, or worse, collapses into a distorted mask. Cheeks push through teeth. Eyes look dead.
Hair, brows, and beard may detach from the skull or snap to world origin. In editor’s Preview Animation mode, the body plays the new motion but the face is not updated each tick.
What Causes This
1. Single Anim BP driving both body and face. Many tutorials combine them into one graph. When you swap the skeleton, face curves are not retargeted — they simply vanish from the output pose.
2. Master Pose Component mis-wired. The MetaHuman face mesh follows the body via a Master Pose Component link. After retargeting, if the Body component is replaced or re-created, the link is null and the face renders in its skeletal bind pose.
3. LOD sync disabled. MetaHuman faces use rich LOD 0 skeletons with >700 joints driving ARKit-like expressions. Higher LODs strip most expression joints. If LOD sync is off and the body is at LOD 1, the face LOD may not match the animation that references the LOD 0 skeleton.
4. Groom binding references old skeleton. A Groom Binding Asset stores a mapping from groom strand roots to specific skeletal mesh vertices or sockets. Retargeting sometimes replaces the skeletal mesh with a variant that shares joints but has different GUIDs; the binding becomes invalid.
5. Control Rig curve map stale. The face Control Rig reads named curves like CTRL_expressions_mouthOpen from the pose. If curves are dropped (by retarget or by pose asset mismatch), the Control Rig drives joints to the default zero state.
The Fix
Step 1: Split Body and Face Anim Blueprints. This is the single most important change. MetaHuman ships with ABP_Face and ABP_Body for a reason. Keep them separate.
// Character Blueprint component hierarchy (correct):
// MyMetaHuman (BP_MyMetaHuman)
// ├── Body (USkeletalMeshComponent)
// │ AnimClass = ABP_Body_Retargeted
// ├── Face (USkeletalMeshComponent)
// │ AnimClass = ABP_Face ← keep stock
// │ MasterPoseComponent = Body
// ├── Torso, Legs, Feet (clothing)
// │ MasterPoseComponent = Body
// └── Hair (UGroomComponent)
// BindingAsset = Binding_Hair_FaceMesh
// AttachParent = Face
Step 2: Restore Master Pose Component and LOD sync.
// In the character BP construction script or BeginPlay:
void AMyMetaHuman::BeginPlay() {
Super::BeginPlay();
// Link every clothing / face component to the body
if (FaceMesh && BodyMesh) {
FaceMesh->SetMasterPoseComponent(BodyMesh);
FaceMesh->bSyncAttachParentLOD = true; // critical
FaceMesh->bComponentUseFixedSkelBounds = false;
}
for (USkeletalMeshComponent* Clothing : ClothingMeshes) {
Clothing->SetMasterPoseComponent(BodyMesh);
Clothing->bSyncAttachParentLOD = true;
}
}
Step 3: Regenerate groom bindings. Right-click the groom asset → Create Binding → target the new face skeletal mesh. Assign the new binding on the UGroomComponent in the character.
// Set binding on the groom component
if (HairGroom && NewHairBinding) {
HairGroom->SetBindingAsset(NewHairBinding);
HairGroom->SetAttachSocketName("head");
HairGroom->AttachToComponent(
FaceMesh,
FAttachmentTransformRules::SnapToTargetIncludingScale,
"head");
}
Step 4: Validate Control Rig curve mapping. Open Face_ControlBoard_CtrlRig, switch to the Curve Mapping tab, and confirm every curve the rig expects exists in the face skeleton. Missing curves appear in red.
// In BP event graph or C++, drive face curves explicitly:
if (UAnimInstance* FaceInst = FaceMesh->GetAnimInstance()) {
FaceInst->AddCurveValue(FName("CTRL_expressions_eyeBlinkLeft"), 0.8f);
FaceInst->AddCurveValue(FName("CTRL_expressions_eyeBlinkRight"), 0.8f);
FaceInst->AddCurveValue(FName("CTRL_expressions_mouthSmile"), 0.4f);
}
Step 5: Retarget body animations against the Body IK Rig, not the full MetaHuman. Use the IK_Mannequin to IK_Metahuman retargeter that ships with the MetaHuman plugin. Never retarget via the face skeleton even if both share a root.
Step 6: Force LOD 0 during cinematics. When the camera is close, ensure both components are locked to LOD 0 so the face has its full expression joint set.
Why This Works
MetaHumans are a composition of separate skeletal meshes (body, face, torso, legs, feet) and a groom asset, all bound to a shared body skeleton via Master Pose Component. The face’s own skeleton has hundreds of joints that only the face’s Anim BP understands. Retargeting is a body-only operation because the body skeletons between source and target share proportions and hierarchy, while faces do not.
Keeping the face pipeline untouched (its own Anim BP, its own pose assets, its own Control Rig) insulates it from retarget changes. LOD sync ensures the face never drops to a stripped skeleton mid-cut.
Grooms are the most fragile link because bindings store direct references to skeletal mesh vertices. Even a “compatible” retarget can replace the mesh GUID and invalidate the binding. Regenerating is cheap and is the one sure fix.
"A MetaHuman is four characters stitched together. Never retarget the whole stack — retarget the body only and let the face keep its pipeline."
Related Issues
For body retargeting quirks, see Fix: Unreal IK Retargeter Feet Sliding. If your cloth simulation pops after swapping animations, check Fix: Unreal Chaos Cloth Spiking on Animation Swap.
Body and Face are separate rigs. Retarget one, leave the other alone.