Hair and Beards: Skinning and Snapping
This guide covers skinning and snapping for hair and beards. It assumes a working level of familiarity with skinning, rigging, and 3D modelling.
How Does Snapping Work?
Snapping in BG3 works by snapping skinned joints to a marked location on the body rig. Our body rig has has special sockets.
A socket is an in-engine transform. The socket names match the skinned joints inside our skin rig.
The engine will move a skinned joint of the hair to the socket location in the body skeleton.

Hair
Before You Start
In order to skin hair, you need two things ready:
- A skeleton – use the
.fbx
files provided below - Your hair model
We have provided three versions of the hair skeleton for you to use [TODO]:
- Human Female – for the tall races
- Dwarf Female – for the short races
- Half Orc Male – for the Half-Orc male
ⓘ Important! The snapping system is entirely dependent on the naming conventions of the joints. We have provided the
.fbx
files above so that you have the correct positions and names of the joints.
If hair is skinned to the Human Female rig, the in-engine systems will automatically snap the hair to the other races. Technically, this will work for all races, but due to differences in skull shapes and sizes, we recommend creating a version with each of the three separate rigs.

Hair Skinning Joints
The hair skinning joints can be sorted into 3 groups:
- Head joints
- Neck joints
- Body joints
While not all joints are needed to achieve nice snapping, we recommend at least having the head joints.
Head Joints
The head joints will move with the head animations.

Neck Joints
The neck joints will move with the neck animations.

Body Joints
The body joints will move with the chest animations.

Important Joints
The most important joints are the forehead, lowerEar, and neck2 joints.
The forehead joints ensure that your hairstyle matches the foreheads of the various races and genders that it will be snapped to. It is best to keep the hairline of your hairstyle roughly alligned with the forehead joints. Moving it further back may cause hair to clip too much, or to hover above the scalp on other races or genders.
The lowerEar and neck2 joints ensure that the hair stays on the neck of the character.
Joint Naming Conventions
As mentioned earlier, the naming of the joints is very important. The engine uses the names to know which sockets to snap them to.
Head Joints | Neck Joints | Body Joints |
---|---|---|
Socket_Hair_Back_L | Socket_Hair_Neck2_L | Socket_Hair_Chest1_L |
Socket_Hair_Back_M | Socket_Hair_Neck2_M | Socket_Hair_Chest1_R |
Socket_Hair_Back_R | Socket_Hair_Neck2_R | Socket_Hair_Chest2_L |
Socket_Hair_Crown_L | Socket_Hair_Neck_L | Socket_Hair_Chest2_R |
Socket_Hair_Crown_M | Socket_Hair_Neck_R | Socket_Hair_Scapula1_L |
Socket_Hair_Crown_R | Socket_Hair_Scapula1_R | |
Socket_Hair_CrownTop_L | Socket_Hair_Scapula2_L | |
Socket_Hair_CrownTop_M | Socket_Hair_Scapula2_R | |
Socket_Hair_CrownTop_R | ||
Socket_Hair_Ear_Adjust_L | ||
Socket_Hair_Ear_Adjust_R | ||
Socket_Hair_Ear_L | ||
Socket_Hair_Ear_R | ||
Socket_Hair_Forehead_L | ||
Socket_Hair_Forehead_M | ||
Socket_Hair_Forehead_R | ||
Socket_Hair_FrontTop_M | ||
Socket_Hair_LowerEar_L | ||
Socket_Hair_LowerEar_R | ||
Socket_Hair_Neck1_M | ||
Socket_Hair_Sideburn_L | ||
Socket_Hair_Sideburn_R | ||
Socket_Hair_Temple_L | ||
Socket_Hair_Temple_R | ||
Socket_Hair_Top1_L | ||
Socket_Hair_Top1_R | ||
Socket_Hair_Top2_L | ||
Socket_Hair_Top2_R | ||
Socket_Hair_Top_M |
Turning On Snapping in the Editor
Once you’ve imported your hairstyles (see Hair and Beards: Assets), you can enable automatic snapping. Select the hairstyle’s mesh (the VisualResource file) in the Resource Manager. Find the Needs Skeleton Remap option and make sure it’s turned on.

The engine will now know to snap the hair to different races and genders.
Beards
Beards use a similar system, but because beards need to move alongside each different face, we have locators instead of sockets. These locators are in the facial rig itself, and move with the face.

Before You Start
To skin a beard, you need two things:
- The skeleton – use the
.fbx
file provided below - The beard model you want to skin
We have provided a Male Human beard skeleton for you to use [TODO]:
- MOD_Default_HUM_M_Beard.fbx
Joint Naming Conventions
The naming of the joints is very important because they are what’s used to snap to engine socket locations.
ⓘ Important! Due to differing pipelines, the capitalisation of the joints is slightly different. To avoid issues, please make sure you are using the exact names provided.
Beard Joints |
---|
beard_cheek_l |
beard_cheek_r |
beard_chin_l |
beard_chin_r |
beard_ear_l |
beard_ear_r |
beard_jaw_base_l |
beard_jaw_base_r |
beard_jaw_l |
beard_jaw_m |
beard_jaw_r |
beard_labiomental_l |
beard_labiomental_m |
beard_labiomental_r |
beard_lower_lip1_l |
beard_lower_lip1_r |
beard_lower_lip2_l |
beard_lower_lip2_r |
beard_lower_lip_m |
beard_philtrum_l |
beard_philtrum_m |
beard_philtrum_r |
beard_smileline1_l |
beard_smileline1_r |
beard_smileline2_l |
beard_smileline2_r |
beard_smileline3_l |
beard_smileline3_r |
beard_upper_lip1_l |
beard_upper_lip1_r |
beard_upper_lip2_l |
beard_upper_lip2_r |
beard_upper_lip_m |
Beard skinning works similarly to hair: you will need to enable Needs Skeleton Remap on the beard’s VisualResource, just as you did for the hair.

To get the best snapping across a variety of faces, skin your mesh to as many of the beard joints as possible.