Weight Paint Tools

I made this script (it may slow down the vieport since opengl drawing with python is bit slow):

It will draw color for each vertex group. If color is to bright it means, sum of vertex weight if above 100%, if it is dark then sum of vertex weights is below 100%. So it shoudl be normalized:

I think you could use build in Data transfer modifier for uv mirroring. But it would require UV half of mesh, duplicate, mirror it, and then use this mirrored duplicate as source mesh for data transfer.

About vertex snapping for mirrored mesh - blender build int Snap to symmetry should work ok if you play with its F6 props, and increase threshold param. Or you can use steps from above, and use mirrored duplicate, as source for shrink wrap modifier on original object.

This is very cool and i will try your script, but I was intrested in the actual bone’s display… Never saw them drawn like this

Ah, the bone display is the - envelope type. With Armature draw type set to wire.

Any chances of a 2.8 porting?

There is already working version for blender 2.8 on gumroad. Most features should work.

1 Like

Awesome addition to the workflow! Reminds me a bit of Softimage :slight_smile:

Just a quick question, is there a way to get a spreadsheet like overview of all weights and bones?
Or is this not possible due to limitations in the Blender UI?
All implementations are always in those sidebars, and no popup windows, or dockable view for more ‘stuff’.
Like a Light manager for instance too, it’s hard to get all data into such a small vertical area.

cheers for answering!


Does it support blender 2.8?

Do people read?

I updated weight_draw.py:

It is not that fast because of python.

1 Like

Excellent addon. Does it still conflict with AutoRig Pro? I think I saw you mention it on the ARP thread.

It should work ok with Autorig. I made some fixes to WPTool that should make it compatible with ARig, but I myself am not using AutoRig.

Thanks mate. I just bought ARP yesterday so when I get into it I’ll definitely try out this addon with it. :+1:

Using your tool to Smooth Weight on selected vertices. Options appear to (MMB) to choose number of steps to repeat, or (MMB+shift) to Expand, etc…

There is also an ption to turn on and off (N)ormalize, but pressing N doesn’t seem to do anything.


To cycle normalize modes press (N) key. I will be disabled - if mesh has no armatura assigned. I will make it so that there will be two options if no armature is assigned Disabled or All (groups).

Couple of Suggestion/Request on weight levels operation.

I just bought this addon especially for quick weight levels editing.

While I’m happy with how it performs as you demonstrate, I think bit of tweaks can improve the weight levels editing workflow.

  1. Add “options={‘SKIP_SAVE’}” to the FloatProperty of WPT_OT_LevelsWeights -> offset/gain.
    I think reusing values from last operation for level operation doesn’t make sense.

  2. Hold ctrl + mousewheel to increse/decrease more offset, ctrl + shift + mousewheel to increse/decrease more gain.
    And I also want increase/decrease step to be more fine values(I set 0.02 for default, 0.1 with ctrl).

While I already did these tweaks to my local one, I’m happy if you pick these suggestions because these might not hurt other users and I don’t want to re-doing this everytime I update this addon honestly :slight_smile:

  1. Done
  2. Not sure if I understand - increase / decrease more? You mean bigger step? But then it will contradict second part - where you suggest same key for smaller step. IMO just using ctrl for smaller step makes sense for both gain, and offset.
    Can you share the code so I know what you mean?
    Those are good suggestions and I will implement them asap.

Hello Jose,

do you think its possible to implement a brush with the same behaviour like the sculpt brushes? I mean the ability to click and draw to add, press strg+click to subtract and shift+click to smooth. I think this annoys me the most when skinning, constantly changing brushes for simple add and subtraction.

Yes. I mean bigger step.
I lower the base step precision and use ctrl key for bigger step because you already assigned shift key for gain control and Bender uses shift key for smaller step and ctrl for discrete step on value fields generally.
i.e. Position field x/y/z by 1 unit while holding ctrl, Rotation by 10 degrees.


And I think 0.1 for default increase/decrease step is too high. But obviously it’s my preference.

The part handling input (I changed my step values even more finer):

if event.type == ‘WHEELUPMOUSE’:

        if event.shift:

            if event.ctrl:

               self.gain +=0.05


                self.gain +=0.01


            if event.ctrl:

               self.offset +=0.05


                self.offset +=0.01



    elif event.type == 'WHEELDOWNMOUSE':

        if event.shift:

            if event.ctrl:

               self.gain -=0.05


                self.gain -=0.01


            if event.ctrl:

               self.offset -=0.05


                self.offset -=0.01


Thank you.