Quick answer: All source meshes must reference the same USkeleton asset. Verify in each mesh’s Inspector: Skeleton row. If they differ, retarget the meshes to a common skeleton first.

A modular character system merges head, torso, arms, and legs into one mesh at runtime. The merge succeeds without errors but the resulting character is missing both arms. The torso renders fine; the head sits correctly; arms simply aren’t there.

Shared Skeleton Requirement

USkeletalMeshMergeUtility merges by mapping bones across input meshes. The mapping works only if all meshes reference the same USkeleton:

Missing limbs usually means the arms mesh was authored against a slightly different skeleton.

The Fix

  1. Open each source SkeletalMesh in the editor.
  2. Note the Skeleton asset reference at the top of Asset Details.
  3. If they differ, pick a canonical skeleton (usually the most-bones version).
  4. For each non-canonical mesh: Skeleton → Retarget Source Mesh, choose the canonical skeleton.
  5. Re-save the meshes.
  6. Re-run the merge.

Code Side

FSkeletalMeshMergeUtility::FSkeletalMeshMergeParams Params;
Params.MeshesToMerge = SourceMeshes;
Params.Skeleton = CommonSkeleton;
Params.SectionMappings = {};   // auto if empty

USkeletalMesh* Merged = FSkeletalMeshMergeUtility::MergeMeshes(Params);
if (!Merged) {
    UE_LOG(LogTemp, Error, TEXT("Merge returned nullptr"));
}

Always check the return value — nullptr indicates the merge couldn’t complete. Check Output Log for warnings about bone mismatches.

Section Mappings for Material Combining

Default empty SectionMappings merges all material sections separately. For visually identical results to authored, that’s fine. If you want to combine sections sharing the same material:

Params.SectionMappings.Add(FSkelMeshSectionMapping{SectionA, SectionB});

Reduces draw calls on the merged mesh.

Verifying

Spawn the merged character and play an idle animation. All limbs should animate. Open the merged USkeletalMesh in the editor to inspect; bone count should equal the canonical skeleton’s bone count.

“Mesh merge requires one skeleton. Retarget to a canonical skeleton; the merge becomes trivial.”

Document the canonical skeleton in your team’s art pipeline — saves new contributors discovering this at integration time.