Copy Bone Weights

The Weight copy tool is used to copy the mesh weights from sibling meshes and from other bones within the mesh skeleton (rig). Actually we support Weight copy at 3 different places:

1.) While attaching a Mesh (Binding)

During parenting a mesh to an Avastar rig you can enable an initial Weight copy from all visible siblings to all bones of the parented mesh. In the image on the right you see the armature (orange) and the shirt(semi transparent) selected. Initial weight copy will project the weights of the upper body into the weights of the shirt. For more detailed information see the Reference guide Binding(Assign to Armature).

2.) While skinning a Mesh (Skinning)

Avastar has a weight Map control section inside the Skinning panel. This section appears only for Already bound meshes. The section is divided into three subsections:

Strategy

Avastar supports various weight transfer methods(strategies):

  • Face Map Generator:
    Generate weights for face bones
  • Swap Weight Groups:
    Exchange mBone weights with Volume bone weights (fitted Mesh)
  • Copy from Extended:
    Copy from Bento weight maps instead of SL Weight maps
  • Copy from Avastar:
    Copy from SL Weight Maps
  • Copy from Meshes:
    Copy weigths from all other visible meshes bound to same Armature
  • Automatic from Bones:
    Generate Weights with Bone Heat Algorithm

Avastar can pre configure a Mesh to use either of the weighting patterns. For details read the Skinning section.

Scope

The Scope allows you to specify a selection of bones for which weightmaps are allowed to be created. The scope can be one of:

  • Selected Deform Bones
  • Visible Deform Bones
  • Enabled Deform Bones

However this is only the set of bones for which the user allows Avastar to generate weights. So what is the set of enabled deform bones? …

Enabled Deform Groups

The enabled deform groups define the set of bones which Avastar incorporates when it actually calculates the individual weights. The reason for having a set of selected bones (the scope) and a set of enabled deform groups (bones) is related to how the weight maps are actually generated. That is:

All enabled deform bones contribute to the final values in the weight maps, while the selected bones only say for which bones weightmaps shall be created.

In summary: The content of the created weight maps largely depends on the set of enabled deform groups

Options

  • X-mirror:
    on a symmetric rig you can select just one side of the bones and enable x-mirror to make sure both sides (symmetry) are used for creating weight maps
  • Keep empty maps:
    By default Avastar cleans up the weight map list by removing maps that have no weights assigned to vertices. Enable this option to keep empty maps in the list
  • Clear weights
    Remove all weights before generating the new weight maps. When you use the weight map controller in edit mode then you can create weights only for selected vertices (see below). In that case you might want to keep the weights intact for all other (not selected) vertices in the mesh. this is the situation where you might want to disable this option.
  • Selected verts
    When you use the weight map controller in edit mode then you can create weights only for selected vertices. This is the situation where you probably want to disable the clear weights option (see above)

3.) In the Armature Tools Section (Tool Box Panel)

While working on the weights of a mesh in Weight Paint mode you can do a weight copy on a bone by bone base. The details are described in the weight copy tool reference below. For details read the Vertex Tools section. Note: This option is related to the Weight Copy tool in the Skinning panel (see above)

The Weight Copy Tool Reference

Below you find all Copy tools explained in more detail.

Selected to Active Bone

If you want to copy from another bone, then you must ensure that you have selected exactly 2 bones, where the source bone must be selected first while the target bone is SHIFT Selected second (so the target bone becomes the active bone)

Note: The target bone’s weights will be entirely replaced by the weights from the source bone, not added or merged!

boneWeightSelectedToActiver

Mirror from Opposite Bone

If you want to mirror copy then you only have to select the target bone(s). You can select a set of bones. Avastar will perform the mirror function on each selected bone.

boneWeightCopyMiror
You now can specify if your copy shall use Topology mirror or Vertex Mirror. Please be aware that topology mirror can only be used when the mesh is not symmetric! For perfect symmetric meshes you will always use Vertex Mirror.
weight_copy_06

Note: If you have Sparkles-Pro then you get the additional option Shape Mirror Copy which is less accurate but works in any case even if the topology is completely different on both sides of the mesh.

Details about Mirror Copy

A common pitfall with Weight Copy happens when your mesh is slightly asymmetric. on the next image you see an example:

The boots look pretty much equal, so you have the impression that a weight copy should be no big deal. But actually i have moved the left boot slightly out of symmetry, so all vertices have a small offset from perfect symmetry. And you can not see this slight asymmetry by just looking at it.

Lets assume you have carefully weighted the left boot and now you want to mirror copy the weights from the left ankle to the right ankle.

weight_copy_02

So you will select the right ankle bone, and then perform a Mirror from Opposite Bone. But you end up with the weights not mirrored. In the image you see the weights are not copied to the right ankle as expected, but the weights remain on the original vertices.

Whenever you see this happen you can be sure that your mesh is not exactly symmetric. In that case you can try a topology mirror copy, but unluckily this has its own pitfalls as well…

weight_copy_04

So lets try to do a mirror copy with topology mirroring enabled (select Topology in the selector right to the Bone Mirror Copy Button). In my case i ended up with a very strange result as you can see in the next image.

The problem with topology mirroring is that the used function needs a more complex mesh to identify the mirrored vertices. I have not fully understood how it works, but apparently it does not work for low polygon meshes, hence Topology mirroring is in general not suitable for game engine development.

weight_copy_05

Stepping out of the pitfall

So if you have the situation that i just have explained above, then you have 2 options to proceed:

  1. Either you decide to use Blender’s Symmetrize function (in edit mode Mesh -> Symmetrize)
  2. Or you can decide to delete half of your mesh and use a Mirror modifier to fix this issue. Using the mirror modifier has the nice extra advantage that your weights get automatically mirror copied when you apply the modifier.

However, if you are working with slightly asymmetric meshes, then you might not be able to use mirror weight copy. Then you only can weight both sides of your mesh manually.

Side note: In our new Blender Add-on Sparkles-Pro we have added an additional Shape Mirror Copy which is less accurate but works in any case even if the topology is completely different on both sides of the mesh. So if you are lazy and you want the one click solution, you may want to check out the Sparkles Pro tool.

Note: If you select a bone AND its mirrored bone, then only one of the bones will be mirrored. That is: We do NOT swap the weight data and thus you always end up with a symmetric result! This may not be what you want in all cases.

Swap Collision with Deform

Each classic mBone is related to a corresponding fitted mesh cBone. Hence when you select any of the Deform bones the tool knows which is the counterpart bone according to the table below.

Each time when you call the tool, the weights of the selected Bone(s) will be swapped with the weights of their corresponding counterpart.

Note: The tool will revert exactly to the initial configuration when you call it twice. You should always double check how your Vertex Groups get renamed after you called the tool!
[symple_toggle_sub title=”The relation table”]
Classic Fitted Mesh
mCollarRight, mCollarLeft R_CLAVICLE, L_CLAVICLE
mShoulderRight, mShoulderLeft R_UPPER_ARM, L_UPPER_ARM
mElbowRight, mElbowLeft R_LOWER_ARM, L_LOWER_ARM
mWristRight, mWristLeft R_HAND, L_HAND
mHead HEAD
mNeck NECK
mChest CHEST
mChest UPPER_BACK
mChest RIGHT_PEC, LEFT_PEC
mTorso BELLY
mTorso RIGHT_HANDLE, LEFT_HANDLE
mTorso LOWER_BACK
mPelvis PELVIS
mPelvis BUTT
mHipRight, mHipLeft R_UPPER_LEG, L_UPPER_LEG
mKneeRight, mKneeLeft R_LOWER_LEG, L_LOWER_LEG
mAnkleRight, mAnkleLeft R_FOOT, L_FOOT

Important: The grey relations are ambiguous thus they are ignored by the Swapping Tool!

[/symple_toggle_sub]

Remove weights

This is obvious: The weight groups of all selected bones will be reset (made empty). You may want to do that when you decide to restart a bone weighting from the beginning.

Clean weightmaps

This option removes all Weigth Groups with no defined weghts, or where all weights are zero. Additional settings become available in the Operator Redo Panel

 

Check Bone Hierarchy (only enabled for Armatures)

Add Missing Mirror Groups

Copy from Rigged

Copy from Selected

Weld to Rigged