3
$\begingroup$

I have an issue with a rig (this is my first time rigging) where it requires the subtraction of the weights of many different Vertex Groups from the head (root) vertex group to make the rig function properly.

Here is an image showing what I wish to accomplish:

enter image description here

The result image is an inversion of the middle image. Do keep in mind that inversion will not cut it, since I have to remove more things from the head (root) vertex group other than just the jaw itself.

Using the remove button in the vertex group tab gives me this result

enter image description here

This is not satisfactory, as it removes the vertices from the vertex group, but does not subtract the weight values from it.

Google has not turned up anything so far.

Normalizing solves nothing as it still causes deformation when moving parts with Children i.e. opening and closing the jaw deforms the lower lip bones.

Removing the influence of the head (root) bone will also cause irregular behavior as well since Blender treats all weights which aren't zero as one regardless of the weight assigned due to the vertices needing a weight of one.

$\endgroup$
2
  • $\begingroup$ related: Select overlapping vertices from vertex groups $\endgroup$
    – David
    May 22, 2016 at 21:24
  • $\begingroup$ I don't think there is a command to do what you need. Maybe there is an addon but making a python script for it wouldn't be too hard. Have you tried the conventional way, ie. painting the weights making use of the possibility to hide faces and pose the bones while painting? $\endgroup$
    – kheetor
    May 23, 2016 at 7:03

2 Answers 2

6
$\begingroup$

You can use a Vertex Weight Mix modifier.

Say you have Vertex Group A :

enter image description here

And B :

enter image description here

In order to subtract B from A, add a Vertex Weight Mix set to Subtract and to effect only group A.

Result when viewing the A Group after adding the modifier :

enter image description here

$\endgroup$
3
$\begingroup$

The data transfer function may help you.

Tools panel showing the data transfer option

You will have to set your two objects as they overlap. Then use the "data" button in the "Data transfer" section.

Then choose "vertex groups" as shown here enter image description here

And then go to the operator options (bottom part of the first image here).

  • You can then choose de source : probably your group name.
  • Then the destination : "by name" for the same group name.
  • And the operator ("mix mode") : enter image description here

You also have an "invert" function here in weight paint mode : enter image description here

$\endgroup$

You must log in to answer this question.

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