0
$\begingroup$

I have already painted bone_L weights over my mesh. How can I assign the mirrored weights of bone_L vertex group to the bone_R vertex group?

Sub-question: is there a way to do so for multiple selected bones at once?

$\endgroup$
1

1 Answer 1

1
$\begingroup$

Method 1: Ensuring that you will always get mirrored weights from the very start of your project.

While in Weight Paint Mode, look in the Properties Shelf to the right of your viewport (press n to bring it up) and select the Tools tab. There is a Symmetry section, as well as an Options section. Do not activate anything under the Symmetry section, as it will not do what you want. If any Axis buttons are activated under the Symmetry section, press them to deactivate them. What this does is add whatever weight value you are painting to the other side of the mesh, but only for the current vertex group, not its mirrored partner. Instead, you want to make sure that X Mirror is checked under the Options section. This will ensure that whatever weighting you add on one side is mirrored to the corresponding vertex group on the other side. Provided that this other vertex group exists, of course.

enter image description here

Method 2: Mirroring existing weights after they've already been created.

Go into the Object Data tab of the Properties Panel with your mesh selected in Object Mode. Press the Plus Sign to the right of the Vertex Group section to create a new vertex group. Even though you only want to mirror a vertex group, you must create a new one first, and assign weights to it from selected vertices. It seems like you should be able to mirror vertex groups without beginning with a creation step, but mirroring without creating a new vertex group first will actually remove the old weights from the old group and replace them with mirrored versions of those same weights,now on the opposite side of the mesh, which is not what you want. Note that creating a new vertex group first doesn't alter this behavior, but it does ensure that the weight reassignment takes place only for the newly created vertex group, while leaving the old one alone. The end result is that you will now have two vertex groups with mirrored weights. It's just that you needed to manually create the new vertex group before mirroring, to avoid losing the original weights in the old group. So understand that the Mirror Vertex Group option creates no new vertex groups, but merely reassigns existing ones.

Give the new vertex group a name, and end it with either a .L or .R suffix, based on which side you will want it on. Switch back to Edit Mode and select the vertices that will be assigned to this group and hit the Assign button. Make sure the blue Weight bar under the Vertex Groups section is set to a value greater than zero, or the assignment will have no effect (it's usually at 1 by default, meaning full influence).

Now go back to Weight Paint mode so that you can see the effect of what happens next. In the Object Data tab once again, make sure your new vertex group is still selected under the Vertex Group section, go to the Vertex Group Specials pulldown (1) and choose Copy Vertex Group (2). The new one will be given the same name as the old, except it will either have a "_copy" or ".001" suffix, which is not what you want. Rename it to have a '.R' or '.L' suffix, whichever is the opposite of the one you first created.

Now that you have two groups, instead of one, you can mirror the new one. As explained earlier, mirroring will remove existing weights from the selected vertex group, but that is okay, because you still have the original vertex group's weights in tact. From the same Vertex Group Specials pulldown, with your new vertex group selected, choose Mirror Vertex Weights (3). You should see in your viewport that weights have appeared on the opposite side of the mesh.

enter image description here

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .