Normalize unlocked groups (and the inside-out weight paint method)

There’s this really awesome weight-painting method called inside-out, it’s taught in industry workshops and whatnot, it’s used by professionals.
You can learn more about it here: https://www.youtube.com/watch?v=xu73Yqgju14

One requirement of this method is that you lock all your vertex groups except two, so that when you normalize weights, the active group steals weights from the other unlocked group.
This works fine with operator Normalize All, with the “Deform Pose Bones” subset, with the Lock Active option turned on.

But if you’re weight-painting for uses other than bones, like shapekey blends, modifier influences etc. Normalize All won’t work well. It doesn’t let you ignore locked groups, so you can’t steal weights that already exist on locked groups, like when weight-painting a shapekey blend on vertices that are already weighted to bones, for example.

This free script below adds a new operator called “Normalize Unlocked” to your weight tools so you can do this kind of weight-painting method.

Install it as an add-on and activate it (it’s in the Paint category), it will add itself to the weight tools panel.

It works like Normalize All except it ignores any groups that are locked, as if they don’t exist. So the weights are normalized between only those unlocked groups. Plus it has a Lock Active option, so the active group steals weights from the other unlocked group, like in that method.

Thanks, greatly appreciated. Very useful script.

your script is super useful. I replaced default normalize all with yours.
I need to weight-paint and keep some vertex group always. If there are mask vertex groups I couldn’t use normalize all. btw I wanted to ask how to change default setting of operation. I wanted to use your script with “ignore locked groups” on always, but I saw your python script, and it explains how.I will use this add-on with those default settings.

name = ‘Lock Active’,
default = False
name = ‘Ignore Locked Groups’,
default = True