Hair and Beards: Skinning and Snapping

From Baldur's Gate 3 Modding

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.

A skinned hairstyle being snapped to the different race/gender sizes.

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.

The hair skinning joints.

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.

The head joints.

Neck Joints

The neck joints will move with the neck animations.

The neck joints.

Body Joints

The body joints will move with the chest animations.

The body joints.

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.

Joint Naming Conventions
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 “Needs Skeleton Remap” option, found in the settings of the selected VisualResource.

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.

The beard locators moving 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.

The “Needs Skeleton Remap” option, found in the settings of the selected VisualResource.

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