What is the algorithm behind Blender's Proportional Edit?

How does Blender compute the vertex displacements during Proportional Editing?

I'm guessing it first searches for vertices within the user defined radius, then calculate somehow the weights for each of those found vertices based on degree of connectivity to the seed vertex or distance? Or does it use free form deformation approach?

A paper or reference would be helpful too.

• The beauty of it is that Blender is actually open source, so you don't need any papers or references, all you need to do is consult the source code for the tool Jan 14, 2018 at 2:12

It calculates the distance between the element you are changing. If it is within the radius the user selects it will use a falloff that the user has selected.

Basically the values of the matrix of the transformation that the user is done is influences by the distance of the other elements. As you can see here.

Possible falloffs

Note: distance = 1 - (the actual distance/radius the user selected)

Constant: 1

Random: random between (0..1)

Linear: distance

Sharp: distance^2

Root: sqrt(distance)

Sphere: sqrt(distance*2 - distance^2)

Smooth: 3*(distance^2) - 2*(distance^3)

• Should the distance calculation be distance = 1 - the actual distance / radius the user selected? Jan 15, 2018 at 1:31
• 'Smooth: 3*(distance^2) - 2*(distance^3)' means it calculates the distance for each vert within the radius and moves the vert based on this equation? Dec 17, 2019 at 10:19