What "Fix Deforms" is for?

May anyone please explain to me what the “Fix Deforms” command in the Weight Tools of Weight Paint mode does (or it should do)?
Does it work at all?

The tooltip says “Modify the position of selected vertices by changing only their respective groups’ weights (this tool may be slow for many vertices)”.
The manual says “ToDo <2.57” :rolleyes:

Thank you,
paolo

Hey, that’s a good question.
I also wanted to know what it does. Last time I used it in Blender it froze the program and the CPU was at 100%. I had to force-close it.

The source code to that Fix Deforms operator (called “vertex_group_fix” internally) is this:

The algorithm code has this comment at the beginning:
/* this is used to try to smooth a surface by only adjusting the nonzero weights of a vertex

  • but it could be used to raise or lower an existing ‘bump.’ */

Thanks for the answer RNavega,
it provides some information on the matter, even if I’m not able to get from the sources what the code is intended to do, at least now we know that Dalai Felinto should know it.

In my attempts on a posing figure I did not have any results, but it did not froze, it was only very very slow, so it might be useful to know what exactly is and how it should be used.

The three available parameters (Distance, Strength, Accuracy) do not throw any light on how it can be used to smooth a surface or to lift or lower an existing bump.

paolo

I stumbled upon this today and did some digging and found this: https://wiki.blender.org/index.php/User:Jason_hays22/GSoC-2011#Multi-Paint

Using this, I wrote the following documentation which I will put on the manual:


*Fix deforms* is used to modify an object’s nonzero weights so its deformed vertices are at a new defined distance. This is helpful to fix deformations because when complex models are deformed to their most extreme poses, they are often visibly bumpy, jagged, or otherwise incorrectly deformed. Using this tool, you can smooth over the deformation.

To use the tool, select the vertices that you would like to move, either in edit mode or using or by using the vertex selection/mask. The operator can now be used and altered with these parameters:


Distance
The distance to move to.

Strength
The distance moved can be changed by this multiplier.

Accuracy
Change the amount weights are altered with each iteration: lower values are slower.


.. note:: Note that if it does not change, then there are no nonzero bone weights that changed to make it closer to the intended distance.

Thank you Blendify for your reply!

Now it’s a little clearer to me what these operators are for, even if I still don’t get how they can be useful in a real scenario: why should I need to multi-paint over bones if they won’t change their ratio, or what’s the need for ‘fix deform’ when I can simply smooth the jagged vertices by a brush in real time.

EDIT: perhaps I understood the use of multi-paint: supposing there are 3 bones affecting certain vertices, selecting 2 of them (bones) I can paint over their weight and let the third unchanged; though, if I’m right, I can get the same result by painting over the third (in opposite way) with auto-normalize on.
I’m right?

paolo

Ah nice find Blendify!

@sourvinos I believe if you multipaint those two bones with auto-normalise on, depending on your brush blend mode, they will equally steal weights from the third bone that affects the vertex.
If you paint on those two bones with a strength of 0.3 and ADD mode, 0.3 will be added to the weights of each of the two bones, and the third bone will have lost 0.6 weight on that vertex (0.3 + 0.3).

exactly, but if I paint on the third bone without multipaint by subtracting 0.6, if auto-normalize is active, the other two bones should be raised both by 0.3, or not?

Actually, I take back what I said. I haven’t looked at the source code to make such an assertion (about how weights are distributed under auto-normalise).
Easiest way to find out what happens exactly is by setting up a simple scene and then inspecting it after the fact. It should take less than 5 minutes x)

for now I am content to use the tools known, I do not think that multipaint and fix-deforms can be of more help.

Thank you anyway!

paolo