This tutorial is aimed at teaching you the basics of how to weight paint armor and clothes in Blender, so that your custom-made equipment properly moves and follows character animations in the game.
It is recommended to go through the entirety of this tutorial at least once, as most concepts and features are explained only once and considered as known in all subsequent mentions.
If you are a begginner to BG3 modding, please read through the Getting Started with 3D modding tutorial first.
ㅤ
This tutorial assumes that:
• You have Blender (3.6 and above) installed and you are at least minimally familiar with its interface and general usage.
• You have the Blender plugin BG3/DOS2 Collada Exporter installed to import and export game meshes to and from Blender.
• You have Modder’s Multitool or the Baldur’s Gate 3 Toolkit installed to look up and extract assets from the game.
• You have an armor or clothes mesh that is already fitted to your body type and race of choice.
This tutorial is not going to teach you how to create armor and clothes. It also won’t teach you how to export armor or how to put it into the game.
It is recommended to weight paint your armor and clothing before refitting it to other body types and races.
Now let’s get started!
ㅤ
The first step is to find armor or clothing in the game files that is roughly similar to your custom armor, so that we can steal the weights from it. The closest in shape to your custom armor the vanilla asset is, the better the weight transfer will be.
If your custom armor and clothes hug the body, you can use the vanilla naked Body mesh as a source to transfer weights from instead of vanilla armor pieces.
For the duration of this tutorial, we will be weight painting this 100% custom armor set:
Source: https://artstn.co/m/RGmbB
Since our armor is fitted to Humanoid Body Type 1 (fem), we will search for similar body type 1 assets using the Toolkit’s Resource Manager or Modder’s Multitool.
All armors and clothes in the game have the same naming structure using a combination of tags.
They all start withRACE_BODYTYPE_ARM
for armor andRACE_BODYTYPE_CLT
for clothing.
ㅤ
To find armor for your chosen body type, refer to the following list of tags:
ㅤ
RACE:
DGB
for Dragonborn
DWR
for Dwarf
GTY
for Githyanki
GNO
for Gnome
HFL
for Halflings
HRC
for Half-Orcs
HUM
for Humans, Elves, Drows, Half-Elves and Tieflings
ㅤ
BODY TYPE:
F
for Body Type 1 (fem)
M
for Body Type 2 (masc)
FS
for Body Type 3 (fem strong, only for HUM races)
MS
for Body Type 4 (masc strong, only for HUM races)
ㅤ
So for example if you are looking for armor that specifically fits masculine Githyanki frames, you have to search forGTY_M_ARM
HUM_F_ARM
in the search bar of the Toolkit or the Multitool.The Oathbreaker armor is very close to our custom armor, so we will be using the whole set for out example.
It doesn’t have a front skirt though, so we will also be borrowing the loincloth from the Barbarian starting armor.
And lastly for the cape we will be using HUM_F_ARM_Cape_Long_A
Baldur’s Gate 3 uses the GR2 file format to store its 3D objects and meshes.
In the Toolkit, right click on an asset and click Extract Visual Data to extract the GR2.
In Modder’s Multitool, click on the Extract File icon.
ㅤ
Now that we have extracted the GR2 files, it’s time to import them into Blender.
We need the Blender plugin BG3/DOS2 Collada Exporter installed to import and export GR2 files to and from Blender.
In the same Blender file as your custom armor, import the GR2s by going to File > Import > .gr2
and import all of the GR2s we have extracted, one by one.
Once you have imported all of the vanilla meshes, select all of them, and with your cursor in the viewport press CTRL+A
and Apply All Transforms
Next, you can go ahead and delete all the LOD meshes, we won’t need them.
You can also delete meshes or mesh parts that are useless and don’t match up with your custom armor well. If we don’t delete the extra meshes that we don’t need, they could throw off the weight transfer.
In our example’s case, we will get rid of the hanging belt, the unnecessary barbarian pants and the back skirt of the barbarian skirt.
Keeping the Cloth Meshes is a good idea, you can reuse them to add cloth physics to your skirts and capes, although we will not be covering cloth physics in this tutorial.
We end up with an armor set that is very similar to our custom armor:
Don’t worry if yours doesn’t match as well, the weight transfer will still work.
The only vanilla mesh parts you shouldn’t merge with the rest are parts like the skirt or the cape, since they will receive cloth physics and are weighted differently than the rest of the armor.
To merge meshes in Blender, select them and press
CTLR+J
with your cursor in the viewport.
Our vanilla armor is now all cleaned up and ready to be used for weight transfer!
ㅤ
We will now transfer weights from the vanilla armor to our custom armor.
For this step you need both your custom armor meshes and the vanilla meshes visible in Blender.
Make sure your custom armor doesn’t already have weights.
Delete all the weights from your custom armor before proceeding.
ㅤ
If your custom armor has modifiers (like for example Mirror modifier), make sure to apply all modifiers before proceeding.
Weights > Transfer Weights
Vertex Mapping
setting to Nearest Face Interpolated
and Source Layers
setting to By Name
like in the picture below. Then click out of that window to confirm the settings.Congratulations, you have transfered weights from the vanilla armor to your custom armor! You can verify that the operation was successfull by clicking on vertex groups and checking that weight paint is showing up on your mesh.
Now do the same thing for all of the meshes in your custom armor. Exit Weight Paint mode back into Object mode, select the vanilla armor once again, then your next custom mesh, then transfer weights.
Fortunately, the Transfer Weights settings get saved and you don’t have to set those up each time, so that should speed up the process.
For the cape we will transfer weights from the vanilla cape instead of from the vanilla armor. The same principle goes for the skirt.
Select the vanilla cape first, then the custom cape second, and Transfer Weights.
Once you have transfered weights to all of the custom armor meshes, you can hide the vanilla armor meshes as we won’t be needing them anymore.
ㅤ
Now we need to test the weights to see if any need fixing.
First, we need to assign an armature to our custom armor.
If you haven’t deleted all of the vanilla armor armatures, you can use one of them. If not, just import a vanilla armor GR2, delete the imported meshes but keep the armature.
Armors and clothes use the same armature as the naked body does, so it might be referred to as Body Armature.
Select all of the meshes of your custom armor, then select the armature last, then press CTRL+P
with the cursor in the viewport and Set Parent to Object Keep Transform
. This will parent your custom armor meshes to the body armature.
For each custom armor mesh, add an armature modifier and set the armature as a target.
Now our custom armor is properly parented to the body armature and should move with it during animations and movement!
We will now test the weights of our custom armor. But first, we will change a few settings in blender to better help us see what we are doing.
Select the armature and change the viewport display to Display as Stick
, and tick In Front
On the top right corner of the viewport, expand the Overlays dropdown and tick Statistics
A slew of statistics should now have appeared on the top left corner of your viewport. Later on when we select a bone from the armature, its name will be displayed there.
We can now finally test the weights.
Select the armature and go into Pose Mode
ㅤ
Select the Rotate tool and click on a bone, a gizmo will appear that will allow us to rotate bones on their axis.
To test out weigths, we need to rotate bones and see if our custom armor properly moves with it.
The main bones to test and rotate are the following (from top to bottom):ㅤ
•Head_M
•Neck_M
•Scapula_L
andScapula_R
•Shoulder_L
andShoulder_R
•Elbow_L
andElbow_R
•Wrist_L
andWrist_R
• All Finger bones 1, 2 and 3
•Chest_M
•Spine2_M
andSpine1_M
•Hip_L
andHip_R
•Knee_L
andKnee_R
•Ankle_L
andAnkle_R
•Toes_L
andToes_R
Note that when importing GR2s into blender, left and right are inverted. That is normal.
If your custom armor doesn’t move at all, it could mean that it is not correctly parented to the armature or it does not have weights.
For our example, we will start with checking the Head_M bone by selecting it and rotating it.
We can see that there are a few weighting issues here:
• the body armor pokes through the neck
• the armor neck guard moves with the head even though it shouldn’t
• the neck part of the helmet should not bend like that.
Taking actual written notes is recommended for this part!
Once you are done checking a bone, you can reset its position by selecting it (you can also select all bones by pressing A
with the cursor in the viewport) and going to Pose
> Clear Transforms
> All
Here are examples other issues you might encounter:
• Part of the armor moves when it shouldn’t
• Part of the armor doesn’t move when it should
• Part of the armor gets deformed too much
If you encounter too many issues, it might be because the vanilla armor you transfered weights from wasn’t suitable, or you forgot to apply modifiers to your custom mesh before doing the weight transfer. You can try to fix all of the weight painting errors in the next step, or you could go back to the section Finding similar vanilla armor and redo things from there to save yourself a bigger headache.
ㅤ
You could also import the naked body you’ve fitted your armor to, and transfer weights from it instead of from vanilla armor, it might give better results.
ㅤ
To fix all of those issues, we have several tools available in Weight Paint mode. We are going to manually paint weights to fix them.
ㅤ
Let’s start with fixing the issue of when a part of the armor moves when it shouldn’t. That issue occurs when a part of the mesh has weight paint on a bone it should not be weighted to. To fix it, we need to remove weights.
Always start fixing your weight painting by solving issues that require you to remove weights first. It makes the process cleaner and more straighforward to first remove unnecessary weights and then add weights when they are missing.
For our example we will pose the armature like so, where we can clearly see the issue:
You can hide the other custom meshes for the moment to better see the mesh you are going to weight paint.
Select the mesh that has problematic weights, and go to Weight Paint mode.
In the Vertex Groups list, click on the bone that you moved in pose mode.
The bone we moved in our example is Shoulder_R
It might not be visible as the example above, but there are actual weights in the problematic area that we need to set to 0 to remove.
Enable to Vertex Selection
mode
Select the Selection Box
tool
Go into X-Ray mode
(Alt+Z
with the cursor in the viewport) and select the problematic area
Select the Draw
tool, set Weight
to 0
, then go to Weights > Set Weight
Hopefully, that fixed the issue for you. If so, you can continue to the next subsection.
Sometimes like in our example, not much changed even though we set weights to 0. That usually means that the problematic area is weighted to more bones it shouldn’t be weighted to.
In our example, the issue appears when we move the Shoulder_R
bone. When moving the Shoulder_R
bone, it also moves the other bones down that same arm like Elbow_R
and Shoulder_R_Twist
. That means all the bones down the that arm could be affecting the problematic area, and we need to set weights to 0 for all those bones.
Fortunately our selection and settings are saved, so we only have to select the bones in the Vertex Groups window and Set Weights again for each of them.
CTRL+X
to Set Weights
more quickly.You can also decrease weights to zero directly by painting on the mesh using the Draw tool, but that is less accurate than Set Weight.
Now that the issue is fixed, you can disable Vertex Selection mode (by clicking on it again) for the next step.
Repeat this whole subsection as needed with all the areas that move when they shouldn’t.
Make sure to do it for all your custom armor meshes.
Once we are done removing weights, we have to clean them up. Setting weights to zero doesn’t actually remove them, so this step is crucial to make sure the zero weights are actually removed.
Weights
> Clean
A window appears on the bottom left of your viewport.
Do Weights
> Clean
to all the other custom armor meshes.
ㅤ
To fix parts of the armor that don’t move along a bone when they should, we need to add weights to that bone.
If the weight transfer goes well, this issue should hardly arise.
However for the sake of being thorough, we will go through how to add weights.
For our example we will pose the armature like so, where we can clearly see the issue:
Exit Pose mode and go back to Object mode. The pose should stay as is.
Select the mesh that has problematic weights, and go to Weight Paint mode.
In the Vertex Groups list, click on the bone that you moved in pose mode.
The bone we moved in our example is Shoulder_L
When we check the weights for that bone however we can see that it is actually correct.
We can tell that it is correct by comparing it to the opposite arm (where the weights are already all correct).
So we have to find the actual bone that is missing weights. You can look at a vanilla mesh’s weights to see how things should be weight painted. In our case, the opposing arm has correct weights so we will check that insted.
Here we can tell that Shoulder_R_Twist_01
is the bone that affects that upper arm area that interests us.
And indeed, when we check Shoulder_L_Twist_01
, we can tell that weights are missing!
Let’s fix that!
Shoulder_L_Twist_01
).You might need to touch up the painting on more bones to fix a single area, make sure to look at an example (like a vanilla mesh, or the opposite arm in our case), to check what the weight painting should look like.
Repeat as needed.
ㅤ
This is the issue that arises the most after weight transfer. This problem is caused by jagged and spotty weight painting, so we will smooth the weight painting out.
For our example we will pose the armature like so, where we can clearly see the issue:
Exit Pose mode and go back to Object mode. The pose should stay as is.
Select the mesh that has problematic weights, and go to Weight Paint mode.
For each bone that affects the problematic area, select the Blur tool and liberally apply on the problematic area.
That should help reduce the extreme deformations.
Repeat as needed.
ㅤ
Sometimes, you’ll want an armor piece or a belt buckle to stay rigid and not deform as the armature moves. To achieve that result, we will be using a the Average tool in Weight Painting.
For our example we will be fixing the belt buckle and the hanging plate on the hip.
I have colored the armor to better see what is going on.
Exit Pose mode and go back to Object mode.
Select the mesh that has problematic weights, and go to Weight Paint mode.
Select the Average
tool
Apply the average tool on the area you want to stay stiff for all the bones that affect it.
Do this for all mesh parts that need to stay rigid.
The downside is that the rigid part might now clip through the other meshes. That is a tradeoff you have to consider when using this method.
ㅤ
Once you have finished weight painting, it’s time to limit weights. This operation is mandatory, as each vertex cannot be affected by more than 4 bones at the same time due to a limitation of the GR2 format.
Make sure that you are done with all your weight painting before limiting weights.
This operation is desctructive and will change your weight painting. Make sure to save a copy of your blend file beforehand.
Do the following for all your custom armor meshes:
Select your custom armor mesh and go into Weight Paint mode.
Go into Weights
> Limit Total
A window should have appeared on the bottom left of your viewport. You should not have to change any settings there.
ㅤ
We are done with weight painting the custom armor! You should now be able to export it and test it ingame.
Once your armor is in the game, you might encounter an issue where your custom armor is all spikey like in the picture below:
To fix this, you might want to go back to the previous section and Limit Weights to 2
instead of 4.
That is all for this tutorial! Hopefully that helped you weight paint your armor. Please join the BG3 Modding Community discord if you have specific questions about weight painting.