Page MenuHome

Vertex color option in Shading Popup
Open, Confirmed, HighPublic

Description

Previously in Blender 2.7x we had the option to enable "Texture Solid" in the Viewport shading options. This would display the currently applied texture on the objects but also the active vertex colors.


While this option got transitioned to Blender 2.8, it only did for previewing textures. In the new viewport shading options there is still no option to display all active vertex colors on each object.
This means, unless a Material setup in Eevee is used to display only the active Vcolors, there is no way to do this in Blender 2.8.
Adding "VColor" to the "Color" options in the Shading Popup would fix this.

Preferably the option should be available for all shading modes including MatCap.

Details

Differential Revisions
D4694: Workbench: Support Active Vertex Color
Type
To Do

Event Timeline

I'm not sure it should do this - in fact I think it should not. The way it's set up, is that the thing that the mode influences (texture, vertex color, weight) is an mode-overlay.

If you want to combine textures and vertex colors in a certain way, you can make a material that does this and disable the overlay. Then you can paint and see the result of whatever material setup you have.

That's one of the nicest things about our new more powerful viewport - we don't have to add these kind of hard coded hacks.

I agree, that when you want to mix textures & vertex colors or multiple of each, then it should be done in the materials.
The only exception to this I can think of are MatCaps but these are used rather for shading.
And the sliders are functional on their own if you want to paint on one object only but they can be very restricting if you work with multiple objects at a time.

What happens when you want to quickly paint multiple objects and even color pick the Vcolors of another object.
This was relatively fast and easy to do in 2.7x but if this has to now go through Material setups and LookDev Mode then that's a huge inconvenience.
It's the same story of not displaying a single grid texture for UV editing unless you create & set up a material with the wanted texture in it.
Only that with VColors you have to use LookDev mode to display the paint on multiple objects. With the grid texture you can at least overlay the active texture in the shading options.

For anyone who wants to vertex paint their high-poly models in their workflow, without the need to use materials, this feature would help a lot and add something that was lost from Blender 2.7x.

Some things are lost, but a lot more is gained. We have to think through how all the parts fit together to create a powerful and flexible system. Less hard-coded features for specific projects is a good thing, if replaced by something more general and flexible.

In 2.8 you can now combine things however you want, and visualise things however you want. You might want to see several vertex color layers combined. You might want to see several textures combined in a certain way with vertex colours. You might want to use different blending and opacity of these layers. Anything. All this is now possible, which was not possible before.

This kind of general, flexible approach is superior to hard-coded, inflexible, specific corner-case options.

Yeah that is fantastic, I agree. But the simple possibilities should also be possible. No mixing, no blending, just displaying the active vcolor of multiple objects in one easy step within solid mode.
The difference between that and the current way of doing it is too big and implementing a vcolor option in the shading panel is not out of the ordinary. It still works with what is there without breaking the norms.

I don't agree. These kinds of small hacks build up over time, and you end up with a feature-bloated, heavy app that is annoying and daunting to use. We have had this problem in Blender in the past. A specific feature is added for a specific open movie project, which then lingers on in eternity. It's more things to maintain, more bugs, more UI noise, more documentation. Adding things is not always good.

Designing elegant, flexible and powerful software requires one to consider how all the parts fit together in a coherent way. It's not just about adding X features in a check list.

In 2.8, it's trivial to make a material that combines a texture with a vertex color layer, if that's what you want to do. But now you have the flexibility to do it however you want, if you want to see several vertex paint layers, for example.

It doesn't work now, but just like edit mode it will become possible to enter vertex paint mode for multiple objects at the same time. Would that solve the problem?

A potential way to enhance the workflow for this, is to think in more general terms. Making it easier to preview a certain part of your material node setup in the viewport.

Currently, you can drag a color output directly to the Output node, which allows you to see the result without lighting. This is nice. We could somehow make that part even easier, using a Node Wrangler-style shortcut here.

@William Reynish (billreynish)

In 2.8, it's trivial to make a material that combines a texture with a vertex color layer, if that's what you want to do.

Nope, that's not what I want. Only the active vertex color in modes other that vertex paint in solid view mode. That is what I need and that is what is no longer possible in 2.8.
I have been using this feature often while working in 2.7x and it was easy and simple. And it's not like the feature was completely removed in 2.8, it was just exclusively implemented for the active texture instead, while casting aside previewing vertex paint.

Instead of toggling a single option, in 2.8 I have to:

  • Create and apply a new material to all objects that should display their vcolors, preferably the same for all of them.
  • Open the Node Editor and insert the attribute for the needed Vcolors.
  • Plug them into the Base Color or into the material output node if I want to see them flat shaded.
  • Switch to LookDev mode in the 3d view to see the result, continue working in it or switch back to Solid mode when I'm done.

Problems with that workflow:

  • You have to replace or adjust any material that is currently being used by the objects to preview the single Vcolors for each object
  • You have to go through many steps, clicks and editors to set up this simple scenario.
  • A lot of shading information is lost when working in LookDev mode since HDRIs are used for the lighting. Matcaps can give much more clarity.
  • Any changes to the Vcolors name will need to be adjusted in the material. When the material is linked they need to be seperated or a more complex material setup has to be created. This also results in a lot of back & forth in editors.

This is flexible I guess, but it's also an incredibly tedious and long process for something simple.
It's great to have a simplistic, yet expansive set of options but adding more is not always unnecessary.

For me this vcolor option is like the shadow toggle in solid mode. Simple, accessible and in specific workflows incredibly useful.
Before I would have had to add a lighting and rendering setup to preview this sort of thing but now it's a simple and easy toggle. Is that feature an unnecessary hack?
Am I wrong for not using the software as it is now intended to be used?

@Brecht Van Lommel (brecht) Going into vertex paint mode on multiple objects at the same time would be a great addition but it would also still be useful to easily have access to the vertex colors in object mode.

The usual scenarios where I personally find this kind of toggle useful (apart from color icking other objects vcolors) is when working on a character sculpt or laying out/sketching other models and I need extra context of how the shapes would later work together with the colors. I can quickly vpaint the colors on top (which gives me more possibilities than adding single colored materials for each object), compare objects how they work together in relation to the colors and each other and make modeling & sculpting changes while vcolors are still visible.
The objects & geometry will change drastically over the course of the creation process and the vcolors will need to be updated but this is easy to do.
All of this is possible within a fraction of the time by having a toggle directly in reach. I would never have to use more than 2 editors for this workflow and I would not be needed to create and manage materials on the side.

Just to be clear, you would not have to do all those things to see your active vertex color layer. If you enable Vertex Paint mode, the Overlay will display the active vertex color layer. Make sure the Vertex Paint overlay is set to 100%. The current default is 80% which is bad. It should, as you pointed out, just be multiplied with the lighting, making is consistent with Weight Painting. You can then switch to flat lighting to get rid of any lighting if you wish. That part should be improved and made more consistent, yes.

Anyway, what we were discussing earlier, is if you want to see the vertex colour mixed with other things. If you want to see vertex colours mixed with a texture or mixed with other vertex colours, or see the result if you use vertex colours as a mask etc etc.

Because there are endless possibilities here, that thing should not be a hard-coded feature, but following the flexible nature of our materials and viewport.

Now, maybe there are too many steps involved with previewing certain parts of a node tree. Fair enough. Then that is how we should solve it - in a general, flexible way.

Anyway, what we were discussing earlier, is if you want to see the vertex colour mixed with other things.

To be clear: I was never arguing that. This is a misunderstanding and a discussion that should be buried and left for dead at this point :D

If you want to solve this issue another way then that's also fine. Just go for the simplest, easiest, directest route that can be possibly imagined that does still work within the frame of how the systems work.

In my opinion the option to choose between "Single, Material, Random, Texture & VColor" in the shading options sounds like a perfect and simple thing, without messing with already existing options.

I thought you wanted a specific Vcol Multiply option?

Anyway, we totally agree that it's really important that Vertex Paint mode respects the current shading settings. If that was all you meant, I completely agree, and I have then completely missed what you were saying :)

While in Vertex Paint mode, the vertex painting overlay should be multiplied with the underlying lighting and shading. This just makes sense, rather than the current blending.

It seems we were completely talking past each other this whole time.

I thought you wanted a specific Vcol Multiply option?

Anyway, we totally agree that it's really important that Vertex Paint mode respects the current shading settings. If that was all you meant, I completely agree, and I have then completely missed what you were saying :)

While in Vertex Paint mode, the vertex painting overlay should be multiplied with the underlying lighting and shading. This just makes sense, rather than the current blending.

The blending, if multiply or mixing with the overlay settings within Vertex Paint Mode is a different topic. I made a separate task for that and we already agreed on that one ;)
-> T56999

What I am suggesting, is to add a "VColor" option in these color options. This way the single active Vertex Colors on each object can be previewed in multiple modes and situations without resorting to using Eeevee.

This was possible in 2.7x but was removed in 2.8.

Brecht Van Lommel (brecht) triaged this task as Normal priority.Oct 4 2018, 11:31 AM

Probably we should name it 'Vertex' rather than 'VColor', given the 'Color' is already implicit in all the other labels too.

It's not clear to me that it is a good direction to have this option at all. In 2.7x it was possible due to legacy game engine shading. But in general you may want to visualize vertex groups, UVs, or any other kind of mesh data. I do not think that belongs in the same category of coloring options like single / material / random.

If we do need it that seems rather low priority compared to more important bugs in the tracker.

@William Reynish (billreynish) Vertex could also mean vertex groups or Vertex ID, etc. I wonder how clear it would be that Vertex means Vertex Colors.

@Brecht Van Lommel (brecht) Look at any timelapse for character creation in Zbrush and you will see that almost every one of them is using poly paint to quickly visualise colors during the creation process. It's incredibly useful for previzualization and conceptual sculpting/modeling and offers far more depth than setting up material or object colors.
When another project at the Blender Animation Studio starts I can guarantee you that I will heavily rely on this feature since it is far easier, faster and reliable than setting up a material for the LookDev mode with the Vertex Colors as a color input (which would be the alternative).

And since there is also already a "Texture" option I don't see why a Vertex Color option would be so wrong. Displaying UVs, Vertex groups and other mesh data options is far less common in comparison to textures and vertex colors.

Brecht Van Lommel (brecht) raised the priority of this task from Normal to Confirmed, High.Fri, Apr 12, 7:55 AM

We decided to add this for 2.80, also to solve dynamic paint result visualization not working yet.

Brecht Van Lommel (brecht) renamed this task from VColor option in Shading Popup to Vertex color option in Shading Popup.Fri, Apr 12, 8:36 AM

Minor implementation detail: there is not enough space to expand enum buttons on one row, we need to spread it out over two rows manually instead of using a slower menu.

@Pablo Vazquez (pablovazquez) came with the idea to use icons in stead of text? The two line will not always look nice like

Wireframe will display 3-4 options (depending on the support of the vertex color for wireframe)
Solid (flat + studio) will display 6 options
Matcap will display 5 options

We don't usually use icons for these kinds of enums in popovers or properties editors, it's normally just text. I don't think it would look that bad. Icons would not be great either in this kind of layout, they are normally only used in square buttons while these stretch across the width of the panel.