Sean Kim 371011c9c4 Sculpt: Initial data-oriented refactor of boundary brush
Part of #118145.

At a high level, the process for a boundary brush works as follows:
* On the first step of a symmetry pass, initialize data in the
  `StrokeCache`
  * Initializes propagation steps and relative brush factors on each
    element of the mesh
  * Initializes specialized per-vertex data for certain brushes
* Grab original position data
* Apply mask & automask values to precalculated vertex-sized factor
  array
* Filter verts that are "uninitialized" by the initial pass
* Filter verts outside of the symmetry area
* Calculate the deformation-specific transform
* Apply this transform either to the mesh directly or to the cloth
  simulation

Of the deformation types, *Expand*, *Inflate*, *Grab*, and *Smooth*
behave similarly to one another (applying a displacement), and *Bend*
and *Twist* behave similarly (applying an angular displacement).

Unfortunately, as is, this PR introduces a lot of extra, duplicated
code. Most of the brushes are similar in their behavior, but differ
slightly enough to make abstractions difficult. One potential path
forward could be to create custom classes to hold or specify necessary
data and use virtual functions on a per-node level to avoid doing this
in a hot loop.

Pull Request: https://projects.blender.org/blender/blender/pulls/125845
2024-08-06 00:09:15 +02:00
2024-08-01 10:40:48 +02:00
2024-07-26 10:26:11 +10:00
2024-08-05 14:54:54 +02:00
2024-07-30 12:38:16 +10:00
2023-12-08 13:28:13 +11:00

Blender

Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.

Blender screenshot

Project Pages

Development

License

Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.

See blender.org/about/license for details.

Description
No description provided
Readme 841 MiB
Languages
C++ 78%
Python 14.9%
C 2.9%
GLSL 1.9%
CMake 1.2%
Other 0.9%