GSoC 2017 : Vertex Painting Improvement

Hello everyone,

I am Darshan Kadu, I am doing vertex painting improvement project during GSoC 2017.

here is the link to the proposal

Link to my branch is -->

I will be writing report every week -->

I will require the help of blender artists and users to test the implemented features and also for the suggestion in the features.

Hope you will like my work. Looking forward for the feedback !!

I have implemented the blend modes and pushed the changes on the branch. Any improvement you want?

Hi, good luck with the project!
Here I will try to test as best I can with my limited capabilities :evilgrin:

Out of curiosity, are you working on current vertex paint system? Or are you working with what has already been done by Nathan here?

yes ,I am working on top off Nathan’s work hence I will be adding features in addition to last years gsoc !

And sorry for not having read the weekly report, you had mentioned it there.

Hi Darshan,

glad that you are working on this. I can think of two possible improvements with vertex painting :

  1. ability to paint vertices instead of face corners (loops in bmesh lingo iirc). The following happens to me all the time : I paint a rounded surface, and when I turn the view to paint the other side I realize only the face corners facing my previous point of view were painted, resulting in a sharp stop->

  2. ability to set rgb values like we can set vertex weights in edit mode (through the n panel)

What do you think of those ?


Super glad you are doing this @Darshan Kadu I thought about picking up the vertex Alpha diff but it seemed that too much was changing with the Nathans work. One thing I don’t see in your proposal is support for exporting the vertex Alpha - FBX and Collada will support it.

I’m happy to help with feedback and testing this one as vertex colouring (and Alpha) are something we use a lot in games.

When i add new vertex paint “layer” it just copies old one. So i need to paint away old stuff. Wondering iof there is any fix for that.

(not about your build, just in general how it works, which is wrong)

@Wakka you can use Shift+K to fill the entire model, I agree that the behavior is wrong though

I am Darshan’s mentor, so am also interested in hearing the suggestions about improvements to vertex paint that he might work on. I have a couple of questions about these suggestions:

This seems like it would be useful. But I wonder if the effect you showed in the picture might just be regarded as a bug? I think it may not happen with the new vpaint method implemented by last year’s GSoC student, that regards brushes as 3d spheres.

You can set the RGB value of the brush by clicking on the Brush.color rectangle under the color wheel on the tool shelf. Is that not sufficient? Or was that not discoverable by you?

+1 to being able to paint vertex alpha channel (vieport preview would be great, but b&w is good too).

I think what Hadriscus meant here was that when you weight paint a mesh in weight paint mode you can go into edit mode select vertices and change their weights in the vertex weight tab that you find on the n panel.

The vertex paint equivalent of this would be to paint the mesh in vertex paint mode, tab into edit mode and change the RGBA values of your selected vertices through a similar tab on the ‘n’ panel.

Thanks, tyrant monkey. That makes sense. Of course, that would mean the rgba values would have to be set the same for all loops at a vertex if that method is used.

Yes, that is what I meant : a numerical input. Painting is awesome, but sometimes I just use vcol for transitions between materials and such, and I’d rather have the strictness and accuracy of a number field rather than the approximation of a brush. I would be all for a generalization of the methods for editing point attributes in Blender.
About the other point : I have not tried Nathan’s branch, maybe it does correct this ! - however it didn’t seem like a bug to me - painting only face corners can be useful to create sharp transitions, it’s just that currently it can only be done this way (painting a surface at a grazing angle), as far as I know.

Thanks for your reply !


Hello, and welcome to BA. Here is my feedback as-per what I think would be good improvements on top of Nathan’s work (my own personal top 5 list)

  • -Soften tool with the ability for multiple iterations (like the one for weight paint).
  • -Random colors (pe-face, per-vertex, or per-island), would be useful for a pattern of individual pieces and anything else that can’t make use of the random output in Cycles’ object info node.
  • -The ability to select vertices and not just faces (then we can straight up apply color with smooth transitions, without the need to paint anything).
  • -A cleanup tool like with weight painting (very low RGB values become black and very high values become white, this would be good if you’re using colors as masks for shading purposes).
  • -(If possible), the ability to have more than 8 channels (I think increasing the limit to 128 should satisfy even most extreme cases).

Hi, here is my suggestion, I guess very simple to implement but very much missing for vertex paint AND for weight paint:

  • non-occluded paint - through

This means that all vertices under the brush would be painted, not taking into account occlusion, or normals. Not being able to paint through is annoying in both vertex and weight paints - imagine painting a base color on thin branches of a tree with base color, or anything similar. You have to rotate it many times until you paint what would be otherwise a single stroke. With weightpaint it’s even more problematic, since there you could fix wrong deformations or align cloth with underlying model more properly in deformations.

Suggestions are interesting I will try to make as much improvement possible in time.

I have implemented the blend modes. But I have used the same brush icon for the new blend modes. So what do you think is it fine to have this icon? I have attached the screenshot:

Good progress.
Having standard icons is fine, but maybe more contrasted icons , or use of different colors like red/blue to accentuate the effect would be greater.

The - non-occluded paint - through suggestion of Pildanovak would be really useful. Definitely +1.

I committed the accumulation mode for vertex painting, you can test it now :slight_smile:
here is the link -->

We were wondering which of two choices you’d prefer for a mode like this:

  1. all vertices in the cone that starts at the eye and has the brush radius at the first place on the model that the eye-brush ray hits
  2. just the vertices in the 3d ball with the brush radius and whose center is at the first place on the model where the brush hits