Skip to content

Naming Conventions

Fightura tracks every Figura part by:

  1. parentType — Figura’s built-in body region (Head, Body, LeftArm, …)
  2. part name — case-insensitive match against a built-in alias dictionary
  3. Lua override — your script can bind any name to any joint at runtime

If any of these resolve to an Epic Fight joint, that part follows the joint. If none resolve, the part falls through to Figura’s normal render and inherits through its parent.

These are the joint names you can target:

JointPosition
RootEntity origin
PelvisHip
SpineLower torso
ChestUpper torso
HeadNeck/head
Arm_L, Arm_RUpper arm (shoulder pivot)
Hand_L, Hand_RForearm and hand
Thigh_L, Thigh_RUpper leg
Leg_L, Leg_RLower leg and foot

All matching is case-insensitive. Pick whichever style your modeling tool exports.

AliasesMaps to
Head, Neck, HatHead
Body, Chest, Torso, UpperChest, JacketChest
Spine, Spine1, Spine2, WaistSpine / Chest
Hips, Hip, PelvisPelvis
LeftArm, LeftShoulder, LeftUpperArm, LeftSleeveArm_L
LeftHand, LeftForearm, LeftLowerArm, LeftElbow, LArmLowerHand_L
RightArm, RightShoulder, RightUpperArm, RightSleeveArm_R
RightHand, RightForearm, RightLowerArm, RightElbow, RArmLowerHand_R
LeftLeg, LeftThigh, LeftUpperLeg, LeftPantsThigh_L
LeftFoot, LeftShin, LeftLowerLeg, LeftKnee, LLegLowerLeg_L
RightLeg, RightThigh, RightUpperLeg, RightPantsThigh_R
RightFoot, RightShin, RightLowerLeg, RightKnee, RLegLowerLeg_R

If you imported a rig from Mixamo, the bones already work:

Mixamo boneMaps to
mixamorig:Head, mixamorig:NeckHead
mixamorig:HipsPelvis
mixamorig:Spine, Spine1, Spine2Spine / Chest
mixamorig:LeftShoulder, LeftArmArm_L
mixamorig:LeftForeArm, LeftHandHand_L
mixamorig:LeftUpLegThigh_L
mixamorig:LeftLeg, LeftFootLeg_L
(Right side mirrors above)
BoneMaps to
head, neckHead
spine, spine.001Spine
spine.002, spine.003Chest
shoulder.L, upper_arm.LArm_L
forearm.L, hand.LHand_L
thigh.LThigh_L
shin.L, foot.LLeg_L
(.R mirrors above)
BoneMaps to
J_Bip_C_Head, J_Bip_C_NeckHead
J_Bip_C_HipsPelvis
J_Bip_C_Spine, Chest, UpperChestSpine / Chest
J_Bip_L_Shoulder, UpperArmArm_L
J_Bip_L_LowerArm, HandHand_L
J_Bip_L_UpperLegThigh_L
J_Bip_L_LowerLeg, FootLeg_L
(Right side mirrors)

If your part names don’t match any of the above, bind them once in events.LOAD:

function events.LOAD()
fightura:mapBone("MyTailRoot", "Pelvis")
fightura:mapBone("LeftSleeveCuff", "Hand_L")
fightura:mapBone("HornLeft", "Head")
end

The first argument is your part name (or parentType name); the second is one of the Epic Fight joints from the table at the top.

To remove an override:

fightura:clearBone("MyTailRoot") -- one
fightura:clearBones() -- all of this avatar's overrides

To inspect what’s available at runtime:

print(fightura:getSupportedBones()) -- list of every built-in alias
print(fightura:getJoints()) -- list of joints in the entity's current armature

You only need to bind a part if you want its own transform to come from an Epic Fight joint. Children of a bound part inherit through Figura’s normal flow.

For example, if you bind LeftShoulder to Arm_L, child parts named LeftElbowAccessory (with no special mapping) will move with the upper arm automatically — no extra binding needed.

  • Lua API — full list of Lua methods and Epic Fight state queries
  • Troubleshooting — what to do when a part doesn’t follow