Vertex painting in sculpt mode #67520

Closed
opened 2019-07-23 15:35:45 +02:00 by Brecht Van Lommel · 24 comments

The sculpt branch has functionality to paint vertex colors in sculpt mode. This lets us reuse brush features and implementation, as well as have brushes that can both displace and paint at the same time.

Colors vs. Attributes

Unlike vertex paint mode, this only works with per-vertex colors, not per-loop (face corner) colors, and that limitation would likely remain. Rough idea to resolve this could be:

  • Sculpt mode would be for more artistic purposes, and only support painting per-vertex color.
  • Vertex Paint becomes Attribute Paint/Edit mode. This would allow visualizing and editing general attributes besides vertex colors, for more technical purposes.
  • Mesh properties could get an Attributes panel listing user-created attributes that could be per-vertex, per-face, per-loop, with different possible data types. Current per-loop colors would just be one specific case.

This is a quite big change though, but aligns with the need for more general attributes for function nodes and volume objects in the future.

Ideally, we could then combine Attribute Paint with Weight Paint mode:
Screenshot 2019-10-28 at 14.59.05.png

And also combine them in the UI:
Screenshot 2019-10-28 at 14.51.25.png

This makes the distinction between attributes and vertex paint layers more clear.

Sculpt Mode UI

If painting brushes would be in the same toolbar as sculpting brushes, and if any brush can potentially have settings for both sculpting and painting, the UI can become complicated.

We are missing a design for how to handle this.

The sculpt branch has functionality to paint vertex colors in sculpt mode. This lets us reuse brush features and implementation, as well as have brushes that can both displace and paint at the same time. **Colors vs. Attributes** Unlike vertex paint mode, this only works with per-vertex colors, not per-loop (face corner) colors, and that limitation would likely remain. Rough idea to resolve this could be: * Sculpt mode would be for more artistic purposes, and only support painting per-vertex color. * Vertex Paint becomes Attribute Paint/Edit mode. This would allow visualizing and editing general attributes besides vertex colors, for more technical purposes. * Mesh properties could get an Attributes panel listing user-created attributes that could be per-vertex, per-face, per-loop, with different possible data types. Current per-loop colors would just be one specific case. This is a quite big change though, but aligns with the need for more general attributes for function nodes and volume objects in the future. Ideally, we could then combine Attribute Paint with Weight Paint mode: ![Screenshot 2019-10-28 at 14.59.05.png](https://archive.blender.org/developer/F7865457/Screenshot_2019-10-28_at_14.59.05.png) And also combine them in the UI: ![Screenshot 2019-10-28 at 14.51.25.png](https://archive.blender.org/developer/F7865455/Screenshot_2019-10-28_at_14.51.25.png) This makes the distinction between attributes and vertex paint layers more clear. **Sculpt Mode UI** If painting brushes would be in the same toolbar as sculpting brushes, and if any brush can potentially have settings for both sculpting and painting, the UI can become complicated. We are missing a design for how to handle this.
Author
Owner

Added subscribers: @brecht, @PabloDobarro

Added subscribers: @brecht, @PabloDobarro

Added subscriber: @WilliamReynish

Added subscriber: @WilliamReynish

We should be careful of making the whole UI very complicated to allow for a corner case use-case.

Perhaps a simple way to solve the UI issue, is to:

  • Keep Sculpt and Vertex paint as separate modes, even if they share underlying code and brush system
  • Add a toggle for certain Sculpt tools where it makes sense, to allow sculpting and painting simultaneously
We should be careful of making the whole UI very complicated to allow for a corner case use-case. Perhaps a simple way to solve the UI issue, is to: - Keep Sculpt and Vertex paint as separate modes, even if they share underlying code and brush system - Add a toggle for certain Sculpt tools where it makes sense, to allow sculpting *and* painting simultaneously

Added subscriber: @ThinkingPolygons

Added subscriber: @ThinkingPolygons

In #67520#732705, @WilliamReynish wrote:
We should be careful of making the whole UI very complicated to allow for a corner case use-case.

What you mean by "corner case use-case"?

Vertex painting is actually a very popular way of coloring concept models/sculpts, specially in zbrush. In blender it never became too popular due to the poor performance of the current vertex paint mode. Now, with this new implementation and the much better performance that it has, I believe we'll see a lot of users starting using it more and more.

Also, this vertex painting feature as it is right now, it works as a brush setting, which is great, there's really no need to create several dedicated painting brushes in sculpt mode, only one would be enough for quick access and let the user know that the feature exist. For sculpting and painting at the same time it would be just a matter of enabling that color setting on any brush.

I don't think there's room for complicated UI here? ?

> In #67520#732705, @WilliamReynish wrote: > We should be careful of making the whole UI very complicated to allow for a corner case use-case. What you mean by "corner case use-case"? Vertex painting is actually a very popular way of coloring concept models/sculpts, specially in zbrush. In blender it never became too popular due to the poor performance of the current vertex paint mode. Now, with this new implementation and the much better performance that it has, I believe we'll see a lot of users starting using it more and more. Also, this vertex painting feature as it is right now, it works as a brush setting, which is great, there's really no need to create several dedicated painting brushes in sculpt mode, only one would be enough for quick access and let the user know that the feature exist. For sculpting and painting at the same time it would be just a matter of enabling that color setting on any brush. I don't think there's room for complicated UI here? ?
Member

Added subscriber: @JulienKaspar

Added subscriber: @JulienKaspar
Member

@WilliamReynish Personally I don't think it needs to add too much clutter to the UI since it's essentially just the 2 colors & color switcher in the topbar + the blend mode in the brush options. The color palletes could also be shown in the tool settings within the brush options.
In the overall picture of brush settings that's very little to add.

And it would make sense to just make these basic vertex painting features fully available in sculpt mode instead of splitting it off into yet another mode.
Even adding not just a paint brush but the average color, smear and blur as well and visually separate them from the usual sculpt brushes wouldn't be out of the ordinary. It would be the same categorisation with the Object Mode Tools in Edit Mode being visually separated from the Edit Mode Tools.

The big problem I see is that the Toolbar is already getting pretty huge, especially with additional brushes and tools from the sculpting branch, but that's a different issue IMO since a couple (or even many) tools can be easily merged.

@WilliamReynish Personally I don't think it needs to add too much clutter to the UI since it's essentially just the 2 colors & color switcher in the topbar + the blend mode in the brush options. The color palletes could also be shown in the tool settings within the brush options. In the overall picture of brush settings that's very little to add. And it would make sense to just make these basic vertex painting features fully available in sculpt mode instead of splitting it off into yet another mode. Even adding not just a paint brush but the average color, smear and blur as well and visually separate them from the usual sculpt brushes wouldn't be out of the ordinary. It would be the same categorisation with the Object Mode Tools in Edit Mode being visually separated from the Edit Mode Tools. The big problem I see is that the Toolbar is already getting pretty huge, especially with additional brushes and tools from the sculpting branch, but that's a different issue IMO since a couple (or even many) tools can be easily merged.

Added subscriber: @zeauro

Added subscriber: @zeauro

We could have a field to associate a vertex paint brush to a sculpt brush. This way by default, we could re-use brushes already existing in vertex paint mode.
We could have a toggle in sidebar to switch from sculpt brush settings to vertex paint brush settings like in vertex paint mode.
Or there could be 2 tabs for brushes settings in sculpt mode.
This way, we keep an UI that users are already familiar with and have access to all brush settings.
In tool settings bar and right click menu, we could have what Julien said (only color + blend mode).

We could have a field to associate a vertex paint brush to a sculpt brush. This way by default, we could re-use brushes already existing in vertex paint mode. We could have a toggle in sidebar to switch from sculpt brush settings to vertex paint brush settings like in vertex paint mode. Or there could be 2 tabs for brushes settings in sculpt mode. This way, we keep an UI that users are already familiar with and have access to all brush settings. In tool settings bar and right click menu, we could have what Julien said (only color + blend mode).

What I mean is, sculpting with colors is not the main use-case of sculpt mode. It’s also not what you expect from ‘Sculpt’, making vertex painting harder to find. Having vertex painting separate from sculpt mode is not adding an extra mode, because it’s how it is today.

If we did combine the modes, we’d need to have a way to switch the toolbar so you only see sculpt or paint tools anyway, otherwise the toolbar will require lots of scrolling, making it annoying to use.

For the very rare case where you want to paint AND sculpt, we could have a toggle inside the tool options for that, hiding the color settings by default.

What I mean is, sculpting with colors is not the main use-case of sculpt mode. It’s also not what you expect from ‘Sculpt’, making vertex painting harder to find. Having vertex painting separate from sculpt mode is not adding an extra mode, because it’s how it is today. If we did combine the modes, we’d need to have a way to switch the toolbar so you only see sculpt or paint tools anyway, otherwise the toolbar will require lots of scrolling, making it annoying to use. For the very rare case where you want to paint AND sculpt, we could have a toggle inside the tool options for that, hiding the color settings by default.

Added subscriber: @SirPigeonz

Added subscriber: @SirPigeonz

Added subscriber: @AlbertoVelazquez

Added subscriber: @AlbertoVelazquez
Contributor

Added subscriber: @KenzieMac130

Added subscriber: @KenzieMac130
Contributor

I think it would benefit to embrace the new Sculpt painting system as well as keep the current vertex color painting mode.

For high poly sculpting being able to simultaneously paint colors is an incredibly useful addition.

But the old vertex paint is very useful for creating low-mid poly game assets where you can mask things off by vertices and faces in edit mode.

Requiring the user to go to Sculpt mode to modify vertex colors in the later situation would be a big inconvenience, dealing with the masking system and the possibility that you might be modifying the geo while painting, fooling with brush settings etc.

There is quite the disconnect between say: painting on a model for 3D printing or a turntable render and painting on a low poly model to drive a game shader/hide UV seams in crevasses/etc.

So while they can share similar functions, the use cases between them vary.

I think it would benefit to embrace the new Sculpt painting system as well as keep the current vertex color painting mode. For high poly sculpting being able to simultaneously paint colors is an incredibly useful addition. But the old vertex paint is very useful for creating low-mid poly game assets where you can mask things off by vertices and faces in edit mode. Requiring the user to go to Sculpt mode to modify vertex colors in the later situation would be a big inconvenience, dealing with the masking system and the possibility that you might be modifying the geo while painting, fooling with brush settings etc. There is quite the disconnect between say: painting on a model for 3D printing or a turntable render and painting on a low poly model to drive a game shader/hide UV seams in crevasses/etc. So while they can share similar functions, the use cases between them vary.

Added subscriber: @mankysee

Added subscriber: @mankysee

I'll add my two cents here: I strongly feel that the vertex paint mode should still be a separate mode since it's use cases are far more diverse than just in some sculpt/artistic applications.

In game engines use of vertex colors is ubiquitous and there should be a mode that allow you to focus on that functionality specifically(pretty much like we have a weight paint mode).

It can be called attribute paint mode or something similar to expand it's functionality beyond the vertex paint itself(like painting vertex groups for example and so on) but it shouldn't be mixed up with sculpt mode that's for sure.

I'll add my two cents here: I strongly feel that the vertex paint mode should still be a separate mode since it's use cases are far more diverse than just in some sculpt/artistic applications. In game engines use of vertex colors is ubiquitous and there should be a mode that allow you to focus on that functionality specifically(pretty much like we have a weight paint mode). It can be called attribute paint mode or something similar to expand it's functionality beyond the vertex paint itself(like painting vertex groups for example and so on) but it shouldn't be mixed up with sculpt mode that's for sure.

Added subscriber: @antoniov

Added subscriber: @antoniov

We already have the Vertex Paint as a separated mode in Grease Pencil. My first idea was reuse old Vertex Paint mode, but due the differences and that we have separated modes for Grease Pencil already, I decided to add a new mode for Grease Pencil. Mix Meshes and GPencil in the same code is not good idea, maybe initially looks good, but later the code maintenance is a nightmare.

We already have the Vertex Paint as a separated mode in Grease Pencil. My first idea was reuse old Vertex Paint mode, but due the differences and that we have separated modes for Grease Pencil already, I decided to add a new mode for Grease Pencil. Mix Meshes and GPencil in the same code is not good idea, maybe initially looks good, but later the code maintenance is a nightmare.

Added subscriber: @Andruxa696

Added subscriber: @Andruxa696

Added subscriber: @Thane5

Added subscriber: @Thane5

Added subscriber: @muhuk

Added subscriber: @muhuk

Added subscriber: @viadvena

Added subscriber: @viadvena
Member

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Julien Kaspar self-assigned this 2023-01-27 20:25:47 +01:00
Member

Closing this as it is already largely implemented or replaced with new tasks.

Closing this as it is already largely implemented or replaced with new tasks.
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 project
No Assignees
14 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#67520
No description provided.