Page MenuHome

Geometry Nodes, joining base mesh twice removes UV map.
Confirmed, NormalPublic

Description

System Information
Operating system: Windows 10
Graphics card: RTX 3060ti

Blender Version
Broken: 2.93.0-b2c7ea6d82c4, alpha, 2021-02-23

Short description of error
When connecting the geometry from Group Input into a Join Geometry more than once the UV map is removed. Any other geometry joined from a Object Info joins with the UV map intact.



Related Objects

Event Timeline

Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Confirmed.Feb 25 2021, 10:27 AM

Can confirm.

I'm not entirely sure how to handle this report currently. The issue is that the Join Geometry node output a generic float2 attribute instead of a uv layers. The render engines currently do not recognize generic float2 attributes as uv maps. In Cycles, there is a workaround: You can use the Attribute node to access the uv map data by using the UVMap attribute name. In Eevee this is not possible currently.

I can think of these possible solutions:

  • Change the Join Geometry node so that it can also generate a "legacy" uv map. This makes the output of geometry nodes work in more places in Blender. It is slightly less memory efficient, because for uv maps, we store additional data for every corner, besides the 2D vector. Doing it for uv maps, might mean that we will have to do it for vertex groups and vertex colors as well, which would be sad, given that we try to move to a more generic attribute system.
  • Make the render engines (and other parts of Blender as well) more aware of the generic attributes. In Cycles, part of the work is already done. Not sure what Cycles uses as "default" uv map in the Texture Coordinate node tbh, given that there can be multiple uv maps.

I tend to prefer the second solution, which is what we are working towards, but it will probably take longer than trying to keep legacy attributes around.

It might also be possible to have a node or so, that converts generic attributes back to uv maps, vertex weights and vertex colors, so that the data can still be used in other contexts. @Hans Goudey (HooglyBoogly), what do you think about that idea?

hyyou (hyyou) added a subscriber: hyyou (hyyou).

In the user side, this can be partially workarounded by using Boolean node with Union type.

We really need this in our studio. We don't need to manipulate the UV data within Geonodes, just join a mesh to itself.