Vertex Paint Fill Gradient?

Hey all ive just converted from 3dsmax to blender and ive been able to get comfortable using blender and now ive run into a brick wall where ive just created low poly vegetation to be imported into Unreal Engine 4 and i wish to use its grass wind feature that makes foliage look liking its bending with the wind.

The issue is Unreal Engine 4 uses vertex color channel to determine where the weight is (black to white) and in blender i cannot create a nice smooth gradient between black, gray, and white. I don’t want to have to brush paint because its uneven, making for ugly non symmetrical wind, so i use the Shift + K to fill instead but it doesn’t transition smoothly between the other colors. In 3dsmax you select vertices and fill them a certain color and it automatically creates that gradient, where blender does not do this :frowning:

Blenders Weight Paint however does this and it seems really dumb that they don’t have it for vertex paint.

I found 2 things online that didn’t work for me which where Weight2VertexCol and Vcol Gradient.

Blender 2.45 has a tool in called Vcol Gradient that creates a nice gradient between 2 colors perfect for what i need but, using the camera, adjusting to the controls of that version is very very frustrating and time consuming, and mixing different version project files doesn’t seem good.

3dsmax vertex painting = 2mins
blender vertex painting = 1hour

Is there a simple solution that i dont know about? and i please don’t give an answer suggesting me to code a python script myself to do this.

You can create second uv layer and unwrap your nesh to fit while uv space. Then in node editor us this info from geometry node and separate green chanel. In baking tab you can render this to verex color of your mesh.

how do i separate green channel ?

i used weighttovertexcolor addon to make this work i got what i needed now.

If you’re just working on grass blades(or other shapes that work :)) setting a large brush size, and a linear falloff curve, you can get a decent gradient with a single click.


2 Likes

This does bring up a shortcoming in Blender’s vertex paint: we can only mask/active-select faces. It would be nice to natively set the color of selected verts as well, rather than rely on circuitous addons which convert other types of data to vert colors.

There is node “separate rgb”. You can take green channel as your “v” value from uv unwrap. But you will see gamma corected values so you need to convert this back to linear space.