Vector weight proximity for material use? Does it exist?

You know how there exists vertex weight proximity.

Yes, but now I want that weight value to control the material/texture intensity.
Let’s say that the blue in this image is dirt texture and red is grass texture, I want the grass texture to be moving like this weight value is moving around (all that moving is controlled by the icosphere you see).

So is there any way to make the vertex weight proximity to affect the materials just like it affects the mesh weight?

Oh thanks i learnt something new. Try any weight to vertex color tools for example this one: https://blog.michelanders.nl/2015/02/transfer-vertex-weights-to-vertex_28.html
Just tried and works with 2.93.3

1 Like

Thank you very much for that tip, but the problem is that my weight comes form vertex weight proximity and not from weight brush.

I tried your trick and it works only for weight brush.


But it doesnt work for vertex weight proximity

Yes, the modifier has to be applied… sorry i forget to mention.

1 Like

For dynamic Vertex Weight Proximity, there is an overcomplicated workaround. If you create an extra UV coordinate channel with one of the coordinate axes (like V) set to zero, you can then use UV Warp modifier on it, set an offset, and select the resulting group of Weight Proximity as the modifier’s zone of influence. Then, the UV channel’s V coordinate can be read by shader and used as color mixing value

1 Like

When I apply it then I cannot have an animation using a vertex weight proximity, it becomes static just like in a image. But from what you have seen from the last image there is an icosphere levitating over that displaced part of the plane, when the icosphere moves so should the displacement because it’s tied to a vertex weight proximity. If I apply the vertex weight proximity then the displacement remains static, I can move around the icosphere and displacement wont follow the vertex weight proximity.

You see

I have done like you said but now it only works for the Y coordinate on “separate XYZ” node, it doesn’t work for the Z coordinate like in your video, or even for the X coordinate. I have tried every combination in that UV Warp modifier for the U and V axis, nothing seems to work.

Alternatively, you can use geometry nodes (Cycles only):

Recreate the vertex proximity modifier like this, while also writing the “Group” attribute, used for the vertex group, to another attribute (weight):

Then use the attribute node in the shader setup:

1 Like

Actually, you don’t even have to use geonodes for the vertex weight proximity; you can keep your modifier setup and just add this geonode at the end:

2 Likes

Yeaaa felllaaa, thanks a lot. You saved meee.

There you go, magic :wink: :crazy_face:

1 Like

In my video, it was a second coordinate in UV Warp -Transform-Offset (not marked, but implied that it is V) and Y in Separate XYZ, not Z. Probably the video quality makes it isnt obvious, but Z wasnt involved. I’ve set UV Warp’ s V Offset to 1, then set up the vgroup generated by Vertex Weight Proximity as its limit of influence. Everything worked

1 Like

Works good fella, thanks.