Skip to content

HumanoidAvatarAsset

A description of how a rig's bones map to the standard humanoid bone slots. One avatar per rig; pair two avatars (source + target) to retarget animations between them.

The full authoring workflow — auto-mapping, validation, the Retarget… modal — lives in the asset inspector. See Skeletal Animation Pipeline for the end-to-end guide.

Inheritance: * Asset


Humanoid slot enum

Twenty-one slots covering a standard humanoid skeleton:

Hips, Spine, Chest, Neck, Head,
LeftShoulder,  LeftUpperArm,  LeftLowerArm,  LeftHand,
RightShoulder, RightUpperArm, RightLowerArm, RightHand,
LeftUpperLeg,  LeftLowerLeg,  LeftFoot,  LeftToes,
RightUpperLeg, RightLowerLeg, RightFoot, RightToes

Rigs without all 21 slots (a stripped robot with no Spine/Chest/Neck/Shoulder, for instance) leave those slots empty — retargeting just skips them. The arms/legs/head animate; the missing joints stay rigid. That's a property of the target rig, not the math.


No Lua API yet

HumanoidAvatarAsset doesn't currently expose Lua bindings. The whole authoring loop is editor-driven (Create Asset → Humanoid Avatar, Auto-map button, manual slot text entry), and the retarget bake is also editor-side (right-click any SkeletalAnimationAsset → Retarget…).

Once baked, the retargeted clip is a regular SkeletalAnimationAsset you can LoadAsset() and assign to a SkeletalMesh3D's Animation Assets vector.

If you need runtime avatar inspection (e.g. UI that shows which bone a humanoid slot maps to), open an issue — bindings are easy to add but haven't had a real use case yet.