2022-6-8 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.

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


  • Julien Kaspar (artist)
  • Ramil Roosileht (dev)
  • Jeroen Bakker (dev)
  • Joe Eagar (dev)
  • Daniel Bystedt (artist)



In Review

In Progress

  • :anchor: T98383 Sculpt Mode Cavity Masking

    Updated description based on feedback. Built for testing now available to download for D15122

    A potential issue that was raised:
    The “Use Curve” setting is currently not inverted when inverted cavity is toggled
    Here it would be good to gather more feedback from artists of what’s expected. The current behaviour might be confusing.

    For sculpting brushes the cavity auto-masking is hard to predict. This is not as much a problem with painting but sculpting brushes depend much more on small nuances in the mask. Feedback on how drastically needed a visual auto-mask is will be important here.

    Previewing the cavity auto-mask with an overlay would potentially not be a target though.
    It would be far too taxing in the viewport to show the entire cavity mask. While using it the cavity mask is only generated under the brush cursor once using a brush/tool.
    We could preview it within the brush cursor radius though. This could help but is not something that would be intuitive to leave enabled all the time.
    It’s also only visible while hovering the cursor over the mesh and not while changing the settings.
    This needs more discussion and prototyping.

    For material creation the cavity mask requirements are much higher. Here we should wait for baking and the layered textures design. The auto-masking features are meant as a super fast and intuitive alternative to a strict baking/masking workflow.
    The other alternative right now is to use the Dirty Mask/Colors operators.

  • :anchor: T96225 PBVH image texture painting implementation
    Julien added related and new tasks to the description.

  • :anchor: T97352 3D texturing: Fix seam bleeding

    Development goes slowly due to the Blender release and related tasks. Currently working on being able to paint on a cube. After that we can enhance it to suzanne, but keep track on the quality along the way.

  • :anchor: T97961 Tip Roundness: Radius improvement
    Joe can help out Ramil with fixing the artefacts.
    Then this can be approved.

  • :anchor: T97959 Color Filter: Sliding UI
    Ramil added basic visual support of the slider UI.
    There are still aspects of the implementation missing like custom values and enabling overshoot.

    The question was raised on how we should handle non-linear sliders like Smooth and cloth filters.
    For cloth filters we agreed that we should not use sliders and instead other visual feedback in UI. That’s because they are always live, incremental effects.
    For the Smooth filter type Joe will test with relating the incremental use of filters directly to the mouse position on the screen from left to right. This would make the filters much more predictable and make it possible to reverse and tweak the effect in one operation.

High Priority Bugs


Next To Do’s

New Tasks

New design tasks that need to be discussed and refined. Once approved they can be worked on.

  • :anchor: T98589 Paint Mode: Color Sampling
    This task was not discussed in detail.

  • :anchor: T98590 Paint Mode: Eraser Tool

    Since erasing will sometimes end as a destructive action to all RGBA channels, do we hide option to add alpha from the tool?
    If so, we need to make this available another way then
    This would likely be by painting RGBA channels directly. This would also improve game dev workflows.
    (More about this in the Alpha Auto-Masking part)

    But we need to be aware of use cases to still add/remove alpha. For gamedev the alpha channel is often used for other purposes than transparency.

    One possible fix: We can prevent destructive erasing by changing the behaviour directly in the color mixing of brushes & tools. This would prevent erasing the RGB values on color attributes and most image types (Including newly created images that aren’t saved yet).
    When erasing on pre-multiplied images on the other hand, we could still allow erasing alpha channel in an expected way within Blender. Afterwards when saving the file it would cause data loss that should’ve happened already while erasing.
    Here we must show a warning message to the user, which gives them the chance to save to another image format or ways to export before saving.

  • :anchor: T98592 Paint Mode: Alpha Auto-Masking

    It was pointed out that the use case for this feature is actually more wide than a simple alpha auto-mask. We could make the feature for any channel.
    This would solve game-dev use cases of painting individual channels too.
    This should then also affect color sampling.

    Going for an auto-mask option would currently also break compatibility with image editor. This puts extra pressure on updating image editor before Paint Mode release.
    We agreed it should still be a mode wide setting as opposed to per texture/color attribute or per brush.

    For the UI. Instead of hiding it in the options panel it could be made very visible in the header or in the brush settings (with a toggle to use it unified for all tools and brushes in the scene).
    The exact design still needs to be developed further.

  • :anchor: T98593 Paint Mode: Backface Occlusion

    We agreed that this makes sense as a mode-wide auto-mask option.
    Joe already implemented this in sculpt-dev. It just requires a scene wide setting for the occlusion falloff.
    Both area and view normal occlusion are good to implement since they benefit very different brushes.
    View normal occlusion is more useful for projection painting while area normal will be more used for sculpting brushes.

    This new feature could completely replace “Front Faces Only”. Occlusion auto-masking is way faster to toggle and potentially doesn’t have performance downsides compared to Front-Faces Only.

    This feature should then be the new basis for the Paint Mode occlusion settings.

  • :anchor: T98601 Paint Mode: Clone Brush
    Screen-space would be the easiest way to do the target picking. A 3D space clone target picking is possible too but should not be the initial goal.

  • :anchor: T98607 Pixel Brush Tool
    A new brush tool by Juanfran, mainly intended for the image editor. A 3D viewport implementation is still unclear but possible. This will be further discussed online with Juanfran.

Other Topics

Erase fill

There is currently not way of erasing all unmasked colors. We can add a new color filter fill type to “Erase”. This is definitely needed functionality and should get a task.

Color management of color attributes

Alpha values are not displayed properly when shown as a direct b/w output. This is a known issue though.
If we try to predict how the current data should be displayed we might end up making color drawing confusing and inconsistent. Displaying linear colors properly is a bigger topic to officially support.

For now we can optionally show alpha channels on color attributes as transparency in workbench (Just like image textures).For that we need to check when this would be useful though.

Elastic deform currently uses the wrong math

Joe was able to confirm the that current Elastic tools are not working correctly by Kelvinlet deformations.
He will track down the issue later.

Too many auto-masking features?

The current UI is restricted to 8 entries per pie menu.
We need to be aware of this limitation and work with it or propose an alternative design for the UI.

Current and planned entries for auto-masking include:

  1. Topology
  2. Face Sets
  3. Boundary Boundary
  4. Face Set Boundary
  5. Occlusion (Area)
  6. Occlusion (View)
  7. Cavity
  8. (Invert Cavity)
    • Should be removed since we shouldn’t include sub toggles of auto-masking options.
  9. Alpha Channel
    • Should not be an auto-masking setting and instead exposed somewhere else.

For now we agree to try to keep it to 8 options.
But we should be aware of this in the future.