Skip to content

27 — Mutable · character creation · modular mesh (Full game)

Scope: Full game only. Demo keeps placeholder meshes and fake-modular dials (22-demo.md, 11-weapons-firehand-bus.md). Do not pull Mutable into the Demo Ladder slice.

Reference project: E:\Dev\projects\mutable (Epic Mutable Sample — MetaHuman + CO_Character + CO_Weapon).
Epic tutorials: https://dev.epicgames.com/community/learning/tutorials/yjw9/unreal-engine-mutable-tutorials

Yes — Terra Firma’s attachment model is possible with Mutable, if every attachable part shares a compatible skeleton whose attachment bones/sockets already exist on the host (body or gun spine). Mutable is a mesh/texture assembly graph, not a free “socket parent any static mesh” system.

Surface Mutable role TF rule
Create Character face / groom / colors / tattoos Primary — CustomizableObject + MetaHuman assets Premade faces + limited feature dials; no body-size morphs
Underarmor (full-body suit) Primary — base body garment / mesh section Always on; fixed scale per Sex
Flare cloth Skinned to flare bones on the body skeleton (Mutable merge or child section) Only cloth besides underarmor
Armor plates Bone/socket attach via a_* bones on Dea / MetaHuman body; plate meshes have no deformation bones Light / Medium / Heavy change plates only (FS-FX-004)
Gun modules Shared Class Spine skeleton (Epic weapon sample pattern) Parts authored in Spine bone space; Refit swaps modules

FE17 / Command Deck Appearance. Runtime write: FS-SES-006 + FS-APP-*.

  • Choose Sex: Male | Female (two body bases; no other body types).
  • Pick a premade MetaHuman face from the Year-1 catalog we author (not live MetaHuman Creator blending in-game).
  • Pick groom set(s): hair / brows / facial hair as authored for that Sex.
  • Nudge a small set of facial feature dials that Mutable can drive (material params, limited morphs / reshape we bake into the graph — not MH Creator DNA sculpt).
  • Set hair color and skin color.
  • Apply tattoos on face and body (Mutable projectors / decals onto underarmor + head textures).
  • Change body size, limb length, mass, or per-body-part scale.
  • Resize underarmor joints or visible flesh when equipping Light / Medium / Heavy plates.
  • Pick Race (Year 1 = Human, read-only).
  • Pick Subclass, Difficulty, or Corp on create.

AppearanceId on the character record is a structured appearance blob (face preset, groom ids, feature dials, hair/skin colors, tattoo slots) — not a single opaque int forever. Catalog row counts: TBD-057.

Epic’s clothing sample leans on cloth morph, clip, remove-unseen, body shape. We do not use that for player armor.

TF player mesh stack (Full game):

  1. MetaHuman head (separate component recommended — Mutable docs: do not merge the huge face skeleton into body).
  2. Body + underarmor — fixed Sex base; Mutable colors / tattoos / underarmor materials.
  3. Flare — skinned to flare bones only.
  4. Armor plates — rigid pieces attached at a_socket_*. Plate meshes a_plate_* have no skeletal deformation chain of their own; they ride the host bone.
  5. Body props / CF cosmetics — silhouette add-ons; never change plate size or underarmor joint scale (FS-ECO-012 / FS-FX-004).

Contract: FS-MESH-001. Full cheat sheet + stub alias table: inventory/mesh-naming.md.

{domain}_{role}_{slot}[_{host}][_{corp}_{auth}_{id}]
Token Meaning
domain a armor · w weapon
role socket (bone) · spine / receiver / module / plate / under / flare (mesh)
corp Meshes only — c1…c5
auth Meshes only — kit (Refit V1–V5) · hand (Legendary / Unique / Apex)

Sockets are corp-agnostic (a_socket_chest, w_socket_barrel). Meshes carry family + authorship (a_plate_chest_heavy_c3_kit_v1, w_module_barrel_kinetic_c1_kit_v3, w_module_barrel_rifle_c3_hand_blacksun).

  • Armor corp = mesh language (different silhouettes, same sockets).
  • Gun modular corp = finish family on shared kit geometry (FS-GUN-004).
  • Legacy shorthand a_<slot> / a_<slot>_armor → a_socket_<slot> / a_plate_<slot>_….

Mutable merges participating skeletal meshes that share a compatible skeleton. Attachment bones must already exist on the host (or be merged from a small compatible skeleton). Parts are authored in that bone space.

Does not work (known Mutable limit): parenting arbitrary different-root skeletal meshes via sockets at bake/runtime and expecting correct offsets — community weapon workflows hit this; everything collapses to root unless bones are shared / pre-offset. Fix for TF: put a_socket_* / w_socket_* on the host Spine / body skeleton; author each module with a root (or sole) bone matching that name.

Optional escape hatch: rigid plates as separate USkeletalMeshComponent / static mesh components AttachToComponent on sockets — valid UE path, skips Mutable for plates. Prefer one Mutable-generated body mesh + attach plates only if draw-call / LOD budget says so; otherwise socket attach is fine for rigid armor.

Align with existing taxonomy (FS-GUN-004):

  • Class = Spine — one chassis skeleton / mesh plate; modules attach to Spine bones.
  • Receiver — art subclass body that seats on Spine before Barrel.
  • Frame — data only (no chassis mesh).
  • Accessory Refit — five Install sockets; meshes swap on Spine bones via Mutable CustomizableObject (pattern: sample CO_Weapon + SKEL_Weapon) or SKG attach once Firehand wraps SKG.

Demo remains fake-modular (stats only, mesh unchanged) until Full-game mesh Refit ships.

MetaHuman + Mutable setup notes (from Epic)

Section titled “MetaHuman + Mutable setup notes (from Epic)”
  • Enable RigLogic Extensions for Mutable; wire DNA Constant for face animation.
  • Prefer separate mesh components: Face vs Body+gear (avoid merging MetaHuman face skeleton into body).
  • Grooms: rebind if Mutable-generated face LOD/section layout differs from the original binding mesh.
  • CustomizableObjectNumBoneInfluences=Twelve (+ 16-bit bone weights) for MetaHuman skinning.
  • Mutable cannot recreate MetaHuman Creator face blending — premade faces in, switch + materials/projectors/limited reshape only.
Concern Owner
Create Character + Appearance UI TFAFrontend
Appearance blob persist TFACore character record / save
Mutable CustomizableObject runtime for pawn TFACore or thin TFAAppearance GFP (Full game) — not Demo
Armor plate equip visuals TFACombat loadout → appearance apply
Gun module mesh Refit TFAWeapons (+ optional TFAModular)
SKG attach presentation ADDON wrap after Firehand (FS-GUN-005)
  • Product locks written: this chapter · FS-APP-* · FS-MESH-001 · FE Create Appearance · GDD create bullets
  • Attach naming cheat sheet: inventory/mesh-naming.md
  • Epic Mutable sample on disk at E:\Dev\projects\mutable
  • Dea skeleton + a_* / a_*_armor naming in art pipeline
  • Gun Class Spine taxonomy in FS
  • FE17 Create Character chrome (identity + Order)
  • Author Year-1 face / groom / tattoo catalogs (TBD-057)
  • Build TF CustomizableObjects (character + weapon) from Mutable sample patterns — Full game content project
  • Wire Appearance blob → Mutable parameters on pawn spawn
  • Decide plate path: Mutable merge onto a_* vs component socket attach (both legal; pick per LOD budget)
  • Keep Demo on placeholders; no Mutable dependency in Demo experience
  • FS: FS-SES-006, FS-APP-001–FS-APP-004, FS-MESH-001, FS-FX-004, FS-GUN-004 / 006, FS-ECO-012
  • Naming cheat sheet: inventory/mesh-naming.md
  • FE: Create Character Appearance row · W_TFA_Appearance
  • GDD: Character select and create (Appearance bullets)
  • Sample: Content/Character/CO_Character, Content/Weapon/CO_Weapon, MetaHuman showcase