Developing Skeletal Rigs for Game Characters
Character rig in game context is not the same task as rig for film or advertising. Here bones must work in real-time, fit within engine limits, support retargeting and not break on FBX import. Artists coming to game dev from film pipeline often learn about this at the stage when redesign is too late.
What Makes a Rig "Game" Rig
In film you can afford 300+ bones per character, deformers, nCloth and lattice. In real-time this is impossible. Unity Humanoid Avatar supports mandatory set of 15 bones (Body, Head, Left/Right Arm, Left/Right Leg) and optional fingers. Generic rig—unlimited, but without Humanoid functions.
Bones per platform:
- Mobile devices (GPU skinning): recommendation—up to 75 bones, hard limit depends on GPU
- PC/Console (Compute skinning): 100–150 realistic without loss
- VR: special requirements due to Frame Budget—no more than 60–80
Every bone added "just in case" is a bone animator must account for or explicitly exclude through Avatar Mask. Minimal sufficiency—principle that saves money on all subsequent stages.
Hierarchy and Naming Conventions
Root bone—Root (or Hips in Mixamo convention). Everything else—child elements. Important: Root stands on floor under character, not at center of mass. Critical for Root Motion: Unity reads displacement from Root-bone, and if Root at pelvis level, character will "fly" with Root Motion applied.
Naming standard that won't create problems:
-
Hips,Spine,Spine1,Spine2,Chest,Neck,Head -
LeftShoulder,LeftUpperArm,LeftLowerArm,LeftHand -
LeftUpperLeg,LeftLowerLeg,LeftFoot,LeftToe
This is Mixamo-compatible naming which Unity automatically maps in Avatar Configuration without manual assignment. Any deviation (L_Thigh, Bip001 L Leg, UpperLeg.L) requires manual mapping each reimport.
Axis Orientation and Bind Pose
Axis orientation in Blender (Y along bone) and Maya (X along bone) differ. Must account for this when setting up IK-solvers and exporting. In Blender bone "points" along Y-axis of local space; if Connect is not set—axis can be arbitrary and IK gives unpredictable result.
Check: select all bones in Edit Mode, Display → Axes. All primary axes should point from parent to child along one axis. If chaos—Recalculate Roll through Ctrl+N with Global Positive X option.
T-Pose for Bind Pose—standard for Humanoid Avatar in Unity. A-Pose technically allowed but sometimes Unity auto-mapping incorrectly determines limb direction. Safer: export in T-Pose, in Unity set Reference Pose = T-Pose, then separate A-Pose clip for skinning.
Helper Bones and Twist
Without Twist-bones, forearm rotation during pronation/supination deforms mesh like "twisted tube". Unity Humanoid supports Upper Arm Twist and Lower Arm Twist as optional bones. Added between Shoulder → Forearm and Forearm → Hand.
Twist-bone weight: 0.5 at mid-segment, 0 at both ends. Distributes deformation along limb length instead of concentrating at one joint. In Maya configured through Advanced Twist Controls in IK Handle. In Blender—Bone Constraint → Copy Rotation with Factor 0.5.
Rig Development Process
Mesh audit and technical specification → Hierarchy assembly → Axis orientation → Bind Pose check → IK setup → Test animation → Export → Avatar Configuration check in Unity.
| Character Type | Estimated Duration |
|---|---|
| Humanoid without fingers (NPC, simple character) | 3 to 6 hours |
| Full humanoid with fingers + Twist bones | 1 to 1.5 days |
| Quadruped or non-standard creature | 2 to 4 days |
| Rig with dynamic elements (tail, cape) | 3 to 5 days |
Final result: FBX with correct skeleton, ready for skinning and import to Unity with green Avatar without warnings. Cost determined after mesh review and project requirements.





