Page MenuHome

Implement a new Lock-Relative mode in Weight Paint.
Needs ReviewPublic

Authored by Alexander Gavrilov (angavrilov) on Oct 27 2018, 2:34 PM.

Details

Summary

This check box alters how weights are displayed and painted,
similar to Multi Paint, but in a different way. Specifically,
weights are presented as if all locked vertex groups were
deleted, and the remaining deform groups normalized.

The new feature is intended for use when balancing weights within
a group of bones while all others are locked. Enabling the option
presents weight as if the locked bones didn't exist, and their
weight was proportionally redistributed to the editable bones.

Conversely, the Multi-Paint feature allows balancing a group of
bones as a whole against all unselected bones, while ignoring
weight distribution within the selected group.

This mode also allows temporarily viewing non-normalized weights
as if they were normalized, without actually changing the values.

Diff Detail

Repository
rB Blender
Branch
temp-angavrilov-wpaint-lock-relative (branched from master)
Build Status
Buildable 5422
Build 5422: arc lint + arc unit

Event Timeline

This has been sitting in my branch for a few months.

Using this test:

This is what things look like:

Regular display with one bone selected.Multipaint with inner bones selected.Lock-Relative with one bone selected and outer loop locked.

This new mode and multipaint thus in effect provide a way to factor the weight distribution between two bone loops into two orthogonal gradients for independent viewing and tweaking.

One limitation is that since I've always painted normalized weights (using Auto-Normalize mode), I don't understand the non-normalized workflow at all, and as a consequence, I couldn't even come up with a way how the new mode could meaningfully work there. It thus requires Auto-Normalize to be on, as a sign that the user is working with normalized weights. Multipaint is also kinda meh (but works) without normalize for the same reason.

Commenting here based on IRC discussion,

I'd like to have experienced riggers try them out and give feedback since this adds maintenance overhead to properly support.

Also having someone else test this on some production file can give useful feedback.

Could @Juan Pablo Bouza (jpbouza) or @Andy Goralczyk (eyecandy) check on this? (others welcome too of course).

Rebased on master, and redesigned the operating principle to support non-normalized weight somewhat.