Skip to content

Characters and visual overrides

Every GASPALS pawn is animated on one skeleton: the UEFN mannequin. The motion matching databases, overlay poses, traversal montages and Control Rigs are all built for it. To show a different character, GASPALS does not re-author any of that: it hides the mannequin and puts a visual override on top, a separate actor whose meshes copy the mannequin's pose through an IK Retargeter, every frame.

The template ships three visual overrides:

Character Blueprint Skeleton Retargeter
Manny BP_RetargetedCharacter_Manny SK_Mannequin (UE5) RTG_UEFN_to_UE5_Mannequin
Quinn BP_RetargetedCharacter_Quinn SK_Mannequin (UE5) RTG_UEFN_to_UE5_Mannequin
Kellan (MetaHuman) BP_RetargetedCharacter_Kellan metahuman_base_skel RTG_UEFN_to_Metahuman_nrw

All are in /GASPALS/Blueprints/RetargetedCharacters and derive from BP_RetargetedCharacter_Base.

In the demo, press M to cycle: UEFN mannequin, Kellan, Manny, Quinn, and back.

How it fits together

flowchart LR
    subgraph Pawn[Pawn: SandboxCharacter_Mover or _CMC]
        UEFN[Hidden UEFN mesh<br>character Anim Blueprint<br>motion matching, overlays, IK]
        FPLogic[Hidden UEFN first-person<br>logic mesh]
        CA[Child Actor component<br>VisualOverride]
        Mgr[AC_VisualOverrideManager]
    end
    subgraph Visual[Visual override actor]
        Body[SkeletalMesh<br>ABP_Retarget_*]
        Cloth[Clothing, face, hair]
        FPR[AC_FirstPersonRendering<br>first-person meshes]
    end
    Mgr -->|spawns class| CA --> Visual
    UEFN -->|RetargetPoseFromMesh| Body
    Body -->|leader pose or<br>post-process copy| Cloth
    FPLogic -->|first-person overlay<br>retarget| FPR
  1. The pawn keeps its UEFN mannequin mesh. It runs the full character Anim Blueprint and all gameplay animation. When a visual override is active, it is hidden but keeps ticking.
  2. AC_VisualOverrideManager (on the pawn) holds the override class in its replicated VisualOverride variable. When it changes, ApplyVisualOverride sets the class on the pawn's VisualOverride Child Actor component, hides every skeletal mesh of the pawn, and re-runs InitializeModularSystems so every system picks up the new meshes.
  3. The override actor has a body mesh (SkeletalMesh) running a small retarget Anim Blueprint (ABP_Retarget_UE5, ABP_Retarget_Kellan): a Retarget Pose From Mesh node reading the parent skeletal mesh (the pawn's hidden mannequin), then the hand IK Control Rig. Clothing follows the body by leader pose, or by its own post-process Anim Blueprint for meshes on another skeleton (the MetaHuman hoodie and shoes).
  4. First person builds its meshes from the override's own AC_FirstPersonRendering, and retargets the first-person overlay pose from the pawn's hidden first-person logic mesh with First Person Retargeter.

The override body ticks after the pawn mesh (the base class adds a tick prerequisite), so the retargeted pose is never a frame behind.

Which meshes the systems use

The pawn function GetVisualMeshes returns the visible third-person mesh and the first-person lead mesh: the override's meshes when one is active, the pawn's own otherwise. The systems are initialized like this:

System Works on
Overlay (anim layers) The pawn's UEFN mesh. The override gets the overlay through retargeting.
Equipment Links the overlay layers on the pawn's UEFN meshes; attaches the items to the visual meshes (sockets overlay_*) and computes hand IK in the visual mesh's hand bones.
Camera Attaches to the visual meshes: root in third person, the VB Camera virtual bone in first person.
Cover, traversal, ragdoll The pawn (capsule, movement, UEFN mesh). The override shows the result.
First person The override's own AC_FirstPersonRendering.

Ragdoll simulates on the pawn's UEFN mesh with its physics asset; the override needs no physics asset for it.

Choosing the character

The list of overrides is on the game mode, not on the pawn: GM_Sandbox > Visual Overrides Soft (soft class references), in this order by default: Kellan, Manny, Quinn.

The data-driven console variable DDCvar.VisualOverride selects the entry for every pawn in the world:

Value Character
-1 (project default) No override: the UEFN mannequin.
0, 1, 2... The entry at that index in Visual Overrides Soft.

M (IA_NextVisualOverride) asks the server (PC_Sandbox.NextVisualOverride, then GM_Sandbox.CycleVisualOverride) to add one to the variable, wrapping back to -1. You can also type DDCvar.VisualOverride 1 in the console. The value lasts for the editor session, so it carries over between Play sessions.

To start with a given character, set the variable's default in Project Settings > Engine > Data Driven CVars.

Requirements of the manager

  • The manager reads the list from the game mode, so it only works when the game mode is GM_Sandbox or a child of it.
  • It reads DDCvar.VisualOverride. If the project does not declare that variable, the read returns 0 and the first entry (Kellan) is applied. Copy the project settings from Installation.
  • Setting Visual Override on the manager component in a pawn's Details panel does nothing by itself: the override is applied when the value replicates, not from a default.

Requirements for a character

Requirement Why
An IK Retargeter from IK_UEFN_Mannequin to the character's IK Rig, with a Curve Remap op Third-person pose and first-person overlays. The curve op carries the hand IK curves.
A VB Camera virtual bone from root to head First-person camera.
root, head, hand_l, hand_r bones Camera attachment, first-person head, equipment hand IK.
UE-standard spine, clavicle and neck names (spine_01..spine_05, clavicle_l/r, neck_01) The first-person overlay Control Rigs. Other skeletons can use the TrueFirstPerson mode.
The seven overlay_* sockets on the Skeleton Where equipment is attached: overlay_rifle, overlay_pistol, overlay_bow, overlay_box, overlay_barrel, overlay_binoculars, overlay_torch.

The UE5 mannequin and MetaHuman skeletons in the plugin already have the virtual bone and the sockets. The step-by-step guide is Add a retargeted character.

Cost

One IK retarget costs about 0.16 ms per character (measured in the editor). First person adds a second retarget for the overlay and keeps the hidden first-person logic mesh ticking. The visible body mesh only animates when rendered.

Characters on the UEFN skeleton

A character that is itself on the UEFN skeleton (another outfit for the mannequin) needs no retargeting: ABP_CopyPose_UEFN copies the pose with Copy Pose From Mesh instead. Its Copy Curves option is on, so the hand IK curves reach the character. Keep it on if you make your own copy-pose Anim Blueprint; with it off, the hand IK curves read 0.