Appearance
How to create a first-person item config
Use this guide to add one MotionNativeFirstPersonItemConfig for local first-person item visuals. The config controls visuals. Your project controls gameplay and networking.
Create the config asset
- Create a new
MotionNativeFirstPersonItemConfigasset. - Choose one presentation mode.
- Set
FirstPersonStaticMeshandWorldStaticMesh. - Or, set
FirstPersonSkeletalMeshandWorldSkeletalMesh. - Or, set
FirstPersonActorClassandWorldActorClass.
- Set
- Keep
OverlayModeset toAutomaticfor the built-in Motion held pose overlay. - Set
AutomaticHeldPoseSettings.FallbackHeldPoseAnimationto the basic first-person held pose animation. - Add optional
AutomaticHeldPoseSettings.HeldPoseAnimationRulesfor combined states such as crouch-walk. - Use
HeldPoseAnimationsfor simple single-tag variants. - Adjust
AutomaticHeldPoseSettings.BlendTimeif the default does not match the item. - Keep the default
UpperBodySolveSettings, or adjust the branch, pitch weights, and hand-IK bones. - Set
FirstPersonRelativeTransformfor item-specific placement in the animated hand. - Set
WorldRelativeTransformfor the full-body view. - Set
LinkedLayerClassif the item uses a broader item or stance pose set. - Add optional
PresentationActionsfor finite visual actions. - Activate the config through gameplay, Blueprint, or your equipment system.
For a basic first-person held pose, keep LinkedLayerClass unset. The host overlay node reads AutomaticHeldPoseSettings from the active config. Use LinkedLayerClass only for a broader pose set.
For an item that replaces the built-in Motion overlay, use this setup:
- Set
OverlayModetoCustomGraph. - Assign an Animation Blueprint to
CustomOverlaySettings.OverlayLayerClass. - Add a named Animation Layer graph to that Blueprint.
- Set its name to the exact
CustomOverlaySettings.OverlayLayerGraphNamevalue. - Add exactly one input pose named
InPose. - Add the custom item pose logic after
InPose. - Return the final overlay pose.
InPose is the host pose before the automatic Motion overlay. The custom layer must include all necessary pose, pitch, IK, recoil, and action logic. Keep the Motion overlay node in the host graph because it calls the custom graph. Do not add a Motion overlay node to the custom graph. Nested instances pass through their input to prevent recursion.
See How to add a first-person item end to end for the advanced custom graph contract in context.
Add optional presentation actions
Use PresentationActions for a finite visual item action. C++ changes and a Motion inventory framework are not necessary.
For each action:
- Set
ActionTagto the gameplay tag your Blueprint will request. - Set
ActionAnimationto a finite sequence on the first-person body skeleton. - Set
BlendInTime,BlendOutTime, andPlayRate.
Blueprint calls RequestHeldItemPresentationAction on MotionHeldItemComponent. The result describes only the immediate presentation request. Use OnPresentationActionLifecycle for later lifecycle events.
Motion does not decide if gameplay permits the action. Evaluate ammo, cooldowns, inventory, abilities, networking, and damage in project code.
Build the held pose overlay
The character Animation Blueprint must inherit from MotionAnimInstance. Add one Motion First Person Item Upper Body Overlay node around the final host pose:
- Generate the host locomotion and body pose as usual.
- Route that pose into
BasePoseon the overlay node. - Route the overlay output to the final pose or to project item action layers.
- Do not add host variables or manual pins for the config values.
If no item config is active, the node passes through the pose without a warning. It also passes through an automatic config with no effective fallback animation. Call ValidateNativeFirstPersonItemOverlay or the diagnostic resolver for specific setup errors. The graph-safe resolver does not emit these errors. Do not add external Blueprint state for the no-item state.
Missing upper-body solve settings do not cause an error. The default config struct supplies a mannequin-compatible branch, pitch distribution, and hand-IK bones. Invalid values, bone names, or branch settings fail overlay validation.
Prepare the character meshes
A character with native first-person item visuals uses one full-body mesh and two fixed first-person body meshes:
Mesh: full-body mesh for the world view.FirstPersonUpperBody: first-person upper body.FirstPersonLowerBody: first-person lower body.
The three body meshes must share a skeleton. The body meshes must have weapon_r for item attachment. The native Stable camera / Motion 1.6 camera uses MotionCamera on the full-body skeleton as its evaluated reference. Socket mode must have the valid pivot in CameraPivotSocketName. During BeginPlay, UMotionCameraComponent applies native first-person primitive roles to the local character.
Attach item meshes
Motion uses the weapon_r socket for the two item representations:
- the first-person item attaches to
FirstPersonUpperBody - the world item attaches to
Mesh
Keep the socket on the two body meshes. Use the config transforms for per-item offsets.
Use item transforms for authored grip and item-specific screen placement. Shared camera profile fields control the Stable camera / Motion 1.6 camera. Item configs do not override these fields. An equipped item does not change the camera position.
Tune the item in PIE
- Start PIE with the item config active on the locally controlled character.
- Select the generated
MotionNativeFirstPersonItemTuningcomponent on the character. - Adjust the preview transforms, linked layer, or render settings on the component.
- Use
ApplyPreviewToPresentationto apply and save all preview values. - Use
SaveToConfigto save preview values and refresh the active presentation.
Use PullCurrentPresentationToPreview to copy direct item component changes to the preview before you save.
Tune render values
Use RenderTuning only for a different native first-person camera presentation:
- Enable the FOV override, scale override, or the two overrides.
- Adjust
FirstPersonFieldOfVieworFirstPersonScale.
UE 5.6 exposes native first-person FOV and scale on UCameraComponent, so Motion applies native overrides to the whole first-person set.
Validate the config
Before a PIE test, validate the presentation pair and overlay setup separately.
The config must have exactly one presentation pair:
- static first-person mesh plus static world mesh
- or skeletal first-person mesh plus skeletal world mesh
- or first-person actor class plus world actor class
Partial pairs and mixed static mesh, skeletal mesh, or actor presentation types are rejected at runtime and clear the active presentation.
Automatic overlay mode must have AutomaticHeldPoseSettings.FallbackHeldPoseAnimation. Motion resolves optional gameplay-tag entries from the active ASC tag container:
HeldPoseAnimationRulesmatch first. All necessary tags must be active, and no blocked tags can be active.- Highest rule priority wins, then highest specificity, then array order.
HeldPoseAnimationsentries match one active tag after rules.- If no rule or single-tag entry matches, the fallback animation plays.
- Tags can be Motion movement tags or tags from your project.
Adjust the upper-body solve fields for the project skeleton. By default, BoneWeights contains the mannequin-compatible Motion pitch distribution. Edit these entries if the skeleton uses different names or pitch distribution. Keep HandIKBones empty to use the mannequin-compatible Motion defaults.
Presentation action validation is separate from automatic held pose validation. Invalid action data makes action requests fail closed. It does not disable the basic held pose.
For API lookup, see MotionHeldItemComponent and First-person item API reference.