Vertex Paint ➔ Paint menu ➔ Smooth Vertex Colors could be improved #70038

Open
opened 2019-09-18 20:00:04 +02:00 by Metin Seven · 21 comments

System Information
Operating system: Windows 10 Pro 64-bit
Graphics card: NVIDIA GeForce RTX 2080 Ti

Blender Version
Tested: Blender 2.81 Alpha, September 18, 14:29:45 - b962aca800
Worked: never

Short description of error
Vertex Paint ➔ Paint menu ➔ Smooth Vertex Colors tool does not smooth other than direct loop neighbors.

Exact steps for others to reproduce the error

  1. Divide the default cube a few times (apply if subdivision is done with modifier).
  2. Enter Vertex Paint mode.
  3. Paint an area with black.
  4. Apply Paint menu ➔ Smooth Vertex Colors.
  5. The vertex paint is not smoothed other than direct loop neighbors.

Here is some clarification as the descriptions above are not very clear (I work with vertex colors very regularly and still came out confused by reading this post).

  • The Smooth Vertex Colors command will have visible results if it is run on vertex colors that have been applied per-face (by first selecting the desired faces in Edit mode, and then filling them with colors in Vertex color mode with the face filter enabled). Think of these as "harsh" vertex colors. When such vcols exist, then the smooth operation will indeed smooth out the vcol data so that the harsh separation between painted faces will be smoothed out, blending it with the surrounding faces.
  • But if the command is run on vcol data that has been painted on using the paint brush or on vcol generated by the "dirty vertex colors" command then nothing will happen as the vcols will already be point-based.

Therefore there is no bug here, just some very confusing naming of the command and a lack of clarity when the command is run but nothing happens. For any user working with painted-on vertex colors, it will indeed seem like nothing is happening at all since one would expect some sort of global smoothing to be applied.

Part of the confusion is also coming from the fact that this command sits just below "Dirty Vertex Colors" in the menu, which generates smooth, per-vertex vcol data. Meaning that for a user exploring vcol mode by trying one feature after the next, "smooth vertex colors" will almost always feel like it is doing nothing at all (unless the user first applied some vcol using face masking, which is extremely unlikely).

If anything the tooltip and/or the menu entry could be changed for clarity :

  • The menu item name could be renamed from "Smooth vertex colors" to "Smooth harsh per-face vertex colors"
  • The tooltip could be changed from "Smooth colors across vertices" to "Smooth colors across vertices. Only operates on harsh, per-face vertex colors".

And then of course it would be great to have a new feature altogether to blur vcols globally, similarly to what the blur brush does.

**System Information** Operating system: Windows 10 Pro 64-bit Graphics card: NVIDIA GeForce RTX 2080 Ti **Blender Version** Tested: Blender 2.81 Alpha, September 18, 14:29:45 - b962aca8003d Worked: never **Short description of error** Vertex Paint ➔ Paint menu ➔ Smooth Vertex Colors tool does not smooth other than direct loop neighbors. **Exact steps for others to reproduce the error** 1. Divide the default cube a few times (apply if subdivision is done with modifier). 2. Enter Vertex Paint mode. 3. Paint an area with black. 4. Apply Paint menu ➔ Smooth Vertex Colors. 5. The vertex paint is not smoothed other than direct loop neighbors. Here is some clarification as the descriptions above are not very clear (I work with vertex colors very regularly and still came out confused by reading this post). - The Smooth Vertex Colors command will have visible results *if* it is run on vertex colors that have been applied per-face (by first selecting the desired faces in Edit mode, and then filling them with colors in Vertex color mode with the face filter enabled). Think of these as "harsh" vertex colors. When such vcols exist, then the smooth operation will indeed smooth out the vcol data so that the harsh separation between painted faces will be smoothed out, blending it with the surrounding faces. - But if the command is run on vcol data that has been painted on using the paint brush or on vcol generated by the "dirty vertex colors" command then nothing will happen as the vcols will already be point-based. Therefore there is no bug here, just some very confusing naming of the command and a lack of clarity when the command is run but nothing happens. For any user working with painted-on vertex colors, it will indeed seem like nothing is happening at all since one would expect some sort of global smoothing to be applied. Part of the confusion is also coming from the fact that this command sits just below "Dirty Vertex Colors" in the menu, which generates smooth, per-vertex vcol data. Meaning that for a user exploring vcol mode by trying one feature after the next, "smooth vertex colors" will almost always feel like it is doing nothing at all (unless the user first applied some vcol using face masking, which is extremely unlikely). If anything the tooltip and/or the menu entry could be changed for clarity : - The menu item name could be renamed from "Smooth vertex colors" to "Smooth harsh per-face vertex colors" - The tooltip could be changed from "Smooth colors across vertices" to "Smooth colors across vertices. Only operates on harsh, per-face vertex colors". And then of course it would be great to have a new feature altogether to blur vcols globally, similarly to what the blur brush does.
Author

Added subscriber: @MetinSeven-1

Added subscriber: @MetinSeven-1

#92966 was marked as duplicate of this issue

#92966 was marked as duplicate of this issue
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Philipp Oeser self-assigned this 2019-09-18 21:27:28 +02:00
Member

I did 57e0e520e8 (and reading this report now I see, that I missed an optimization in vertex_color_smooth_looptag which I will fix in a bit), but cant really reproduce this operator behaving differently than 2.80 or 2.79 even.
I might be blind, but check (this should work with no mask, face mask, vert mask...)
#70038.blend

Do you have an example .blend that behaves differently in master vs. 2.80 (or 2.79)?

I did 57e0e520e8 (and reading this report now I see, that I missed an *optimization* in `vertex_color_smooth_looptag` which I will fix in a bit), but cant really reproduce this operator behaving differently than 2.80 or 2.79 even. I might be blind, but check (this should work with no mask, face mask, vert mask...) [#70038.blend](https://archive.blender.org/developer/F7756684/T70038.blend) Do you have an example .blend that behaves differently in master vs. 2.80 (or 2.79)?
Author

Hi Philipp,

Thanks for picking this up.

Come to think of it I believe Smooth Vertex Colors worked in a previous version of the 2.81 alpha. I don't remember using it prior to 2.81, because I've been working with 2.80 since last year, and switched to the 2.81 alpha the moment it became available. I just assumed it still works correctly in the 2.8 release version, sorry for the confusion.

You should see an overall blur across all vertex colors, particularly visible along borders of painted areas. Right now nothing happens at all.

Hi Philipp, Thanks for picking this up. Come to think of it I believe Smooth Vertex Colors worked in a previous version of the 2.81 alpha. I don't remember using it prior to 2.81, because I've been working with 2.80 since last year, and switched to the 2.81 alpha the moment it became available. I just assumed it still works correctly in the 2.8 release version, sorry for the confusion. You should see an overall blur across all vertex colors, particularly visible along borders of painted areas. Right now nothing happens at all.
Author

Hmm... I tried your example scene, and in there the Smooth Vertex Colors tool works.

My mesh has a much higher polygon count than your scene's plane example, but no matter how much I zoom in on the mesh and no matter how many times I repeat Smooth Vertex Colors, no change is visible.

I don't mind sending you my scene, but I'd rather not post it publicly. Is there a private way to get the scene to you?

Thanks.

Hmm... I tried your example scene, and in there the Smooth Vertex Colors tool works. My mesh has a much higher polygon count than your scene's plane example, but no matter how much I zoom in on the mesh and no matter how many times I repeat Smooth Vertex Colors, no change is visible. I don't mind sending you my scene, but I'd rather not post it publicly. Is there a private way to get the scene to you? Thanks.
Author

P.S.: I've tried repeating the steps I described in my initial bug report above, and even on a cube that's not subdivided, if you paint one vertex in a color, applying Smooth Vertex Colors does nothing.

Somehow only your example scene's plane does show any result from Smooth Vertex Colors. Did you fill the faces using Face Selection Masking? I'm simply painting on vertices, without masking.

P.S.: I've tried repeating the steps I described in my initial bug report above, and even on a cube that's not subdivided, if you paint one vertex in a color, applying Smooth Vertex Colors does nothing. Somehow only your example scene's plane does show any result from Smooth Vertex Colors. Did you fill the faces using Face Selection Masking? I'm simply painting on vertices, without masking.

Added subscriber: @TheRedWaxPolice

Added subscriber: @TheRedWaxPolice

It seems like it only works if you paint using the paint mask..

It seems like it only works if you paint using the paint mask..
Author

That seems to be the case indeed. If the only purpose of Smooth Vertex Colors is to smooth absolute, mask-filled faces to their directly surrounding vertices, then the function works. But the tool name suggests it will smooth / blur all vertex paint, which would be much more useful, eliminating the need to manually blur everything.

That seems to be the case indeed. If the only purpose of Smooth Vertex Colors is to smooth absolute, mask-filled faces to their directly surrounding vertices, then the function works. But the tool name suggests it will smooth / blur all vertex paint, which would be much more useful, eliminating the need to manually blur everything.

Added subscriber: @moisessalvador

Added subscriber: @moisessalvador

My understanding is the same. It's used to blur face corner colors into all the adjacent corners, but it doesn't actually blur like in Weight paint or with the blur brush.

My suggestion: Rename this one to Smooth corners, and bring Smooth from Weight paint into Vertex paint.

My understanding is the same. It's used to blur face corner colors into all the adjacent corners, but it doesn't actually blur like in Weight paint or with the blur brush. My suggestion: Rename this one to Smooth corners, and bring Smooth from Weight paint into Vertex paint.
Author

I agree with @moisessalvador . Renaming the tool to something like 'Smooth edges' would avoid confusion.

A blur all vertex colors function would definitely be very useful. You could also use the algorithm that's used for smoothing a Sculpt Mode mask in 2.81. Preferably the tool should options such as blur strength and iterations.

Thanks.

I agree with @moisessalvador . Renaming the tool to something like 'Smooth edges' would avoid confusion. A blur all vertex colors function would definitely be very useful. You could also use the algorithm that's used for smoothing a Sculpt Mode mask in 2.81. Preferably the tool should options such as blur strength and iterations. Thanks.
Author

... And to complement a Blur All Vertex Colors function, a Sharpen All Vertex Colors function would also be very welcome.

Thanks.

... And to complement a Blur All Vertex Colors function, a Sharpen All Vertex Colors function would also be very welcome. Thanks.
Member

OKi, summing it up we all agree that this tool could be improved (I agree and see the usecases for this).
But we should also note that this was always working like that, so stating something like Worked: 2.80 is just wrong...

I'll keep this as a TODO [should be fairly straightforward to implement], but deny it is a bug :)

OKi, summing it up we all agree that this tool could be improved (I agree and see the usecases for this). But we should also note that this was always working like that, so stating something like `Worked: 2.80` is just wrong... I'll keep this as a TODO [should be fairly straightforward to implement], but deny it is a bug :)
Philipp Oeser changed title from Vertex Paint ➔ Paint menu ➔ Smooth Vertex Colors is broken to Vertex Paint ➔ Paint menu ➔ Smooth Vertex Colors could be improved 2019-09-19 09:51:25 +02:00
Author

Thanks Philipp!

Thanks Philipp!
Philipp Oeser removed their assignment 2020-11-17 13:32:22 +01:00
Member

Sorry this has been lying around for so long, will step down to not block others looking into this

Sorry this has been lying around for so long, will step down to not block others looking into this
Member

Added subscribers: @kursadk, @PratikPB2123

Added subscribers: @kursadk, @PratikPB2123

Added subscriber: @pior_o

Added subscriber: @pior_o

Here is some clarification as the descriptions above are not very clear (I work with vertex colors very regularly and still came out confused by reading this post).

  • The Smooth Vertex Colors command will have visible results if it is run on vertex colors that have been applied per-face (by first selecting the desired faces in Edit mode, and then filling them with colors in Vertex color mode with the face filter enabled). Think of these as "harsh" vertex colors. When such vcols exist, then the smooth operation will indeed smooth out the vcol data so that the harsh separation between painted faces will be smoothed out, blending it with the surrounding faces.
  • But if the command is run on vcol data that has been painted on using the paint brush or on vcol generated by the "dirty vertex colors" command then nothing will happen as the vcols will already be point-based.

Therefore there is no bug here, just some very confusing naming of the command and a lack of clarity when the command is run but nothing happens. For any user working with painted-on vertex colors, it will indeed seem like nothing is happening at all since one would expect some sort of global smoothing to be applied.

Part of the confusion is also coming from the fact that this command sits just below "Dirty Vertex Colors" in the menu, which generates smooth, per-vertex vcol data. Meaning that for a user exploring vcol mode by trying one feature after the next, "smooth vertex colors" will almost always feel like it is doing nothing at all (unless the user first applied some vcol using face masking, which is extremely unlikely).

If anything the tooltip and/or the menu entry could be changed for clarity :

  • The menu item name could be renamed from "Smooth vertex colors" to "Smooth harsh per-face vertex colors"
  • The tooltip could be changed from "Smooth colors across vertices" to "Smooth colors across vertices. Only operates on harsh, per-face vertex colors".

And then of course it would be great to have a new feature altogether to blur vcols globally, similarly to what the blur brush does.

Here is some clarification as the descriptions above are not very clear (I work with vertex colors very regularly and still came out confused by reading this post). - The Smooth Vertex Colors command will have visible results *if* it is run on vertex colors that have been applied per-face (by first selecting the desired faces in Edit mode, and then filling them with colors in Vertex color mode with the face filter enabled). Think of these as "harsh" vertex colors. When such vcols exist, then the smooth operation will indeed smooth out the vcol data so that the harsh separation between painted faces will be smoothed out, blending it with the surrounding faces. - But if the command is run on vcol data that has been painted on using the paint brush or on vcol generated by the "dirty vertex colors" command then nothing will happen as the vcols will already be point-based. Therefore there is no bug here, just some very confusing naming of the command and a lack of clarity when the command is run but nothing happens. For any user working with painted-on vertex colors, it will indeed seem like nothing is happening at all since one would expect some sort of global smoothing to be applied. Part of the confusion is also coming from the fact that this command sits just below "Dirty Vertex Colors" in the menu, which generates smooth, per-vertex vcol data. Meaning that for a user exploring vcol mode by trying one feature after the next, "smooth vertex colors" will almost always feel like it is doing nothing at all (unless the user first applied some vcol using face masking, which is extremely unlikely). If anything the tooltip and/or the menu entry could be changed for clarity : - The menu item name could be renamed from "Smooth vertex colors" to "Smooth harsh per-face vertex colors" - The tooltip could be changed from "Smooth colors across vertices" to "Smooth colors across vertices. Only operates on harsh, per-face vertex colors". And then of course it would be great to have a new feature altogether to blur vcols globally, similarly to what the blur brush does.

Removed subscriber: @moisessalvador

Removed subscriber: @moisessalvador
Julien Kaspar added this to the Sculpt, Paint & Texture project 2023-02-08 10:48:53 +01:00
Philipp Oeser removed the
Interest
Sculpt, Paint & Texture
label 2023-02-10 09:12:47 +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
7 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#70038
No description provided.