Sculpt Brush Selection UI Design #80384
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
24 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#80384
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This task proposes a series of changes at UI and code level to make a new brush management system for sculpt mode that is compatible with the design of the new tools.
The focus of this task is to deliver Blender with a default brush library and a usable UI for the new tools as soon as possible, task focuses only on the UI related topics and not on how brush presets are stored, imported/exported and managed. The task for that is #70412.
Remove the Tool/Brush classification in the toolbar
Currently, brushes are classified in the toolbar organized by tools, some of these tools include multiple deformation types and modes inside them that can produce effects that are not related to the functionality of the tool, which are currently not directly accessible from the UI without modifying a preset.
Sculpt Mode should only have one Brush Tool in the toolbar. This tools should make accessible all the presets of a default brush library from a single place. In order to achieve this, what we currently have as sculpt tools in the code should be called deformers, stored in a deformer_type in the brush, and they should not be directly accessible from the toolbar UI. The user will directly select brush presets with the correctly preconfigured deformer when using the Brush Tool.
For advanced users, all the deformer type and options will still be available in the properties panel, so any brush preset can be created from any other one.
The experimental sculpt vertex paint brush will also include a paint_type which includes different tools that can apply colors to the mesh. This way, by adding a ##SCULPT_DEFORMER_NONE## and ##SCULPT_PAINT_NONE## it will be possible to create presets that paint, deform or both at the same time, supporting all kind of combinations.
Global Brush Palette and Brush Switching
Sculpting requires changing brushes way more often than painting, and the brush variety is also more extensive, so there needs to be a fast way to switch brush presets available in the UI after merging all sculpt tools into the Brush tool.
A global brush pallets will list all brushes in the brush library, that can be called from any place in the viewport when using the Brush Tool.
On top of this, there should be a way to add brush presets directly to the toolbar (or to a new UI element that can display brush presets icon over the viewport).
Having only a global brush palette without an asset manager can be problematic for fast brush switching, as the default Blender brush library will include a lot of presets for the new tools that are not relevant in most cases (like 30 cloth brushes that are only relevant when working with cloth sculpting assets).
With the asset manager, it should be possible to include as many brushes as we consider by default organized in folders and let append them to the brush palette when they need them.
Custom Topbar
The topbar should be the main way to tweak a brush in a controllable a safe way. Now it displays radius, strength and popovers with all brush properties, which some of them are not relevant when a particular deformer is enabled. For example, when using the cloth brush, texture options are not relevant and stroke options can break the intended behavior of the simulation.
Presets should be able to define a set or properties that are exposed in the topbar, with a particular design intention and use case in mind, and hide everything else.
For example, an preset called ¨Pose Inverse Kinematics¨ should display directly in the topbar the radius (used to control the bone size) the IK segments, the smooth iterations and if it should keep the anchor point. All these options can be safely used in any combination and make sense to tweak the behavior of that particular presets in a meaningful way, without exposing directly to the user all the options of the pose deformer.
There should be a way to add the properties to the topbar for users to create their own presets, probably a right click menu with a “expose in topbar” option should work.
Smooth And Invert Modes
Currently, there are quite some brush tools that have custom deformers for invert and smooth hardcoded in the tool code. (For example, the Face Set tools deforms the mesh smoothing the face sets boundaries when using shift, the pose brush changes the transform mode when pressing Ctrl). The brush swltching system should allow to remove this hardcoded configurations, but I'm still not sure how to do it. A possible option would be to allow users to define any other preset as the inverted and smooth modes of a brush and copy to this new preset all the properties exposed in the topbar when the mode is enabled, so both modes are in sync with the modified properties.
Plan of action
Added subscribers: @PabloDobarro, @JulienKaspar
Added subscriber: @brecht
Can the title of the task be changed to indicate that this is about the UI for selecting and using brushes, rather than managing brushes?
What would remain in the toolbar? Would Mask and Draw Face Sets remain as brushes, and if so, does calling them "deformers" make sense?
I guess this does not mean removing the toolbar entirely, it would still remain but with only a handful of tools.
Sculpt Brush Management Designto Sculpt Brush Management UI DesignThe toolbar will still have the gesture tools, transforms, annotate, filters, mask by color... This will basically merge all tools of the first block (everything that uses the ##paint_stroke## operator and brush presets). Draw face sets and mask will also be merged into the Brush Tool.
Agree, deformer is probably not the best name, maybe we can add another property for brushes that modify "data" or find more generic name (simplify and erase displacement also fall into this category).
We can also add the ability to add brush presets directly to the toolbar, but I would say that it would be better to add a separate UI element for this which only appears when the brush tools is selected.
Sculpt Brush Management UI Designto Sculpt Brush Selection UI DesignAdded subscriber: @ErickNyanduKabongo
Added subscriber: @TheRedWaxPolice
Added subscriber: @Wesley-Rossi
It's not just about the name, it's also that those brushes can't be combined with a paint tool in a single brush, and don't belong in either the deform or paint category.
I think there would need to be brush types like:
And then for the Sculpt / Paint brush type, you can select a deform type and/or paint type.
I think adding brushes directly to the toolbar should be avoided, it makes the design fuzzy. The asset browser could show the brushes, if some users want to have them always visible? It wouldn't be an overlay in the 3D viewport, but I think it's pretty standard to do it in an asset browser, and the 3D viewport already has many overlay elements.
In that case, it would make sense to add another enum property called something like ##target_data## with values like ##TARGET_DEFORM_PAINT##, ##TARGET_MASK##, ##TARGET_FACE_SETS##. This will help to organize the code even further because it will be possible to know which data brushes are going to change just by checking that property to use the correct undo type, mesh restore and so on, without adding checks all over the code. Then, for a brush with ##TARGET_DEFORM_PAINT##, it can still have a deform type, subtype and paint mode.
I also don't like the idea of adding the presets to the toolbar itself, but this will depend on how the asset browser final UI is going to look. I was imagining something like an extra menu on top of the toolbar or a bar in the bottom of the viewport. In the first case, it should not take much more space than what we currently have.
Another option could be adding this as a tab in the N panel.
Added subscriber: @xrg
About a month ago I was fiddling with this design but abandoned it.
The idea is you can drag and drop brushes into 8 slots that show up in the RMB-menu. Krita has a similar RMB-Menu for brushes, but also incorporates custom tags, so you can easily swap between entire sets of brushes e.g. sketch brushes or watercolor brushes. Might be worth looking at for inspiration if you haven't messed with Krita much.
An attempt to organize the tool bar a bit better. Not all the tools conveniently fit, though (especially recent ones).
Added subscriber: @ckohl_art
Added subscriber: @Frozen_Death_Knight
I think it would be good consider that certain tools are available through modifiers that can be changed during work. I.e. ctrl modifier allows you to pick Mask Brush/Lasso/Box/Line, Hide Lasso/Box/Line, Trim Lasso/Box/Line, etc.,etc. Same for shift for smoothing tools and sharpening tools. Being able to use the shift version of Slide Relax with Autosmooth (much better surface smooth than current surface smooth imo), the shift version of smooth face sets boundaries, mask smoothing from the Mask Brush, Surface Smooth, and also the new intensify details setting for the Smooth Brush using alt among others with any brush would be an absolutely fantastic feature.
This way you always have access to more than one tool at a time with ways to allow you to sort these tools based on modifier keys. You have the main brushes as one tool, then shift has its own section of tools in a single list and then ctrl with the examples I gave earlier. Alt brushing could be customisable through the new brush settings UI where you can switch out effects and also allow you to change stuff like Falloff for the two modes (maybe you want a strong Falloff with regular brushing while alt brushing has very weak Falloff, for instance).
At most you would need the same number of tools as there are modifier keys on the left toolbar. Also, since you can already use modifier combinations like ctrl+shift, ctrl+alt, and more there is a lot of possibilities when designing the new system with this kind of customisation.
Added subscriber: @SavMartin
You have seen this development that is doing weeks ago??
https://twitter.com/jfranmatheu/status/1302237084191805441
Added subscribers: @jfmatheu, @juang3d
Oh yes!
This development feels amazing, I think @jfmatheu is doing it as an addon, but having this UI for brushes in general as a native implementation would be amazing :)
Added subscriber: @GeorgiaPacific
Added subscriber: @hlorus
Added subscriber: @txo
Added subscriber: @Diogo_Valadares
Added subscriber: @wevon-2
Although it all started with the design of the icons for version 2.91, I would like to make a few notes about the organization of the sculpture tools.
For one thing I love the organization of xrg, grouping all the bump modeling brushes together as presets.
I think that the mask concept should be reserved for when we have layers of modeling and painting, and replace it with "frozen".
There should also be some guidelines for creating the icons, since the inset is sometimes interpreted as a rectangular projection and sometimes it means that it affects the entire mesh.
Finally, as the image shows, I would organize the brushes by function and affectation. Although functions are missing and the icons can be improved, I think it can be a good way to structure them. Perhaps the affectation could be a submode of the function.
Well If you like this kind of widget for sculpt we can work together to design - a maybe unified - one for master, in a way that it can coexist with Blender UI/UX the better, that, is, in the Blender way.
@PabloDobarro
It is an addon but the concept could be really simple to add in C. The most mysterious thing for me is the gpu shaders in C source, cause never touched/saw that, only in python so maybe it's similar in a more abstract way, but having the glsl (for example of the color picker rectangle and ring) as I have should be easy to add with some guiding and/or exploring into that matter.
My only concern is if such interface can break the style of Blender UI making it not eligible for master, so to not waste time in developing it we should explore and design it in a Blender way that push forward the idea, that is, if it's a real interest for you into implementing that kind of widgets.
Since the organization of the brushes is being rethought, I make a drastic proposal.
Added subscriber: @SirPigeonz
I have made an approximate representation of how the above described would be distributed on the screen.
It's about having the minimum Active Tools, three submodes and expose the method.
Active Tools: Sculpt, Transform, Simulate, Colorize, Mask, Hide, Crop, Face Sets, Sample, Annotate.
As in Edit mode I would add three submodes: Brush stroke, Shape Projection, Object affectation. And with 1,2,3 of the keyboard you would quickly access these submodes.
Although it may not seem like it, they can be common to all tools, even those for sculpture. For example, Shape Projectión + Sculpt Tool could execute a certain number of times a displacement on the projected area, and with Sample obtain the average color.
The Methods could be found under a Pie Menu on key 4.
These changes imply a total restructuring, and I find their accommodation difficult, but I hope you find it interesting.
There are many loopholes like:
Even so, I believe that the proposal is understood, and if necessary it can be specified more.
Added subscriber: @shinyuu
Added subscriber: @AlbertoVelazquez
They are an old mockups that I made one year ago, but I think that the basic ideas still working. Please, ignore the other parts of the interface because it was part of a bigger proposal.
And other shape for the popUp for brushes
IF you need some help for mockups I can help you.
Added subscriber: @RobertoRoch
Added subscriber: @KINjO
Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'
This task needs to be updated for the brush assets project.
Added subscriber: @Nika-Kutsniashvili
Currently this is being addressed as part of the brush assets project: #116338