Smooth face corner colours in Geo Nodes

Hi, I’m working on some vertex colour stuff with geo nodes. The idea is to generate meshes with vertex colours for export to FBX for games.
I’ve got the vertex colours exporting, they need to be stored as Byte Color in the Face Corners. (previous thread on that here)

This creates a problem, since face colors are per face instead of per-vertex you get a colour per face instead of it blending in gradients like it would if you painted them by hand.

Does anyone know how to create smooth gradients for vertex colors in geo nodes? Any advice is really appreciated!

(Orange and red are smoothly blended/interpolated between verts, blue is hard edges that don’t blend in between verts)

I have two ideas on how this might work, but I’m not sure how to set them up with Geo Nodes… they also might not be the best way to do this.

Accurate method: sample the noise that is generating the colour at the corner instead of at the face. All the corners on the same vertex should have the same color value, so I assume the colour is being gotten based on the face center.

Less accurate, but visually fine method: blur the results of the hard edges. If there’s a way to access the colour on all the neighboring faces and take a % of that colour you could get a washed-out, but smooth, gradient. I think there would be a lot of issues with this method, and it sounds harder/impossible with geo nodes? An around worse option.

did you try to convert from face corner to vertex and then back to face corner ?
Or just set the colors in vertex, and then convert that to face corner ?

You can get both kind of result with vertex paint, so it should be possible to get that interpolation .

Good luck !

1 Like

That sounds really promising, I have no clue how to do that kind of domain back and forth with geo nodes yet though.
Time to experiment a bit, I’ll try running Named Attribute or Capture Attribute nodes through each other with different settings.
I think you have the right idea, thanks!