Paint Mode: Color Fill Tools #99769

Open
opened 2022-07-16 17:41:23 +02:00 by Julien Kaspar · 3 comments
Member

NOTE: This design is still under discussion and is incomplete.

Issue

Currently there are different implementations of filling a solid color while in a mode:

  • Fill Tool (Texture Painting)
  • Fill operator (Vertex Paint Mode)
  • Color Filter (Sculpt Mode)

This needs to be reworked for consistency and to ensure more convenient and efficient workflows.

Requirements

There are certain broader features that will be required, no matter how the design of color filling looks like:

  • Fill everything that is not masked
  • Gradual Fill (Not full strength)
  • Fill via gestures (Box, Lasso, Line, Polyline)
  • Fill entire UV-islands, mesh-islands, face sets
  • Fill faces instead of pixels

There is also the common use of gradients and expand. This should be further notes down in #99770.

Goal

Key Problem

There are many different ways to give all of these tools to the user.
What we should avoid is to have a large set of tools or tool settings scattered throughout the UI.
This is already an observable problem with the existing gesture and filter tools in sculpt mode:

  • None of the tools have shortcuts
  • Picking the tool, tool-type and adjusting the settings is time consuming
  • Each tool has their own disconnected settings

Conclusion

We should aim for a more systematic approach.
All of the requirements need to be easy to understand and access.
That is easier to accomplish if there are fewer tools that are not specifically just for a single purpose.

Proposal

Instead of adding a lot of new tools/brushes and settings for filling in colors, we can rely on the current and planned masking features.

Mask -> Fill

Filling should be as instant as possible. But first you need to define what to fill.
Blender often has a strong design of "Selecting -> Operation". By strengthening the masking features via #97955 we could rely on this for color filling operations too.

Fill Operator

The most important part as a baseline is a simple operator that immediately fills in everything that is unmasked.
Currently this is implemented in Vertex Paint Mode with the shortcut Shift + K.
This could get a more convenient shortcut on the left of the keyboard.

It needs to be always clear what color will be used for the operator.
The easiest answer would be the primary color of the currently used tool/brush.
If the current brush/tool doesn’t have a primary color, then the primary color of the scene color should be used.
In that case it becomes very important that this color is somehow exposed. Otherwise there will be too much unnecessary switching between masking and painting tools.

Auto-Masking

This way of targeting specific areas is useful for any brush or tool. It already proved itself essential in Sculpt Mode.
The aim should be to use auto-masking for the fill operator as well.

It will be vital to add auto-masking support to the image editor for painting. Topology auto-masking in this case could mask UV islands instead.

Open question:

  • Is a “UV-island” auto-masking in the 3D Viewport needed or is it more convenient to initialise face sets from UV seams?
    This could save us space in the auto-masking pie menu.

Masking Modes

We also need to allow filling by faces instead of pixels.

We are already aiming to implement three masking modes in Paint Mode (#97955) and an inverted masking approach (#97903) that could also cover this use case.
With this feature it would be as easy as pressing 2 on the keyboard and using any masking tool/operator to mask faces.
The fill operator can then fill all unmasked areas, or they can be painted in more detail with any painting tool.

Gradual Filling

For this the Color Filter, fill type should still be used.
But the fill operator could also get a strength input in the adjust last operation panel.

NOTE: This design is still under discussion and is incomplete. # Issue Currently there are different implementations of filling a solid color while in a mode: - Fill Tool (Texture Painting) - Fill operator (Vertex Paint Mode) - Color Filter (Sculpt Mode) This needs to be reworked for consistency and to ensure more convenient and efficient workflows. # Requirements There are certain broader features that will be required, no matter how the design of color filling looks like: - Fill everything that is not masked - Gradual Fill (Not full strength) - Fill via gestures (Box, Lasso, Line, Polyline) - Fill entire UV-islands, mesh-islands, face sets - Fill faces instead of pixels There is also the common use of gradients and expand. This should be further notes down in #99770. # Goal ### Key Problem There are many different ways to give all of these tools to the user. What we should avoid is to have a large set of tools or tool settings scattered throughout the UI. This is already an observable problem with the existing gesture and filter tools in sculpt mode: - None of the tools have shortcuts - Picking the tool, tool-type and adjusting the settings is time consuming - Each tool has their own disconnected settings ### Conclusion We should aim for a more systematic approach. All of the requirements need to be easy to understand and access. That is easier to accomplish if there are fewer tools that are not specifically just for a single purpose. # Proposal Instead of adding a lot of new tools/brushes and settings for filling in colors, we can rely on the current and planned masking features. ### Mask -> Fill Filling should be as instant as possible. But first you need to define what to fill. Blender often has a strong design of "Selecting -> Operation". By strengthening the masking features via #97955 we could rely on this for color filling operations too. ### Fill Operator The most important part as a baseline is a simple operator that immediately fills in everything that is unmasked. Currently this is implemented in Vertex Paint Mode with the shortcut `Shift + K`. This could get a more convenient shortcut on the left of the keyboard. It needs to be always clear what color will be used for the operator. The easiest answer would be the primary color of the currently used tool/brush. If the current brush/tool doesn’t have a primary color, then the primary color of the scene color should be used. In that case it becomes very important that this color is somehow exposed. Otherwise there will be too much unnecessary switching between masking and painting tools. ### Auto-Masking This way of targeting specific areas is useful for any brush or tool. It already proved itself essential in Sculpt Mode. The aim should be to use auto-masking for the fill operator as well. It will be vital to add auto-masking support to the image editor for painting. Topology auto-masking in this case could mask UV islands instead. Open question: - Is a “UV-island” auto-masking in the 3D Viewport needed or is it more convenient to initialise face sets from UV seams? This could save us space in the auto-masking pie menu. ### Masking Modes We also need to allow filling by faces instead of pixels. We are already aiming to implement three masking modes in Paint Mode (#97955) and an inverted masking approach (#97903) that could also cover this use case. With this feature it would be as easy as pressing `2` on the keyboard and using any masking tool/operator to mask faces. The fill operator can then fill all unmasked areas, or they can be painted in more detail with any painting tool. ### Gradual Filling For this the Color Filter, fill type should still be used. But the fill operator could also get a strength input in the adjust last operation panel.
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Member
Added subscribers: @JulienKaspar, @JosephEagar, @Jeroen-Bakker, @DanielBystedt, @Limarest
Julien Kaspar changed title from Paint Mode: Fill Tools to Paint Mode: Color Fill Tools 2022-07-16 17:41:33 +02:00
Author
Member

Notes from recent module meeting:

  • Current design idea of unified filling operators and toolset
  • Key idea is to rely on Mask -> Fill as a workflow and make this as fast & intuitive as possible
  • The amount of color fill tools should be minimal and accessible as a result
  • Gesture tools would still be nice
    • Polyline is still missing and desperately needed
    • In general, color filling gesture tools will be optional
  • Expand should be more important for filling areas too
    • Expand needs to be come less unwieldy and less complex first
    • Performance issues also need to be solved
    • But the operator is great for filling face sets, mesh islands
Notes from recent module meeting: > - Current design idea of unified filling operators and toolset > - Key idea is to rely on Mask -> Fill as a workflow and make this as fast & intuitive as possible > - The amount of color fill tools should be minimal and accessible as a result > - Gesture tools would still be nice > - Polyline is still missing and desperately needed > - In general, color filling gesture tools will be optional > - Expand should be more important for filling areas too > - Expand needs to be come less unwieldy and less complex first > - Performance issues also need to be solved > - But the operator is great for filling face sets, mesh islands
Julien Kaspar added this to the Sculpt, Paint & Texture project 2023-02-08 10:20:48 +01:00
Philipp Oeser removed the
Interest
Sculpt, Paint & Texture
label 2023-02-10 09:11:15 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
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
EEVEE & Viewport
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
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
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
EEVEE & Viewport
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
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
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 Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#99769
No description provided.