ue5-character
UE5 Character Design, Modeling, Rigging & Animation
Full pipeline from mesh creation through gameplay-ready animated characters in Unreal Engine 5.
Infrastructure
Character pipeline overview
DCC (Blender/Maya) UE5 Editor
+------------------+ +---------------------------+
| Model + Rig | FBX | Skeletal Mesh |
| Animations | -----> | Skeleton |
| Morph targets | | Physics Asset |
+------------------+ | Animation Blueprint |
| Control Rig |
| IK Rig / IK Retargeter |
+---------------------------+
Skeletal Mesh import
FBX import settings
When importing character FBX files:
| Setting | Value | Notes |
|---|---|---|
| Skeleton | Select existing or create new | Reuse skeleton for animation sharing |
| Import Mesh | Yes | |
| Import Animations | Yes (or separate) | Can split mesh and anim imports |
| Import Morph Targets | Yes | For facial animation |
| Normal Import Method | Import Normals and Tangents | Preserve DCC normals |
| Material Import | Create new or assign existing | |
| Convert Scene Unit | Yes | Ensures correct scale |
Via automation API
# Configure your asset bridge/automation server URL and export paths
# based on your studio's infrastructure.
POST http://<YOUR_BRIDGE_HOST>:<PORT>/ue5/import
{
"source_path": "<YOUR_EXPORT_PATH>/characters/hero.fbx",
"destination_path": "/Game/Characters/Hero",
"asset_name": "SK_Hero"
}
Via Python
import unreal
# Import FBX with specific settings
task = unreal.AssetImportTask()
# Set filename to your source FBX path (local, network share, or mapped drive)
task.set_editor_property("filename", "/path/to/exports/characters/hero.fbx")
task.set_editor_property("destination_path", "/Game/Characters/Hero")
task.set_editor_property("destination_name", "SK_Hero")
task.set_editor_property("replace_existing", True)
task.set_editor_property("automated", True)
task.set_editor_property("save", True)
# FBX-specific options
options = unreal.FbxImportUI()
options.set_editor_property("import_mesh", True)
options.set_editor_property("import_animations", False)
options.set_editor_property("import_as_skeletal", True)
options.set_editor_property("skeleton", None) # Create new, or pass existing
options.skeletal_mesh_import_data.set_editor_property("import_morph_targets", True)
options.skeletal_mesh_import_data.set_editor_property("normal_import_method",
unreal.FBXNormalImportMethod.FBXNIM_IMPORT_NORMALS_AND_TANGENTS)
task.set_editor_property("options", options)
unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks([task])
Skeleton setup
UE5 standard skeleton hierarchy
Epic's Mannequin skeleton (UE5 default):
root
pelvis
spine_01
spine_02
spine_03
spine_04
spine_05
neck_01
neck_02
head
clavicle_l
upperarm_l
lowerarm_l
hand_l
(finger chains)
clavicle_r
(mirror of left)
thigh_l
calf_l
foot_l
ball_l
thigh_r
(mirror of left)
Skeleton compatibility
- Characters sharing animations must use the same Skeleton asset or be retargeted
- Use IK Retargeter for cross-skeleton animation sharing (UE5 preferred)
- Aim for bone naming consistency across characters in the same project
Rigging
Physics Asset
Every Skeletal Mesh needs a Physics Asset for ragdoll, hit detection, and cloth:
- Right-click Skeletal Mesh > Create > Physics Asset
- Add capsule/sphere bodies to major bones (pelvis, spine, limbs, head)
- Configure constraints between bodies (angular limits, stiffness)
- Test with
Simulatein Physics Asset editor
Control Rig (UE5 native rigging)
Control Rig replaces traditional FK/IK setups with a node-based visual rig:
- Forward Solve: Drives bones from controls (animation playback)
- Backward Solve: Used for authoring (interactive posing)
- Construction Event: Initial rig setup (create controls, set hierarchy)
Key nodes:
Set Transform/Set Translation/Set Rotation-- drive bone transformsTwo Bone IK-- standard IK chain (arm, leg)Full Body IK-- whole-body IK (FBIK) for natural multi-chain solvingAim-- orient bone toward targetSpring Interpolate-- springy secondary motion
IK Rig
Define IK goals and chains for retargeting:
import unreal
# Create IK Rig asset via Python
# IK Rigs are typically created in-editor via right-click > Animation > IK Rig
# Then configured manually with:
# - Set Preview Mesh
# - Add IK Goals (ik_foot_l, ik_foot_r, ik_hand_l, ik_hand_r)
# - Define Chains (Spine, LeftArm, RightArm, LeftLeg, RightLeg, Head)
# - Set Root bone
IK Retargeter
Map animations between different skeletons:
- Create IK Rig for source skeleton (e.g., UE5 Mannequin)
- Create IK Rig for target skeleton (your custom character)
- Create IK Retargeter: source IK Rig -> target IK Rig
- Auto-map chains by name, manually adjust mismatches
- Preview and adjust chain mapping / pose offsets
Animation Blueprint (AnimBP)
The AnimBP is the character's animation state machine.
Core components
AnimBP
EventGraph -- Game logic (velocity, direction, state flags)
AnimGraph -- Animation evaluation
StateMachine -- State-based animation flow
Idle -- Standing still
Walk/Run -- Locomotion blend space
Jump -- Jump montage / blend
Fall -- Falling loop
Slots -- Montage playback layers
Layered Blend -- Upper/lower body compositing
IK / Post-Process -- Foot IK, look-at, etc.
State machine setup
[Idle] ---(Speed > 10)---> [Locomotion]
[Locomotion] ---(Speed < 10)---> [Idle]
[Any State] ---(bIsJumping)---> [Jump]
[Jump] ---(bIsFalling)---> [Fall]
[Fall] ---(bIsOnGround)---> [Land]
[Land] ---(Finished)---> [Idle]
Blend Spaces
- 1D Blend Space: Single axis (e.g., speed: idle -> walk -> run)
- 2D Blend Space: Two axes (e.g., speed + direction for omnidirectional locomotion)
- Horizontal axis: Direction (-180 to 180)
- Vertical axis: Speed (0 to max)
- Place animation samples at grid points
Via Python -- create and configure AnimBP
import unreal
# Create Animation Blueprint
factory = unreal.AnimBlueprintFactory()
factory.set_editor_property("target_skeleton",
unreal.load_asset("/Game/Characters/Hero/SK_Hero_Skeleton"))
asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
anim_bp = asset_tools.create_asset(
"ABP_Hero", "/Game/Characters/Hero", None, factory
)
Animation import
Animation-only FBX import
import unreal
task = unreal.AssetImportTask()
# Set filename to your source animation FBX path
task.set_editor_property("filename", "/path/to/exports/animations/hero_run.fbx")
task.set_editor_property("destination_path", "/Game/Characters/Hero/Animations")
task.set_editor_property("destination_name", "AM_Hero_Run")
task.set_editor_property("automated", True)
task.set_editor_property("save", True)
options = unreal.FbxImportUI()
options.set_editor_property("import_mesh", False)
options.set_editor_property("import_animations", True)
options.set_editor_property("skeleton",
unreal.load_asset("/Game/Characters/Hero/SK_Hero_Skeleton"))
options.anim_sequence_import_data.set_editor_property("import_bone_tracks", True)
options.anim_sequence_import_data.set_editor_property("import_custom_attribute", True)
task.set_editor_property("options", options)
unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks([task])
Animation Montages
Montages layer on top of state machine animations (attacks, emotes, interactions):
- Create Montage from Animation Sequence (right-click > Create Montage)
- Define Sections (startup, loop, recovery)
- Add Notify events (hit frame, sound, VFX trigger)
- Play via
UAnimInstance::Montage_Play()in C++ or AnimBP
Notify events
| Notify type | Purpose |
|---|---|
| AnimNotify | Fire-and-forget event (sound, particle) |
| AnimNotifyState | Duration-based (trail effect, weapon collision window) |
| Custom AnimNotify class | Complex logic (damage application, state changes) |
Morph targets / Blend Shapes
Used for facial animation and corrective shapes:
- Import morph targets with the FBX (enable "Import Morph Targets")
- Drive via Curve assets in animations
- Control at runtime:
SkeletalMeshComponent->SetMorphTarget("Smile", 1.0) - Use MetaHuman or Live Link Face for facial capture workflows
Cloth simulation
- Open Skeletal Mesh in editor
- Section Selection > select cloth geometry
- Create Cloth Asset from Section
- Paint cloth weights (fixed vs. simulated vertices)
- Configure: wind, gravity, stiffness, damping, collision
Character Blueprint setup
A gameplay-ready character needs:
BP_Character (inherits ACharacter)
CapsuleComponent (root, collision)
SkeletalMeshComponent (visual mesh + AnimBP)
SpringArmComponent (camera boom)
CameraComponent (follow camera)
CharacterMovementComponent (built-in locomotion)
Key CharacterMovement settings:
MaxWalkSpeed: 600 (default)JumpZVelocity: 420 (default)AirControl: 0.2 (default, 0-1)GravityScale: 1.0bOrientRotationToMovement: true (character faces movement direction)
Asset conventions
/Game/Characters/{CharacterName}/
SK_{Name}.uasset -- Skeletal Mesh
SK_{Name}_Skeleton.uasset -- Skeleton
SK_{Name}_PhysicsAsset.uasset -- Physics Asset
ABP_{Name}.uasset -- Animation Blueprint
CR_{Name}.uasset -- Control Rig
IK_{Name}.uasset -- IK Rig
Animations/
AM_{Name}_{Action}.uasset -- Animation Montages
AS_{Name}_{Action}.uasset -- Animation Sequences
BS_{Name}_{Type}.uasset -- Blend Spaces
Materials/
MI_{Name}_Body.uasset -- Material Instances
MI_{Name}_Hair.uasset
Textures/
T_{Name}_BaseColor.uasset
T_{Name}_Normal.uasset
T_{Name}_ORM.uasset -- Occlusion/Roughness/Metallic
More from edhahn/agent-skills
software-architecture
>
8ue5-gamedev
>
6ue5-level-design
>
5game-designer
>
5ue5-cinematics
>
5multi-agent-chat
Coordination protocol for AI agents sharing a group chat channel (Discord, Slack, Teams, or any multi-user channel). Prevents infinite agent-to-agent loops, reduces noise, eliminates redundant responses, and establishes clear routing rules for who responds to what. Use this skill when you are an AI agent in a channel with other AI agents and human participants, when you see duplicate responses or echo loops between agents, when a human asks agents to coordinate better, when you need rules for when to speak vs. stay silent in a multi-agent channel, or when you want to reduce token waste from unnecessary agent chatter. Also applies to any shared workspace where multiple agents receive the same messages.
5