2022-10-18 Sculpt/Texture/Paint Module Meeting

Practical Info

This is a weekly video chat meeting for planning and discussion of development related to the sculpting and painting in Blender. Any contributor (developer, UI/UX designer, writer, …) working on these features in Blender is welcome to join and add proposed items to the agenda.
Write us a message in the module chat if you’re interested.

For users and other interested parties, we ask to read the meeting notes instead so that the meeting can remain focused.


  • Julien Kaspar
  • Joe Eagar
  • Bastien Montagne
  • Daniel Bystedt


Since Last Meeting

  • The Module page has been updated to show both Julien and Joe as coordinators of the module.

  • Moved :anchor: T99615 Sculpt Paint: Smoothing Strength to long term workboard for now. The reasoning is that it’s quite orthogonal to the brush asset project and has in itself bigger implications for the brush engine refactor. See comment on task.
    Joe pointed out that we could move towards the sculpt-dev implementation of referring to a mode wide smoothing strength instead of any other brush.
    We could also move away from referring to the smooth brush completely for better code.
    A more generic unified system is also on the table but would be a way bigger change.
    Conclusions need to be reached another time.

  • Further discussion on :anchor: T101623 Deleting the default cube breaks face set initialization with joining objects. Marked as a Design task from now.
    Joe and Hans are working on a cleanup patch. Otherwise the behavior is properly working.

  • Added :anchor: T101798 Mask from Cavity blurring artefacts.
    Joe will try to improve the quality by using cotangent weights.

  • Pablo created :gear: D16241 UI: Add Vertex Group and Color Attributes selector in 3D Viewport.
    This could be unified with Jeroen’s canvas picker UI.
    We also need to consider the current viewport color behavior in sculpt mode for this and what the plan is there. Eventually we don’t want sculpt mode to switch the viewport color setting, but make it more consistent with the other modes. This feature lead to a solution.

  • New High Level design task for Brush Asset:
    :anchor: T101895 Brush Asset Project

High Prio Bugs

In Review

In Progress

  • :anchor: T101593 Auto-Masking Popover for the Header
    Main patch landed. There are still missing changes is the Cavity Invert behavior update:
    Pie Menu interaction will remain unchanged (Toggle Cavity and Cavity(Inverted)). Instead the pie menu can execute operators to ensure the correct auto-masking settings are toggled.
    The auto-masking settings will instead present the cavity toggle as the top level toggle. “Invert” will be a sub-setting to invert the cavity mask. This means cavity and invert will no longer be mutually exclusive toggles.)
  • :anchor: T98070 Improved Rake functionality
    Joe is working on it now.

To Do’s


  • Roll image mapping
  • Remaining face set optimizations


  • Brush Asset UI/UX
  • Sculpting & Painting Manual update


  • Technical Design of Brush Asset Project


  • Occupied with Blender conference
  • Further test auto-masking features and maybe demo material

Other Topics

Brush Engine Refactor

We should at some point soon focus on incrementally refactoring the entire brush and sculpting code.
Otherwise it will be hard to add any more features to it and maintain it all.

Brush properties and improved unified settings are things we want to push for, especially for the goal to cherry-pick settings of brush assets.
Could be done separately to the underlying refactor, but not wise to do so.

Sculpt-dev was used for prototyping and working out the design for the intended brush properties and unified settings.
Since these mainly rely on RNA this would be doable to implement.
But we need to review the current implementation and design to see how we can work this into master.

Moving forward we need to define a high level design first and then break down into smaller goals?
(The brush properties being part of that)

High level design = Divide current code into logical blocks and how they need to be used. A global architecture that each tool/brush can access.
How we handle the stroke, tool and resulting data.
Brecht, Jeroen, Bastien and Joe have insights on this but this needs a workshop and scheduled priority.