Vertex normals transfer in geo nodes?

Is it possible? Like what data transfer modifier does? What is vertex normal reader in GN for the start?

You can for example with Sample Nearest Surface node, but you can’t update mesh normals using geo nodes, only pass the new normals into shader editor

3 Likes

Thank you very much higgsas
Too bad I need it to be in the geometry itself and exportable to fbx file.

Its doable (with some caveats) to export them by storing new normals in UV (or vertex color if vcol are unused).

1 Like

UV is 2d vector, right ? Where would be 3d value ? An how could I convert UV or vertex color to vertex normal. It should be a script or something in destination application ? In a game engine for example?
Can vertex color be baked as vertex normals in Blender ? Not by GeoNodes but by a script probably?

Thanks

SoundDifferent

the idea is interesting.

UV is basically a 2d vector, yes.
You cant convert them (without some scripts, probably) to mesh vertex normals, but you can read them as a normal maps inside game engines.
If data are stored in UV channels, you just pick desired UV channel inside your material (shader).
In both cases you just remap normals range from -1to1 to 0to1.
For Z you would need second UV channel where you occupy 1 axis (U or V).*

*probably it can be avoided and Z can be reconstructed from XY but i doesnt dig that deep.

I cant show you my test cases cause im temporarily drop the project where i was need this and doesnt have desired engine version to open it, but specifically for unreal the tests was ok, but again - with caveats.
Vertex normals stored in UV was show some artifacts (when we try to store in UV original model normals). It wasnt that bad but for “clean” surfaces - it will became a problem.

1 Like

Thank you SoundDifferent

for the ideas.
Unfortunately I work with not Unreal and in fact have to import geometry to 3d max first . That makes it all extremely complicated.

I wonder perhaps convert attribute button in attribute panel could do it?

Unfortunately - no. Currently there is no way to convert custom normal storen in attributes to mesh custom split normal data. Maybe (im really not sure) it can be doable with some scripting.

1 Like

Thanks again SoundDifferent

At least I figured out I could store certain selection as a float attribute, apply geometry nodes , convert that attribute to vertex group manually by convert button and then put data transfer modifier on that vertex group.
That a bit tedious and manual but looks like working at least. Too bad it should be real-time preview process to be helpful .

It’s really pity we can’t do it in GN entirely . I hoped to do a tree generator and without proper vertex normal editing/transfer it doesn’t work.

1 Like

I was try to using it (intil i realize we cant) for the same purpose.
Preview can be done by passing normals info to material and use material preview. But then its should be done manually by using data transfer modifier.
As example of tree gen. The author also generate vertex groups, and then pass it to data transfer modifier: https://www.artstation.com/artwork/eJEbbG

2 Likes

Thanks for the link SoundDifferent