Required by VRChat (humanoid)

avatar armature check model.fbx --json # the inferred mapping + what is missing
  • Spine chain: Hips, Spine, Chest, Neck — and Shoulders — must all be present/mapped.
  • Head: Head.
  • Hands: LeftHand, RightHand (plus the lower/upper arm chain feeding them).
  • Feet: LeftFoot, RightFoot (plus the leg chain).

Fingers, eyes, jaw, toes, and the upper-chest are optional but enable extra features (hand-tracking detail, simulated eye look, visemes/jaw).

Notes that drive validation rules

  • Eye bones point up. SDK3 expects eye bones oriented upward, not outward.
  • T-pose is expected at import for correct muscle/retarget setup.
  • A clean single skeleton root (no stray extra roots) is expected.

Naming conventions we infer from

Humanoid boneNames that map to it (examples)
HipsHips, hip, pelvis, mixamorig:Hips, Bip01_Pelvis, J_Bip_C_Hips
LeftUpperArmLeftUpperArm, mixamorig:LeftArm, Bip01_L_UpperArm, J_Bip_L_UpperArm, arm_L
HeadHead, head, mixamorig:Head, Bip01_Head, J_Bip_C_Head

Bone-name → Humanoid mapping must tolerate many rig exporters. Examples that all map to Hips: Hips, hip, pelvis, mixamorig:Hips, Bip01_Pelvis, J_Bip_C_Hips (VRoid). The inference table lives in avatar-armature and is data-driven so it can grow. Canonicalizing these names is exactly what armature repair does so Unity's humanoid auto-mapper recognizes the rig.