Many Nodes (Join geometry, Boolean, Object Info?) and realizing instances remove UVs (output float2, not MLoopUV). #85962

Closed
opened 2021-02-24 19:36:35 +01:00 by Gurra · 240 comments

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.
geometrynode_uv_bug1.jpg
geometrynode_uv_bug2.jpg
geometrynode_uv_bug.blend

**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. ![geometrynode_uv_bug1.jpg](https://archive.blender.org/developer/F9835632/geometrynode_uv_bug1.jpg) ![geometrynode_uv_bug2.jpg](https://archive.blender.org/developer/F9835634/geometrynode_uv_bug2.jpg) [geometrynode_uv_bug.blend](https://archive.blender.org/developer/F9835637/geometrynode_uv_bug.blend)
Author

Added subscriber: @Gurra

Added subscriber: @Gurra

#103545 was marked as duplicate of this issue

#103545 was marked as duplicate of this issue

#102908 was marked as duplicate of this issue

#102908 was marked as duplicate of this issue

#102631 was marked as duplicate of this issue

#102631 was marked as duplicate of this issue

#102542 was marked as duplicate of this issue

#102542 was marked as duplicate of this issue

#101998 was marked as duplicate of this issue

#101998 was marked as duplicate of this issue

#99915 was marked as duplicate of this issue

#99915 was marked as duplicate of this issue

#99517 was marked as duplicate of this issue

#99517 was marked as duplicate of this issue

#99472 was marked as duplicate of this issue

#99472 was marked as duplicate of this issue

#96982 was marked as duplicate of this issue

#96982 was marked as duplicate of this issue

#96717 was marked as duplicate of this issue

#96717 was marked as duplicate of this issue

#96078 was marked as duplicate of this issue

#96078 was marked as duplicate of this issue

#91528 was marked as duplicate of this issue

#91528 was marked as duplicate of this issue

#95023 was marked as duplicate of this issue

#95023 was marked as duplicate of this issue

#94816 was marked as duplicate of this issue

#94816 was marked as duplicate of this issue

#94512 was marked as duplicate of this issue

#94512 was marked as duplicate of this issue

#94256 was marked as duplicate of this issue

#94256 was marked as duplicate of this issue

#93537 was marked as duplicate of this issue

#93537 was marked as duplicate of this issue

#93015 was marked as duplicate of this issue

#93015 was marked as duplicate of this issue

#92777 was marked as duplicate of this issue

#92777 was marked as duplicate of this issue

#92773 was marked as duplicate of this issue

#92773 was marked as duplicate of this issue

#89888 was marked as duplicate of this issue

#89888 was marked as duplicate of this issue

#92188 was marked as duplicate of this issue

#92188 was marked as duplicate of this issue

#91198 was marked as duplicate of this issue

#91198 was marked as duplicate of this issue

#89744 was marked as duplicate of this issue

#89744 was marked as duplicate of this issue

#89357 was marked as duplicate of this issue

#89357 was marked as duplicate of this issue

#89570 was marked as duplicate of this issue

#89570 was marked as duplicate of this issue

#89376 was marked as duplicate of this issue

#89376 was marked as duplicate of this issue

#86653 was marked as duplicate of this issue

#86653 was marked as duplicate of this issue

#89470 was marked as duplicate of this issue

#89470 was marked as duplicate of this issue

#89471 was marked as duplicate of this issue

#89471 was marked as duplicate of this issue
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Member

Can confirm.

Can confirm.
Member

Added subscribers: @HooglyBoogly, @JacquesLucke

Added subscribers: @HooglyBoogly, @JacquesLucke
Member

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. @HooglyBoogly, what do you think about that idea?

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. @HooglyBoogly, what do you think about that idea?

Added subscriber: @hyyou

Added subscriber: @hyyou

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

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

Added subscriber: @SecuoyaEx

Added subscriber: @SecuoyaEx

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

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

Removed subscriber: @SecuoyaEx

Removed subscriber: @SecuoyaEx

Added subscriber: @MarioTovirac

Added subscriber: @MarioTovirac
Member

Added subscriber: @Rawalanche

Added subscriber: @Rawalanche
Philipp Oeser changed title from Geometry Nodes, joining base mesh twice removes UV map. to Geometry Nodes: some nodes (e.g join geometry, point instance) remove UVs (output float2, not CustomDataLayer). 2021-06-28 11:48:10 +02:00
Member

Added subscriber: @randum

Added subscriber: @randum
Member

Added subscriber: @HoffmanWood

Added subscriber: @HoffmanWood
Hans Goudey changed title from Geometry Nodes: some nodes (e.g join geometry, point instance) remove UVs (output float2, not CustomDataLayer). to Join geometry and realizing instances remove UVs (output float2, not MLoopUV). 2021-06-29 20:07:06 +02:00
Philipp Oeser changed title from Join geometry and realizing instances remove UVs (output float2, not MLoopUV). to Many Nodes (Join geometry, Boolean, Object Info?) and realizing instances remove UVs (output float2, not MLoopUV). 2021-07-01 14:23:08 +02:00
Member

Added subscribers: @kursadk, @PratikPB2123

Added subscribers: @kursadk, @PratikPB2123
Member

Added subscribers: @StephenLeger, @howardt, @iss

Added subscribers: @StephenLeger, @howardt, @iss
Member

The UVs are lost even in super simple use case like this, and it does not involve the join node.

Bear in mind that in the sample below the UVmap is completely gone, it is not the lack of materials in the new mesh after applying the modifier.

QU22PPOylB-x.mp4

The UVs are lost even in super simple use case like this, and it does not involve the join node. Bear in mind that in the sample below the UVmap is completely gone, it is not the lack of materials in the new mesh after applying the modifier. [QU22PPOylB-x.mp4](https://archive.blender.org/developer/F10208012/QU22PPOylB-x.mp4)
Member

@JacquesLucke

The new implicit UV attribute works in Cycles which is a good work around for now. To me the biggest issue is that there is no way to edit or see those UVmaps in Blender elsewhere. I have not tested it but I am guessing they are also not exportable with the meshes.

@JacquesLucke The new implicit UV attribute works in Cycles which is a good work around for now. To me the biggest issue is that there is no way to edit or see those UVmaps in Blender elsewhere. I have not tested it but I am guessing they are also not exportable with the meshes.
Member

Added subscriber: @DanteBoi

Added subscriber: @DanteBoi

Added subscriber: @JuanManuelLynch

Added subscriber: @JuanManuelLynch
Contributor

Added subscriber: @AndresStephens

Added subscriber: @AndresStephens
Contributor

This is a pretty big spanner in the UX of joining and merging and applying geometry from instances. If there are no UVs post the modifier - but the instance has one, they should be applied when applied, it is expected behaviour to preserve the legacy UV's without needing to work around.

Hope the join and other nodes can preserve instance UV's when applying.

This is a pretty big spanner in the UX of joining and merging and applying geometry from instances. If there are no UVs post the modifier - but the instance has one, they should be applied when applied, it is expected behaviour to preserve the legacy UV's without needing to work around. Hope the join and other nodes can preserve instance UV's when applying.

Added subscriber: @llealloo

Added subscriber: @llealloo

This should work (UV's passed along w/ join geo node), it is at the core of many future potential non destructive workflows

This should work (UV's passed along w/ join geo node), it is at the core of many future potential non destructive workflows

Added subscriber: @nick-nieuwoudt

Added subscriber: @nick-nieuwoudt

The UV along with vertex colors and vertex weights disappearing dramatically reduces the useability of the geometry nodes for game asset development. especially for more modern pipelines which use multiple UV sets and vertex coloring to give more data to the in-engine shaders.

The UV along with vertex colors and vertex weights disappearing dramatically reduces the useability of the geometry nodes for game asset development. especially for more modern pipelines which use multiple UV sets and vertex coloring to give more data to the in-engine shaders.

Added subscriber: @Osares

Added subscriber: @Osares

Added subscriber: @bjj

Added subscriber: @bjj

I was able to transfer the UVs to a regular UV map like this:

import bpy

selected = bpy.context.selected_objects[0]
bpy.ops.object.mode_set(mode='OBJECT')
uvmap = selected.data.uv_layers.new(name='Attribute', do_init=False)
attribute_uvmap = selected.data.attributes.get('UVMap') # must fetch *after* creating new uvmap
for i, v in attribute_uvmap.data.items():
    uvmap.data[i].uv = v.vector

The name of the attribute might come from the original object UVMap name, so you might need to change that.

I was able to transfer the UVs to a regular UV map like this: ``` import bpy selected = bpy.context.selected_objects[0] bpy.ops.object.mode_set(mode='OBJECT') uvmap = selected.data.uv_layers.new(name='Attribute', do_init=False) attribute_uvmap = selected.data.attributes.get('UVMap') # must fetch *after* creating new uvmap for i, v in attribute_uvmap.data.items(): uvmap.data[i].uv = v.vector ``` The name of the attribute might come from the original object UVMap name, so you might need to change that.

Added subscriber: @eru

Added subscriber: @eru
Member

Added subscribers: @CrossmindStudio, @LloydAlmeida

Added subscribers: @CrossmindStudio, @LloydAlmeida

Added subscriber: @Nikhil.Net

Added subscriber: @Nikhil.Net

In #85962#1200662, @bjj wrote:
I was able to transfer the UVs to a regular UV map like this:

import bpy

selected = bpy.context.selected_objects[0]
bpy.ops.object.mode_set(mode='OBJECT')
uvmap = selected.data.uv_layers.new(name='Attribute', do_init=False)
attribute_uvmap = selected.data.attributes.get('UVMap') # must fetch *after* creating new uvmap
for i, v in attribute_uvmap.data.items():
    uvmap.data- [x].uv = v.vector

The name of the attribute might come from the original object UVMap name, so you might need to change that.

Your script is handy and a decent workaround, but I found two challenges. First, it only works after you apply the GeoNodes modifier; this was an issue for me since I had UVs that looked OK in material preview but would not render out. Second, once the script is run, the UVs on the objects are completely messed up from what they were on the template object.

> In #85962#1200662, @bjj wrote: > I was able to transfer the UVs to a regular UV map like this: > > > ``` > import bpy > > selected = bpy.context.selected_objects[0] > bpy.ops.object.mode_set(mode='OBJECT') > uvmap = selected.data.uv_layers.new(name='Attribute', do_init=False) > attribute_uvmap = selected.data.attributes.get('UVMap') # must fetch *after* creating new uvmap > for i, v in attribute_uvmap.data.items(): > uvmap.data- [x].uv = v.vector > ``` > > The name of the attribute might come from the original object UVMap name, so you might need to change that. Your script is handy and a decent workaround, but I found two challenges. First, it only works after you apply the GeoNodes modifier; this was an issue for me since I had UVs that looked OK in material preview but would not render out. Second, once the script is run, the UVs on the objects are completely messed up from what they were on the template object.
Member

Added subscriber: @Takanu

Added subscriber: @Takanu

Added subscriber: @JanKaderabek

Added subscriber: @JanKaderabek

In #85962#1195886, @nick-nieuwoudt wrote:
The UV along with vertex colors and vertex weights disappearing dramatically reduces the useability of the geometry nodes for game asset development. especially for more modern pipelines which use multiple UV sets and vertex coloring to give more data to the in-engine shaders.

This. We would like to use GNodes for scattering the assets which need to be joined for exporting to a game engine. All the mesh data has to be kept - UVMaps, Vertex Colors (all layers), Vertex Groups ...

Big thanks to anyone who will make GNodes usable for us - game artists - by implementing this!
Particles can do that, so I believe GNodes should too.

> In #85962#1195886, @nick-nieuwoudt wrote: > The UV along with vertex colors and vertex weights disappearing dramatically reduces the useability of the geometry nodes for game asset development. especially for more modern pipelines which use multiple UV sets and vertex coloring to give more data to the in-engine shaders. This. We would like to use GNodes for scattering the assets which need to be joined for exporting to a game engine. All the mesh data has to be kept - UVMaps, Vertex Colors (all layers), Vertex Groups ... Big thanks to anyone who will make GNodes usable for us - game artists - by implementing this! Particles can do that, so I believe GNodes should too.
Member

Added subscriber: @adrien.gomez

Added subscriber: @adrien.gomez

Added subscriber: @Olliver

Added subscriber: @Olliver

Does the join node support UVs yet? Its rather useless to me until it does & Boolean union often destroys the geometry

Does the join node support UVs yet? Its rather useless to me until it does & Boolean union often destroys the geometry

In #85962#1239128, @Olliver wrote:
Does the join node support UVs yet? Its rather useless to me until it does & Boolean union often destroys the geometry

No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?).

> In #85962#1239128, @Olliver wrote: > Does the join node support UVs yet? Its rather useless to me until it does & Boolean union often destroys the geometry No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?).

In #85962#1239131, @JanKaderabek wrote:
No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?).

I can confirm. Actually in the latest alpha its even worse, not you cant even apply instances at all it seems.

It bothers me quite a lot that theres no procedural way of combining objects :/ I dont want to have to go to Houdini for something as simple as this

9glmxYr4M5.mp4

> In #85962#1239131, @JanKaderabek wrote: > No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?). I can confirm. Actually in the latest alpha its even worse, not you cant even apply instances at all it seems. It bothers me quite a lot that theres no procedural way of combining objects :/ I dont want to have to go to Houdini for something as simple as this [9glmxYr4M5.mp4](https://archive.blender.org/developer/F11361178/9glmxYr4M5.mp4)

Our case is different, but pretty simple - we just need to get joined mesh out of thousands of instances. This is currently not possible without loosing UVs, vcols and other mesh data.
GN are presented as a solution for scattering, but this limitation forces us to keep using particles for such very basic task.

Our case is different, but pretty simple - we just need to get joined mesh out of thousands of instances. This is currently not possible without loosing UVs, vcols and other mesh data. GN are presented as a solution for scattering, but this limitation forces us to keep using particles for such very basic task.

Added subscriber: @arguablykomodo

Added subscriber: @arguablykomodo

In #85962#1239133, @Olliver wrote:

In #85962#1239131, @JanKaderabek wrote:
No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?).

I can confirm. Actually in the latest alpha its even worse, not you cant even apply instances at all it seems.

It bothers me quite a lot that theres no procedural way of combining objects :/ I dont want to have to go to Houdini for something as simple as this

Geometry nodes is useless to me as well until this bug is fixed

> In #85962#1239133, @Olliver wrote: >> In #85962#1239131, @JanKaderabek wrote: >> No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?). > I can confirm. Actually in the latest alpha its even worse, not you cant even apply instances at all it seems. > > It bothers me quite a lot that theres no procedural way of combining objects :/ I dont want to have to go to Houdini for something as simple as this Geometry nodes is useless to me as well until this bug is fixed
Contributor

In #85962#1239322, @llealloo wrote:

In #85962#1239133, @Olliver wrote:

In #85962#1239131, @JanKaderabek wrote:
No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?).

I can confirm. Actually in the latest alpha its even worse, not you cant even apply instances at all it seems.

It bothers me quite a lot that theres no procedural way of combining objects :/ I dont want to have to go to Houdini for something as simple as this

Geometry nodes is useless to me as well until this bug is fixed

Yes, for many of us. It's great to have a means of procedural modeling, but it becomes useless when you realize there is no simple and reliable way to turn result of that procedural modeling into a static mesh object you can export to a game engine or other 3D software. :|

> In #85962#1239322, @llealloo wrote: >> In #85962#1239133, @Olliver wrote: >>> In #85962#1239131, @JanKaderabek wrote: >>> No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?). >> I can confirm. Actually in the latest alpha its even worse, not you cant even apply instances at all it seems. >> >> It bothers me quite a lot that theres no procedural way of combining objects :/ I dont want to have to go to Houdini for something as simple as this > > Geometry nodes is useless to me as well until this bug is fixed Yes, for many of us. It's great to have a means of procedural modeling, but it becomes useless when you realize there is no simple and reliable way to turn result of that procedural modeling into a static mesh object you can export to a game engine or other 3D software. :|

It is not only problem in case of exporting the ouput to a game engine - we also need to use Realize Instances node to speed up the viewport (GN are not the fastest with high amount of instances), then all the mesh data are cleared as well, so we lose any preview of the result - impossible to work like that.
I would appreciate if some developer can at least let us know whether somebody will take care of this limitation as it is clearly the showstopper for many users.
It is difficult to understand all the buzz about nodes colors, dashed vs solid lines discussion etc., when GN's lacks such essential features.

It is not only problem in case of exporting the ouput to a game engine - we also need to use Realize Instances node to speed up the viewport (GN are not the fastest with high amount of instances), then all the mesh data are cleared as well, so we lose any preview of the result - impossible to work like that. I would appreciate if some developer can at least let us know whether somebody will take care of this limitation as it is clearly the showstopper for many users. It is difficult to understand all the buzz about nodes colors, dashed vs solid lines discussion etc., when GN's lacks such essential features.

Somebody told me of a new "realize instances" node over in a Discord community:

image.png

Just thought I Would point out that it doesnt seem to like UVs either as demonstrated above

Somebody told me of a new "realize instances" node over in a Discord community: ![image.png](https://archive.blender.org/developer/F11388922/image.png) Just thought I Would point out that it doesnt seem to like UVs either as demonstrated above

Added subscriber: @juanandonly

Added subscriber: @juanandonly

Added subscriber: @GeorgiaPacific

Added subscriber: @GeorgiaPacific

Added subscriber: @RC12

Added subscriber: @RC12

In #85962#1122677, @JacquesLucke wrote:
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. @HooglyBoogly, what do you think about that idea?

reading over this post again made it sound like there is a "correct" way to address this problem with Geometry nodes already? I it seems like we all just don't know how to do it?

it sounds like the UV and vertex group and vertex colour data is still there, it just intentionally saved as floats that are no longer automatically being recognized as UV maps etc. this makes me think the "problem" we are all faces here is just a lack of a way to get those floats and save/reassign them in such a way that they are once again recognized as UV/vert data.

for example, a vertex data node that can find these floats and save them recognizable uv/waights/vert color formats?

Is there a way to do this currently? some node which can find the UV/vertex color floats and then reformate them correctly so programs recognize them as uvs/waights/vertex colour etc?

> In #85962#1122677, @JacquesLucke wrote: > 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. @HooglyBoogly, what do you think about that idea? reading over this post again made it sound like there is a "correct" way to address this problem with Geometry nodes already? I it seems like we all just don't know how to do it? it sounds like the UV and vertex group and vertex colour data is still there, it just intentionally saved as floats that are no longer automatically being recognized as UV maps etc. this makes me think the "problem" we are all faces here is just a lack of a way to get those floats and save/reassign them in such a way that they are once again recognized as UV/vert data. for example, a vertex data node that can find these floats and save them recognizable uv/waights/vert color formats? Is there a way to do this currently? some node which can find the UV/vertex color floats and then reformate them correctly so programs recognize them as uvs/waights/vertex colour etc?

In #85962#1239969, @nick-nieuwoudt wrote:
Is there a way to do this currently? some node which can find the UV/vertex color floats and then reformate them correctly so programs recognize them as uvs/waights/vertex colour etc?

This task should be related?
https://developer.blender.org/T91379

But that would be still kind of workaround to something which should be handled automatically in my opinion.
From the user perspective losing UVs and other data by Realize is unexpected behavior and difficult to understand especially when we have the materials assigned correctly in the output mesh.

> In #85962#1239969, @nick-nieuwoudt wrote: > Is there a way to do this currently? some node which can find the UV/vertex color floats and then reformate them correctly so programs recognize them as uvs/waights/vertex colour etc? This task should be related? https://developer.blender.org/T91379 But that would be still kind of workaround to something which should be handled automatically in my opinion. From the user perspective losing UVs and other data by Realize is unexpected behavior and difficult to understand especially when we have the materials assigned correctly in the output mesh.

Added subscriber: @1029910278

Added subscriber: @1029910278

In #85962#1239133, @Olliver wrote:

In #85962#1239131, @JanKaderabek wrote:
No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?).

I can confirm. Actually in the latest alpha its even worse, not you cant even apply instances at all it seems.

It bothers me quite a lot that theres no procedural way of combining objects :/ I dont want to have to go to Houdini for something as simple as this

9glmxYr4M5.mp4

Actually The Most import thing now is to restore the mesh when applying modifiers. #92412

> In #85962#1239133, @Olliver wrote: >> In #85962#1239131, @JanKaderabek wrote: >> No, waiting for that as well. I even asked about this on GN devtalk many times, but didn't get any response from devs regarding this (bug?). > I can confirm. Actually in the latest alpha its even worse, not you cant even apply instances at all it seems. > > It bothers me quite a lot that theres no procedural way of combining objects :/ I dont want to have to go to Houdini for something as simple as this > > [9glmxYr4M5.mp4](https://archive.blender.org/developer/F11361178/9glmxYr4M5.mp4) Actually The Most import thing now is to restore the mesh when applying modifiers. #92412

Removed subscriber: @bjj

Removed subscriber: @bjj
Contributor

Added subscriber: @Eary

Added subscriber: @Eary
Contributor

https://developer.blender.org/D12969
Eevee can render generic attributes now, which at least enables a workaround for now
image.png
image.png

https://developer.blender.org/D12969 Eevee can render generic attributes now, which at least enables a workaround for now ![image.png](https://archive.blender.org/developer/F11534276/image.png) ![image.png](https://archive.blender.org/developer/F11534280/image.png)

In #85962#1242044, @Eary wrote:
https://developer.blender.org/D12969
Eevee can render generic attributes now, which at least enables a workaround for now

This is not true, you're forgetting about people who use blender for game development and need output as a mesh for export to other programs (and never touch Eevee). The solution you mentioned only works if using Eevee renderer as final output

> In #85962#1242044, @Eary wrote: > https://developer.blender.org/D12969 > Eevee can render generic attributes now, which at least enables a workaround for now This is not true, you're forgetting about people who use blender for game development and need output as a mesh for export to other programs (and never touch Eevee). The solution you mentioned only works if using Eevee renderer as final output

In #85962#1243380, @llealloo wrote:

In #85962#1242044, @Eary wrote:
https://developer.blender.org/D12969
Eevee can render generic attributes now, which at least enables a workaround for now

This is not true, you're forgetting about people who use blender for game development and need output as a mesh for export to other programs (and never touch Eevee). The solution you mentioned only works if using Eevee renderer as final output

I can't use this workaround at all because we work with custom shaders generated by an addon which I can't force to use attributes instead of proper uv maps.

> In #85962#1243380, @llealloo wrote: >> In #85962#1242044, @Eary wrote: >> https://developer.blender.org/D12969 >> Eevee can render generic attributes now, which at least enables a workaround for now > > This is not true, you're forgetting about people who use blender for game development and need output as a mesh for export to other programs (and never touch Eevee). The solution you mentioned only works if using Eevee renderer as final output I can't use this workaround at all because we work with custom shaders generated by an addon which I can't force to use attributes instead of proper uv maps.
Member

Added subscriber: @SensArice

Added subscriber: @SensArice
Member

Added subscriber: @Consta

Added subscriber: @Consta

Added subscriber: @stout

Added subscriber: @stout

In #85962#1243380, @llealloo wrote:

In #85962#1242044, @Eary wrote:
https://developer.blender.org/D12969
Eevee can render generic attributes now, which at least enables a workaround for now

This is not true, you're forgetting about people who use blender for game development and need output as a mesh for export to other programs (and never touch Eevee). The solution you mentioned only works if using Eevee renderer as final output

Seconding what Leah has mentioned. For game developers, using Blender to procedurally place instances via Geo Nodes is largely useless for game developers who aren't using flat shaded styles. UVMap data has to be included as an output to make Blender even remotely competitive with Maya's MASH or Houdini's tools.

I really hope retention of UV data is introduced soon. It would be an incredibly useful feature for what is already a really promising package.

> In #85962#1243380, @llealloo wrote: >> In #85962#1242044, @Eary wrote: >> https://developer.blender.org/D12969 >> Eevee can render generic attributes now, which at least enables a workaround for now > > This is not true, you're forgetting about people who use blender for game development and need output as a mesh for export to other programs (and never touch Eevee). The solution you mentioned only works if using Eevee renderer as final output Seconding what Leah has mentioned. For game developers, using Blender to procedurally place instances via Geo Nodes is largely useless for game developers who aren't using flat shaded styles. UVMap data has to be included as an output to make Blender even remotely competitive with Maya's MASH or Houdini's tools. I really hope retention of UV data is introduced soon. It would be an incredibly useful feature for what is already a really promising package.

Added subscriber: @Lorenzo-Clerici

Added subscriber: @Lorenzo-Clerici
Member

Added subscriber: @NKO

Added subscriber: @NKO

Added subscriber: @MiroHorvath

Added subscriber: @MiroHorvath
Member

Added subscriber: @ramonkarlos

Added subscriber: @ramonkarlos

Added subscriber: @Gudjon-Orn-Larusson

Added subscriber: @Gudjon-Orn-Larusson

I am dealing with this exact problem as well. I am using geonodes as a scattertool and procedural modeler for VFX and retaining UV´s is pretty important if we want to be able to utilize it in out setdressing pipeline, as we render outside of blender.

I am dealing with this exact problem as well. I am using geonodes as a scattertool and procedural modeler for VFX and retaining UV´s is pretty important if we want to be able to utilize it in out setdressing pipeline, as we render outside of blender.

Added subscriber: @DrMc

Added subscriber: @DrMc

Added subscriber: @dhieen

Added subscriber: @dhieen

Hello, I encountered the same issue, I'm working on a large scene that i export on unreal engine; it's a ruined church so there are alot of bricks
I placed them by hands but then i discovered geometry nodes and a very simple node setup allowed me to use vertices to place my 3 different brick models ( low poly models and i baked high poly on them to have a nice texture)
So I tried to export this but the geo nodes werent visible in the fbx, after i put a realize instance node, the geometry is visible but without any uv unwrap
I didn't read the whole discussion but it seems that there is no official fix to this? Not any addon that could fix this too?
Geo nodes are amazing but if you cant use it for games its very frustrating

Some of my results: https://gyazo.com/54a491dd53d21ef1de0956e2505f79e5
image.png
image.png
image.png

Hello, I encountered the same issue, I'm working on a large scene that i export on unreal engine; it's a ruined church so there are alot of bricks I placed them by hands but then i discovered geometry nodes and a very simple node setup allowed me to use vertices to place my 3 different brick models ( low poly models and i baked high poly on them to have a nice texture) So I tried to export this but the geo nodes werent visible in the fbx, after i put a realize instance node, the geometry is visible but without any uv unwrap I didn't read the whole discussion but it seems that there is no official fix to this? Not any addon that could fix this too? Geo nodes are amazing but if you cant use it for games its very frustrating Some of my results: https://gyazo.com/54a491dd53d21ef1de0956e2505f79e5 ![image.png](https://archive.blender.org/developer/F11814187/image.png) ![image.png](https://archive.blender.org/developer/F11814179/image.png) ![image.png](https://archive.blender.org/developer/F11814177/image.png)

I did find a workaround which does break some stuff inside of geonodes but does export everything with uvs.

In the viewport press space and write "make instances real" Then you get a model with uvs that you can export.

I did find a workaround which does break some stuff inside of geonodes but does export everything with uvs. In the viewport press space and write "make instances real" Then you get a model with uvs that you can export.

In #85962#1254348, @Gudjon-Orn-Larusson wrote:
I did find a workaround which does break some stuff inside of geonodes but does export everything with uvs.

In the viewport press space and write "make instances real" Then you get a model with uvs that you can export.

This is not applicable for larger amount of instances, i.e. in case of scattering, because Make Instances Real would generate thousands of objects which will freeze Blender.
That's why we need Realize to get working properly.

> In #85962#1254348, @Gudjon-Orn-Larusson wrote: > I did find a workaround which does break some stuff inside of geonodes but does export everything with uvs. > > In the viewport press space and write "make instances real" Then you get a model with uvs that you can export. This is not applicable for larger amount of instances, i.e. in case of scattering, because Make Instances Real would generate thousands of objects which will freeze Blender. That's why we need Realize to get working properly.

In #85962#1254348, @Gudjon-Orn-Larusson wrote:
I did find a workaround which does break some stuff inside of geonodes but does export everything with uvs.

In the viewport press space and write "make instances real" Then you get a model with uvs that you can export.

Perfect its working for me! And i dont have very large amount of instances, like 30, 40 instances on the same object at max so i can make instances real for each objects without blender crashing

> In #85962#1254348, @Gudjon-Orn-Larusson wrote: > I did find a workaround which does break some stuff inside of geonodes but does export everything with uvs. > > In the viewport press space and write "make instances real" Then you get a model with uvs that you can export. Perfect its working for me! And i dont have very large amount of instances, like 30, 40 instances on the same object at max so i can make instances real for each objects without blender crashing

In #85962#1254348, @Gudjon-Orn-Larusson wrote:
I did find a workaround which does break some stuff inside of geonodes but does export everything with uvs.

In the viewport press space and write "make instances real" Then you get a model with uvs that you can export.

Unfortunately "Make instances real" doesn't work when there is any modifier past geometry nodes. And also doesn't output as single object even if join geometry node is present in geometry nodes.

> In #85962#1254348, @Gudjon-Orn-Larusson wrote: > I did find a workaround which does break some stuff inside of geonodes but does export everything with uvs. > > In the viewport press space and write "make instances real" Then you get a model with uvs that you can export. Unfortunately "Make instances real" doesn't work when there is any modifier past geometry nodes. And also doesn't output as single object even if join geometry node is present in geometry nodes.

In #85962#1254493, @eru wrote:
Unfortunately "Make instances real" doesn't work when there is any modifier past geometry nodes. And also doesn't output as single object even if join geometry node is present in geometry nodes.

Though the "Make instances real" doesn't create a single object, just worth keeping in mind that sometimes we do want the option of having multiple individual objects instead of one large one. But yeah, I agree, and see the need to output one large object with UV's... As long as we can get UV's in either configuration, I think it'll be a huge upgrade.

(It's probably a separate task/issue, but same goes for vertex colours, which are often used to drive special characteristics of real-time shaders such as wind, material blending, etc etc.)

> In #85962#1254493, @eru wrote: > Unfortunately "Make instances real" doesn't work when there is any modifier past geometry nodes. And also doesn't output as single object even if join geometry node is present in geometry nodes. Though the "Make instances real" doesn't create a single object, just worth keeping in mind that sometimes we do want the option of having multiple individual objects instead of one large one. But yeah, I agree, and see the need to output one large object with UV's... As long as we can get UV's in either configuration, I think it'll be a huge upgrade. (It's probably a separate task/issue, but same goes for vertex colours, which are often used to drive special characteristics of real-time shaders such as wind, material blending, etc etc.)

Yesss vertex colors would be amazing.

Yesss vertex colors would be amazing.

It seems counterintuitive that the join node in geometry nodes with default output options would behave any differently than the regular join command in blender. I think this has already been mentioned, but I think it's worth saying again.

It seems counterintuitive that the join node in geometry nodes with default output options would behave any differently than the regular join command in blender. I think this has already been mentioned, but I think it's worth saying again.

Added subscriber: @renderart

Added subscriber: @renderart

Added subscriber: @SteffenD

Added subscriber: @SteffenD

Added subscriber: @Yuro

Added subscriber: @Yuro

Added subscriber: @Emerson

Added subscriber: @Emerson
Member

Added subscriber: @null

Added subscriber: @null

Added subscriber: @ChristophWerner

Added subscriber: @ChristophWerner

Added subscriber: @JacobMerrill-1

Added subscriber: @JacobMerrill-1

Added subscriber: @qbicksan

Added subscriber: @qbicksan

Added subscriber: @aabbcc872

Added subscriber: @aabbcc872

Added subscriber: @Festivity

Added subscriber: @Festivity
Member

Added subscriber: @SubhadeepChowdhury

Added subscriber: @SubhadeepChowdhury

Added subscriber: @lictex_1

Added subscriber: @lictex_1

As mentioned above one option is to use the Attribute node in the Shader editor, for the name just use the exact name as you used in your UV map, and apply the texture to the same geometry. Here's an example

image.png

However the Blender developers are to be forgiven that they see things from a in-Blender rendering perspective, the problem with this is that the Blender shader doesn't export with the geometry in the FBX, as a UV map does. The whole issue is warned in the Blender docs , and it does appear to be fundamental to the generic attribute system

image.png

So unless somebody knows a way to transfer a UV map from a shader to the geometry in an export FBX, then the method must be to manually transfer the UV across the realize instances gap. It can be done via the little script above, or "Object > Link/Transfer Data/UV Maps". This can be tedious with a lot of realized instances.

Also note some issues. One is that it only transfers across the first UV map, a script is needed to copy them all across. Two is that Realize Instances + Apply Geo node modifier creates a single object. To transfer a UV you have to separate all the pieces to their corresponding parts, transfer the UV's to each respectively, then optionally join them all up together again.

Would make a good (free) small addon if anybody has a moment.

As mentioned above one option is to use the Attribute node in the Shader editor, for the name just use the exact name as you used in your UV map, and apply the texture to the same geometry. Here's an example ![image.png](https://archive.blender.org/developer/F12799944/image.png) However the Blender developers are to be forgiven that they see things from a in-Blender rendering perspective, the problem with this is that the Blender shader doesn't export with the geometry in the FBX, as a UV map does. The whole issue is warned in the Blender [docs ](https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/instances/realize_instances.html?highlight=realize%20instances), and it does appear to be fundamental to the generic attribute system ![image.png](https://archive.blender.org/developer/F12799949/image.png) So unless somebody knows a way to transfer a UV map from a shader to the geometry in an export FBX, then the method must be to manually transfer the UV across the realize instances gap. It can be done via the little script above, or "Object > Link/Transfer Data/UV Maps". This can be tedious with a lot of realized instances. Also note some issues. One is that it only transfers across the first UV map, a script is needed to copy them all across. Two is that Realize Instances + Apply Geo node modifier creates a single object. To transfer a UV you have to separate all the pieces to their corresponding parts, transfer the UV's to each respectively, then optionally join them all up together again. Would make a good (free) small addon if anybody has a moment.
Member

Added subscriber: @nacioss

Added subscriber: @nacioss

In #85962#1285910, @DrMc wrote:
Would make a good (free) small addon if anybody has a moment.

Currently GNodes kind of ignore game artists and other users who need to further manipulate with the generated output (instead of just rendering it), which is difficult to understand to me. We still can't do such simple task as scatter some objects and get / export the resulted mesh with all the data prevented.
UV maps, vertex colors, vertex groups. etc. are still standard attributes used everywhere in the industry (and even in Blender tool / addons itself), and a notice about Blender 3.0 not handling it anyway won't change anything about it, it just needs to be supported.

Also IMHO if a modifier messes up the result after hitting Apply (or using Realize node), I woudn't be even afraid to call such behavior bug - it just doesn't do what a user expects and how all the other modifiers work.
And bugs should be fixed, instead of creating addons to overcome them.
I don't get how GNodes can keep getting all those new features over last months without fixing this basic limitation (bug) first.
I can understand resolving this can be very difficult, but considering how important is this (the amount of subscribers confirm that), I believe we deserve at least some response from developers to know there are some plans regarding the task.

> In #85962#1285910, @DrMc wrote: > Would make a good (free) small addon if anybody has a moment. Currently GNodes kind of ignore game artists and other users who need to further manipulate with the generated output (instead of just rendering it), which is difficult to understand to me. We still can't do such simple task as scatter some objects and get / export the resulted mesh with all the data prevented. UV maps, vertex colors, vertex groups. etc. are still standard attributes used everywhere in the industry (and even in Blender tool / addons itself), and a notice about Blender 3.0 not handling it anyway won't change anything about it, it just needs to be supported. Also IMHO if a modifier messes up the result after hitting Apply (or using Realize node), I woudn't be even afraid to call such behavior bug - it just doesn't do what a user expects and how all the other modifiers work. And bugs should be fixed, instead of creating addons to overcome them. I don't get how GNodes can keep getting all those new features over last months without fixing this basic limitation (bug) first. I can understand resolving this can be very difficult, but considering how important is this (the amount of subscribers confirm that), I believe we deserve at least some response from developers to know there are some plans regarding the task.

All the suggestions are workaround in some way or the other but don't really give solid solution.
Making instance real works for fixed models but then in case of motion graphics its not a option.
In case of moving effect, you can render out some stuff in blender using UVMap attribute but that only works for plain instances not with complex results such as Boolean etc.
Also despite of using UVMap attribute in cycles , things like Random( object info node in cycles ) and ( Random Per Island) etc dont work well and create a flickering value for each frame.
I really hope this is priority, its been a known issue and its hurting GeoNodes usability.

All the suggestions are workaround in some way or the other but don't really give solid solution. Making instance real works for fixed models but then in case of motion graphics its not a option. In case of moving effect, you can render out some stuff in blender using UVMap attribute but that only works for plain instances not with complex results such as Boolean etc. Also despite of using UVMap attribute in cycles , things like Random( object info node in cycles ) and ( Random Per Island) etc dont work well and create a flickering value for each frame. I really hope this is priority, its been a known issue and its hurting GeoNodes usability.

Added subscriber: @EvaVomhoff

Added subscriber: @EvaVomhoff

Added subscriber: @Shak404

Added subscriber: @Shak404
Member

Does this help in your workflows f6888b530a ?

Does this help in your workflows f6888b530a ?

In #85962#1292483, @lichtwerk wrote:
Does this help in your workflows f6888b530a ?

Personal opinion:
As long as I cant see the end result without the modifiers applied, I atleast still wouldnt use it in any scenario that requires UV maps/good normals.

The existing hackaround with the python script shared a little above in this thread does pretty much what this new commit allows already as I've understood it (and like many others here I don't find it a very convenient solution).

> In #85962#1292483, @lichtwerk wrote: > Does this help in your workflows f6888b530a ? Personal opinion: As long as I cant see the end result without the modifiers applied, I atleast still wouldnt use it in any scenario that requires UV maps/good normals. The existing hackaround with the python script shared a little above in this thread does pretty much what this new commit allows already as I've understood it (and like many others here I don't find it a very convenient solution).

Jacque noted that this is temporary until the greater system can handle generic attributes.

Personal Opinion: happy to have the built in workaround

Jacque noted that this is temporary until the greater system can handle generic attributes. Personal Opinion: happy to have the built in workaround
Member

Added subscribers: @TheToxicJ, @jibha

Added subscribers: @TheToxicJ, @jibha

In #85962#1292607, @DrMc wrote:
Jacque noted that this is temporary until the greater system can handle generic attributes.

Personal Opinion: happy to have the built in workaround

We could already transfer attributes to classic layers using the script which has been shared here, this just makes it more accessible by adding an UI for that.
But what we are asking for here is the support for classic layers withinGNodes - means while working with it, not after applying the modifier. So this workaround isn't actually any workaround for that.
For example in my case I am working with an addon which relies on custom shaders and those require using classic UV Map. So with the current GNodes I lose all the mapping if I use for example Realize Instances node, so I can't see what I am doing anymore. The fact that I can get UVs back after applying the modifier doesn't help me at all.

> In #85962#1292607, @DrMc wrote: > Jacque noted that this is temporary until the greater system can handle generic attributes. > > Personal Opinion: happy to have the built in workaround We could already transfer attributes to classic layers using the script which has been shared here, this just makes it more accessible by adding an UI for that. But what we are asking for here is the support for *classic layers* **within**GNodes - means while working with it, not after applying the modifier. So this workaround isn't actually any workaround for that. For example in my case I am working with an addon which relies on custom shaders and those require using classic UV Map. So with the current GNodes I lose all the mapping if I use for example Realize Instances node, so I can't see what I am doing anymore. The fact that I can get UVs back after applying the modifier doesn't help me at all.

Added subscriber: @isaacryu

Added subscriber: @isaacryu

Also dealing with this exact same issue built a tree generator hoping to be able to export it to Unity, but none of the textures work correctly. This feels like an incredibly basic and overlooked feature. Hoping a fix comes soon.

Also dealing with this exact same issue built a tree generator hoping to be able to export it to Unity, but none of the textures work correctly. This feels like an incredibly basic and overlooked feature. Hoping a fix comes soon.

Added subscribers: @Gyoo18, @lone_noel

Added subscribers: @Gyoo18, @lone_noel

Please dont push on this any further :V KgkSPktkmf.mp4

The whole point of geometry nodes is to allow for things more non-destructive after all

Couldnt you just add a setting on the geometry node modifier to convert back to Legacy map types?

I feel this also sort of prevents development of UV modification in geo nodes - something that I would personally be looking forward a lot to as UV unwrapping is a somewhat cumbersome process to do by hand.

Please dont push on this any further :V [KgkSPktkmf.mp4](https://archive.blender.org/developer/F12850748/KgkSPktkmf.mp4) The whole point of geometry nodes is to allow for things more non-destructive after all Couldnt you just add a setting on the geometry node modifier to convert back to Legacy map types? I feel this also sort of prevents development of UV modification in geo nodes - something that I would personally be looking forward a lot to as UV unwrapping is a somewhat cumbersome process to do by hand.

Added subscriber: @Pablo_Caracena

Added subscriber: @Pablo_Caracena

Added subscriber: @Dragosh

Added subscriber: @Dragosh

I'm trying to apply instanced trees on the mesh, the UV disappears after realizing instances, i'm trying to import that applied mesh to unreal but the loss of UV after instance realization is quite frustrating, if not impossible to work with.

I'm trying to apply instanced trees on the mesh, the UV disappears after realizing instances, i'm trying to import that applied mesh to unreal but the loss of UV after instance realization is quite frustrating, if not impossible to work with.

Added subscriber: @Mallta

Added subscriber: @Mallta

Added subscriber: @Elmazz

Added subscriber: @Elmazz

image.png
image.png
Same issue. Just trying to make a simple building for a game.

![image.png](https://archive.blender.org/developer/F12878196/image.png) ![image.png](https://archive.blender.org/developer/F12878194/image.png) Same issue. Just trying to make a simple building for a game.

Added subscriber: @HeCorr

Added subscriber: @HeCorr

I wonder if this will be fixed soon.. It's a pretty big letdown for a project I'm working on which involves dynamically showing parts of a mesh (and procedurally merging verts by distance to avoid SSS seams)..

Because of this bug I ended up having to duplicate a lot of meshes :(

I wonder if this will be fixed soon.. It's a pretty big letdown for a project I'm working on which involves dynamically showing parts of a mesh (and procedurally merging verts by distance to avoid SSS seams).. Because of this bug I ended up having to duplicate a lot of meshes :(

Added subscriber: @nl

Added subscriber: @nl

Added subscriber: @dreamparacite

Added subscriber: @dreamparacite

Added subscriber: @Fabian_G

Added subscriber: @Fabian_G

Added subscriber: @warcanin

Added subscriber: @warcanin

I don't even understand why is this a problem.
I am on the lastest 3.2 alpha so maybe there was something added that was not present before but if your goal is to export to a game engine you either want to have multiple instances of the same object wich you would make instance real or you would want everything to be joined on one mesh and you would use realize instance.
In the case of make instance real the UV are already there and in the case of realize instance you just have to go to the attributes of the object and convert them to an UVmap and it's done.

If anyone can tell me if i didn't understand the root of the problem it would be appreciated.

I don't even understand why is this a problem. I am on the lastest 3.2 alpha so maybe there was something added that was not present before but if your goal is to export to a game engine you either want to have multiple instances of the same object wich you would make instance real or you would want everything to be joined on one mesh and you would use realize instance. In the case of make instance real the UV are already there and in the case of realize instance you just have to go to the attributes of the object and convert them to an UVmap and it's done. If anyone can tell me if i didn't understand the root of the problem it would be appreciated.

In #85962#1326032, @warcanin wrote:
I don't even understand why is this a problem.
I am on the lastest 3.2 alpha so maybe there was something added that was not present before but if your goal is to export to a game engine you either want to have multiple instances of the same object wich you would make instance real or you would want everything to be joined on one mesh and you would use realize instance.
In the case of make instance real the UV are already there and in the case of realize instance you just have to go to the attributes of the object and convert them to an UVmap and it's done.

If anyone can tell me if i didn't understand the root of the problem it would be appreciated.

The issue is that it makes it more difficult to preview your data, its a lot of button presses just to see what you are doing with the data your are manipulating

> In #85962#1326032, @warcanin wrote: > I don't even understand why is this a problem. > I am on the lastest 3.2 alpha so maybe there was something added that was not present before but if your goal is to export to a game engine you either want to have multiple instances of the same object wich you would make instance real or you would want everything to be joined on one mesh and you would use realize instance. > In the case of make instance real the UV are already there and in the case of realize instance you just have to go to the attributes of the object and convert them to an UVmap and it's done. > > If anyone can tell me if i didn't understand the root of the problem it would be appreciated. The issue is that it makes it more difficult to preview your data, its a lot of button presses just to see what you are doing with the data your are manipulating

https://developer.blender.org/D14389

looks like a UV system may be in the works

https://developer.blender.org/D14389 looks like a UV system may be in the works

In #85962#1326032, @warcanin wrote:
I don't even understand why is this a problem.

While the workarounds will do the job in most cases, they are still only workarounds to something which should be handled automatically in my opinion. The need of handling this manually makes the workflow sluggish and prone to errors.
A modifier which produces different results after hitting apply can be (in my opinion) considered as bug, same with loosing preview of the work by including Realize Instances - this is just not the expected behavior. You can't expect users to have idea about attributes, why their data are converted etc., they will just see their work broken without clear reason.
Also in some cases none of the mentioned workarounds help - for example if you want to use Realize Instances while working with GNodes (i.e. to improve the viewport performance when working with large amount of instances) and you need legacy data to be prevented for whatever reason (i.e. for a 3rd party addons compatibility, like custom shaders which don't support attributes).

> In #85962#1326032, @warcanin wrote: > I don't even understand why is this a problem. While the workarounds will do the job in most cases, they are still only workarounds to something which should be handled automatically in my opinion. The need of handling this manually makes the workflow sluggish and prone to errors. A modifier which produces different results after hitting apply can be (in my opinion) considered as bug, same with loosing preview of the work by including Realize Instances - this is just not the expected behavior. You can't expect users to have idea about attributes, why their data are converted etc., they will just see their work broken without clear reason. Also in some cases none of the mentioned workarounds help - for example if you want to use Realize Instances while working with GNodes (i.e. to improve the viewport performance when working with large amount of instances) and you need legacy data to be prevented for whatever reason (i.e. for a 3rd party addons compatibility, like custom shaders which don't support attributes).

In #85962#1326032, @warcanin wrote:
In the case of make instance real the UV are already there and in the case of realize instance you just have to go to the attributes of the object and convert them to an UVmap and it's done.

I remember trying to transfer/set UV maps after realizing instances and it did literally nothing. And it was on 3.2 as well.

> In #85962#1326032, @warcanin wrote: > In the case of make instance real the UV are already there and in the case of realize instance you just have to go to the attributes of the object and convert them to an UVmap and it's done. I remember trying to transfer/set UV maps after realizing instances and it did literally nothing. And it was on 3.2 as well.

TBH, the custom operator is a little too complicated for a dummy like me.

In #85962#1326042, @JanKaderabek wrote:

In #85962#1326032, @warcanin wrote:
I don't even understand why is this a problem.

While the workarounds will do the job in most cases, they are still only workarounds to something which should be handled automatically in my opinion. The need of handling this manually makes the workflow sluggish and prone to errors.
A modifier which produces different results after hitting apply can be (in my opinion) considered as bug, same with loosing preview of the work by including Realize Instances - this is just not the expected behavior. You can't expect users to have idea about attributes, why their data are converted etc., they will just see their work broken without clear reason.
Also in some cases none of the mentioned workarounds help - for example if you want to use Realize Instances while working with GNodes (i.e. to improve the viewport performance when working with large amount of instances) and you need legacy data to be prevented for whatever reason (i.e. for a 3rd party addons compatibility, like custom shaders which don't support attributes).

I think these are totally legit concerns you mention re: 3rd party plugins, etc. From a professional game artist point of view though, UV Maps are just SUCH an incredibly basic, fundamental, and necessary feature; to hear any argument attempting to rationalize why they aren't included, or the feature's development can be kicked down the road, can feel pretty frustrating or dismissive. 99% of assets in gameart rely on UVs. Procedural shader effects in AAA production gameart are almost 100% secondary, and only exist to complement the work done on top of the authored texture & UV maps.

All that said, this is still a really complex, awesome piece of software, and I appreciate the work folks are putting in to develop this feature. Still really looking forward to this being realized.

TBH, the custom operator is a little too complicated for a dummy like me. > In #85962#1326042, @JanKaderabek wrote: >> In #85962#1326032, @warcanin wrote: >> I don't even understand why is this a problem. > While the workarounds will do the job in most cases, they are still only workarounds to something which should be handled automatically in my opinion. The need of handling this manually makes the workflow sluggish and prone to errors. > A modifier which produces different results after hitting apply can be (in my opinion) considered as bug, same with loosing preview of the work by including Realize Instances - this is just not the expected behavior. You can't expect users to have idea about attributes, why their data are converted etc., they will just see their work broken without clear reason. > Also in some cases none of the mentioned workarounds help - for example if you want to use Realize Instances while working with GNodes (i.e. to improve the viewport performance when working with large amount of instances) and you need legacy data to be prevented for whatever reason (i.e. for a 3rd party addons compatibility, like custom shaders which don't support attributes). I think these are totally legit concerns you mention re: 3rd party plugins, etc. From a professional game artist point of view though, UV Maps are just *SUCH* an incredibly basic, fundamental, and necessary feature; to hear any argument attempting to rationalize why they aren't included, or the feature's development can be kicked down the road, can feel pretty frustrating or dismissive. 99% of assets in gameart rely on UVs. Procedural shader effects in AAA production gameart are almost 100% secondary, and only exist to complement the work done on top of the authored texture & UV maps. All that said, this is still a really complex, awesome piece of software, and I appreciate the work folks are putting in to develop this feature. Still really looking forward to this being realized.
Member

Removed subscriber: @nacioss

Removed subscriber: @nacioss
Member

Removed subscriber: @lone_noel

Removed subscriber: @lone_noel

Removed subscriber: @DanteBoi

Removed subscriber: @DanteBoi

In #85962#1326040, @JacobMerrill-1 wrote:
https://developer.blender.org/D14389

looks like a UV system may be in the works

hype! I love it

can't wait to see a solution for this!

> In #85962#1326040, @JacobMerrill-1 wrote: > https://developer.blender.org/D14389 > > looks like a UV system may be in the works hype! I love it can't wait to see a solution for this!
Contributor

Added subscriber: @jure

Added subscriber: @jure
Member

Added subscriber: @27Anonymous

Added subscriber: @27Anonymous

Removed subscriber: @juanandonly

Removed subscriber: @juanandonly

Added subscriber: @juanandonly

Added subscriber: @juanandonly

Removed subscriber: @dreamparacite

Removed subscriber: @dreamparacite

Added subscriber: @GaryRitchie

Added subscriber: @GaryRitchie

Added subscriber: @tjonteh

Added subscriber: @tjonteh

Added subscriber: @timosaki

Added subscriber: @timosaki

This is very critical imo. As a 3d artist working in games I got really excited to learn geometry nodes but quickly learned that UVS disappear after realizing instances, which completely ruins geometry nodes for use in games.

This is very critical imo. As a 3d artist working in games I got really excited to learn geometry nodes but quickly learned that UVS disappear after realizing instances, which completely ruins geometry nodes for use in games.

Added subscriber: @fishsnack

Added subscriber: @fishsnack

Added subscriber: @element42

Added subscriber: @element42

Added subscriber: @Gandarufu

Added subscriber: @Gandarufu

Added subscriber: @Ezeon

Added subscriber: @Ezeon

I just ran my tests again in 3.3.0 and it's definitely still not fixed. That's honestly pretty disappointing.

I just ran my tests again in 3.3.0 and it's definitely still not fixed. That's honestly pretty disappointing.

In #85962#1351369, @HeCorr wrote:
I just ran my tests again in 3.3.0 and it's definitely still not fixed. That's honestly pretty disappointing.

Hi, look up in the title: it says Confirmed, Normal.
There are many tasks to be solved by developers and with High priority:
Open task

> In #85962#1351369, @HeCorr wrote: > I just ran my tests again in 3.3.0 and it's definitely still not fixed. That's honestly pretty disappointing. Hi, look up in the title: it says Confirmed, Normal. There are many tasks to be solved by developers and with High priority: [Open task ](https://developer.blender.org/maniphest/query/open/)

Added subscriber: @somaistaken

Added subscriber: @somaistaken
Author

It also says KNOWN ISSUE, so yeah it ain't solved. A simple Join Geometry with two meshes kills the UV, or realizing scattered instances. Seems like a hard issue to fix since it have been over a year now since I first reported the Join Geometry bug. Lets hope they find a solution soon since I regularly stumble upon this :\ :)

It also says KNOWN ISSUE, so yeah it ain't solved. A simple Join Geometry with two meshes kills the UV, or realizing scattered instances. Seems like a hard issue to fix since it have been over a year now since I first reported the Join Geometry bug. Lets hope they find a solution soon since I regularly stumble upon this :\ :)

Added subscriber: @Bradley_G

Added subscriber: @Bradley_G

Many people have misunderstanding of the issue status imo.

  1. If you are working in Blender. This isn't an issue for most of cases, you can use "Attribute" node in shader to load UV attribute instead of "Texture Coordinate"'s UV.
  2. If you are exporting your object, you have to apply the modifier and use attribute converter .
    People complain that applying the modifier will lose the proceduralism. However you can always duplicate your object as a backup. If you want to edit anything, you can come back to your node tree, change parameters, apply modifier and use attribute converter again.
    This method definitely seems more of a temporary workaround and have some downside, but it also solves lots of problems in the mean time.
    so at least this problem isn't as unsolvable as most people think. It's not like a crash bug that you can't do anything with it.
Many people have misunderstanding of the issue status imo. 1. If you are working in Blender. This isn't an issue for most of cases, you can use "**Attribute**" node in shader to load UV attribute instead of "**Texture Coordinate**"'s UV. 2. If you are exporting your object, you have to apply the modifier and use **[attribute converter ](https://developer.blender.org/rBf6888b530ac81abbe61755971449ad6b42b93c82)**. People complain that applying the modifier will lose the proceduralism. However you can always duplicate your object as a backup. If you want to edit anything, you can come back to your node tree, change parameters, apply modifier and use attribute converter again. This method definitely seems more of a temporary workaround and have some downside, but it also solves lots of problems in the mean time. so at least this problem isn't as unsolvable as most people think. It's not like a crash bug that you can't do anything with it.

In #85962#1352197, @Bradley_G wrote:

  1. If you are working in Blender. This isn't an issue for most of cases, you can use "Attribute" node in shader to load UV attribute instead of "Texture Coordinate"'s UV.

I just tested it and it does not work. same behavior.

> In #85962#1352197, @Bradley_G wrote: > 1. If you are working in Blender. This isn't an issue for most of cases, you can use "**Attribute**" node in shader to load UV attribute instead of "**Texture Coordinate**"'s UV. I just tested it and it does not work. same behavior.

In #85962#1352201, @HeCorr wrote:

In #85962#1352197, @Bradley_G wrote:

  1. If you are working in Blender. This isn't an issue for most of cases, you can use "Attribute" node in shader to load UV attribute instead of "Texture Coordinate"'s UV.

I just tested it and it does not work. same behavior.

Make sure you are using the correct UV attribute that you can find in the face corner domain. Either "UVMap" or "uv_map".
There are tutorials on youtube/google talking about it. I can assure you this will work if you've done things correctly.

> In #85962#1352201, @HeCorr wrote: >> In #85962#1352197, @Bradley_G wrote: >> 1. If you are working in Blender. This isn't an issue for most of cases, you can use "**Attribute**" node in shader to load UV attribute instead of "**Texture Coordinate**"'s UV. > > I just tested it and it does not work. same behavior. Make sure you are using the correct UV attribute that you can find in the face corner domain. Either "UVMap" or "uv_map". There are tutorials on youtube/google talking about it. I can assure you this will work if you've done things correctly.

This comment was removed by @HeCorr

*This comment was removed by @HeCorr*

Okay, it does seem to work on a simpler scene but I'm still having difficulties getting it to work on my actual project.. but this is a big step already.

image.png

@Bradley_G thank you so much

edit: I figured it out. the imported models had "UV0" as the UV maps instead of "UVMap".

Okay, it does seem to work on a simpler scene but I'm still having difficulties getting it to work on my actual project.. but this is a big step already. ![image.png](https://archive.blender.org/developer/F13053800/image.png) @Bradley_G thank you so much edit: I figured it out. the imported models had "UV0" as the UV maps instead of "UVMap".

Removed subscriber: @HoffmanWood

Removed subscriber: @HoffmanWood

Added subscriber: @Saseska

Added subscriber: @Saseska
Member

Added subscriber: @PaulGeraskin

Added subscriber: @PaulGeraskin
Member

Found this issue. UVs disappear after GN. {F13115075}Blend file is attached.

image.png

Found this issue. UVs disappear after GN. {[F13115075](https://archive.blender.org/developer/F13115075/tmp_1.blend)}Blend file is attached. ![image.png](https://archive.blender.org/developer/F13115073/image.png)

Added subscriber: @Kao-Nocturatzu

Added subscriber: @Kao-Nocturatzu

Added subscriber: @Yaneko-1

Added subscriber: @Yaneko-1

Hi everyone,

I have the same kind of problem with "Realize Instances", when I want to join my instances and then "Merge by Distance" and "Subdivision Surface".

I tried the solution of adding the attribute to the material and it does not work properly. The UVs are still missing from the new object, even if some kind of display appears.
The main problem is that even if the texture appears in the right place, it is not affected correctly by the subdivision.

image.png

When the GeometryNodes modifier is applied, the UVs are lost. The only solution I have found is to resign myself to not merging or subdividing in the GeometryNodes, but to perform these operations on the object after applying the modifier.
But it's a bit frustrating because I have the impression that the result I could get dynamically is very close...

Is Blender team working on that ?

Thank you !

Hi everyone, I have the same kind of problem with "Realize Instances", when I want to join my instances and then "Merge by Distance" and "Subdivision Surface". I tried the solution of ***adding the attribute to the material and it does not work properly***. The UVs are still missing from the new object, even if some kind of display appears. The main problem is that even if the texture appears in the right place, it is not affected correctly by the subdivision. ![image.png](https://archive.blender.org/developer/F13172773/image.png) When the GeometryNodes modifier is applied, the UVs are lost. The only solution I have found is to resign myself to not merging or subdividing in the GeometryNodes, but to perform these operations on the object after applying the modifier. But it's a bit frustrating because I have the impression that the result I could get dynamically is very close... Is Blender team working on that ? Thank you !

In #85962#1365670, @PaulGeraskin wrote:
Found this issue. UVs disappear after GN. {F13115075}Blend file is attached.

image.png

After you apply Geometry nodes, an attribute called UVMap appears in (new) Attributes panel
image.png
After that, you have to convert that attribute by clicking an arrow and "Convert Attribute". Then choose mode as UV Map.
image.png
After this UVMap will be created and attribute will disappear (conversion).
image.png
And UVs are back again.
image.png

I guess it's how it works now.

> In #85962#1365670, @PaulGeraskin wrote: > Found this issue. UVs disappear after GN. {[F13115075](https://archive.blender.org/developer/F13115075/tmp_1.blend)}Blend file is attached. > > > > ![image.png](https://archive.blender.org/developer/F13115073/image.png) After you apply Geometry nodes, an attribute called UVMap appears in (new) Attributes panel ![image.png](https://archive.blender.org/developer/F13172843/image.png) After that, you have to convert that attribute by clicking an arrow and "Convert Attribute". Then choose mode as UV Map. ![image.png](https://archive.blender.org/developer/F13172850/image.png) After this UVMap will be created and attribute will disappear (conversion). ![image.png](https://archive.blender.org/developer/F13172856/image.png) And UVs are back again. ![image.png](https://archive.blender.org/developer/F13172860/image.png) I guess it's how it works now.

In #85962#1375353, @eru wrote:

After you apply Geometry nodes, an attribute called UVMap appears in (new) Attributes panel
After that, you have to convert that attribute by clicking an arrow and "Convert Attribute". Then choose mode as UV Map.
After this UVMap will be created and attribute will disappear (conversion).
And UVs are back again.

I guess it's how it works now.

Thank you for your intervention.

I made these operations and I recovered my UVs, but they are still not affected by the subdivision as the "Subdivision surface" is used in the GeometryNodes.

> In #85962#1375353, @eru wrote: > > After you apply Geometry nodes, an attribute called UVMap appears in (new) Attributes panel > After that, you have to convert that attribute by clicking an arrow and "Convert Attribute". Then choose mode as UV Map. > After this UVMap will be created and attribute will disappear (conversion). > And UVs are back again. > > I guess it's how it works now. Thank you for your intervention. I made these operations and I recovered my UVs, but they are still not affected by the subdivision as the "Subdivision surface" is used in the GeometryNodes.
Member

Added subscriber: @Rincewind3D-1

Added subscriber: @Rincewind3D-1

In #85962#1326040, @JacobMerrill-1 wrote:
https://developer.blender.org/D14389

looks like a UV system may be in the works

This is of course helpful, but no improvement if you have to keep the original UVs of the joined meshes.

> In #85962#1326040, @JacobMerrill-1 wrote: > https://developer.blender.org/D14389 > > looks like a UV system may be in the works This is of course helpful, but no improvement if you have to keep the original UVs of the joined meshes.

This is still an issue preventing swaths of people adopting geometry nodes as part of really amazing setups

Would love love love to see a built-in solution in the near-term (it has been 17 months since it was initially pointed out and later confirmed as a known issue)

This is still an issue preventing swaths of people adopting geometry nodes as part of really amazing setups Would love love love to see a built-in solution in the near-term (it has been 17 months since it was initially pointed out and later confirmed as a known issue)

Removed subscriber: @ChristophWerner

Removed subscriber: @ChristophWerner

Added subscriber: @Erindale

Added subscriber: @Erindale

In #85962#1386501, @llealloo wrote:
This is still an issue preventing swaths of people adopting geometry nodes as part of really amazing setups

Absolutely agree. This should be at the top of the pile to make it into 3.3 LTS. Lack of UV support is a big hole in the workflow.

> In #85962#1386501, @llealloo wrote: > This is still an issue preventing swaths of people adopting geometry nodes as part of really amazing setups Absolutely agree. This should be at the top of the pile to make it into 3.3 LTS. Lack of UV support is a big hole in the workflow.
Member

Added subscriber: @XanthorhixZ

Added subscriber: @XanthorhixZ

Removed subscriber: @Emerson

Removed subscriber: @Emerson

Added subscriber: @iaian7

Added subscriber: @iaian7

As others have said, I really appreciate all of the development going into Geometry Nodes. Non-destructive and procedural creation has been key to my adoption of Blender as a toolset. The limitations haven't stopped me from using it on some rendered projects.

But UV maps are absolutely required for any sort of realtime engine experience. I can build some pretty helpful mesh generators in Geometry Nodes, but they're unusable in Unity/Unreal because attributes ≠ UV maps, and manual/destructive workarounds are not a viable production solution.

I'm really hoping this can be solved before 3.3? Without usable UV map data, assets created with Geometry Nodes are functionally useless outside of Blender.

As others have said, I really appreciate all of the development going into Geometry Nodes. Non-destructive and procedural creation has been key to my adoption of Blender as a toolset. The limitations haven't stopped me from using it on some rendered projects. But UV maps are *absolutely required* for any sort of realtime engine experience. I can build some pretty helpful mesh generators in Geometry Nodes, but they're unusable in Unity/Unreal because attributes ≠ UV maps, and manual/destructive workarounds are not a viable production solution. I'm really hoping this can be solved before 3.3? Without usable UV map data, assets created with Geometry Nodes are functionally useless outside of Blender.
Member

Added subscriber: @Baardaap

Added subscriber: @Baardaap
Member

Here's a bit of an update. There are a few things needed to fix this problem:

  • Support generic attributes as UVs in Blender's renderers.
    • This is in progress in D15101, done for Cycles but still needs work in EEVEE. Some work it depends on is happening in D15205.
  • Update everywhere in Blender to use generic 2D vectors as UV maps.
    • This is in progress in D14365. It's a massive task.
    • Luckily @Baardaap has been working on this for months, and it's getting close. But it's still a big refactor and needs proper review.

Those two things fix the problem in the majority of cases (join geometry, realize instances, etc.), including for exporters, the UV editor, and rendering.
I can't say that these will land in 3.3. Probably not, at least for the second task. I'm confident they can make it in 3.4 though.

That leaves the 2D/3D vector issue, since geometry nodes cannot currently output 2D vectors.
Without some solution to that, UVs created from scratch by geometry nodes wouldn't be seen by exporters as UVs.

  • Personally I would like to add 2D vector sockets to geometry nodes (#92765)
  • Another option is adding some conversion in the store named attribute node like D14705.
Here's a bit of an update. There are a few things needed to fix this problem: - Support generic attributes as UVs in Blender's renderers. - This is in progress in [D15101](https://archive.blender.org/developer/D15101), done for Cycles but still needs work in EEVEE. Some work it depends on is happening in [D15205](https://archive.blender.org/developer/D15205). - Update *everywhere* in Blender to use generic 2D vectors as UV maps. - This is in progress in [D14365](https://archive.blender.org/developer/D14365). It's a massive task. - Luckily @Baardaap has been working on this for months, and it's getting close. But it's still a big refactor and needs proper review. Those two things fix the problem in the majority of cases (join geometry, realize instances, etc.), including for exporters, the UV editor, and rendering. I can't say that these will land in 3.3. Probably not, at least for the second task. I'm confident they can make it in 3.4 though. That leaves the 2D/3D vector issue, since geometry nodes cannot currently output 2D vectors. Without some solution to that, UVs created from scratch by geometry nodes wouldn't be seen by exporters as UVs. - Personally I would like to add 2D vector sockets to geometry nodes (#92765) - Another option is adding some conversion in the store named attribute node like [D14705](https://archive.blender.org/developer/D14705).

Removed subscriber: @timosaki

Removed subscriber: @timosaki

Added subscriber: @Dangry

Added subscriber: @Dangry
Member

Added subscriber: @Alexander-Bicukow

Added subscriber: @Alexander-Bicukow

In #85962#1387361, @HooglyBoogly wrote:
Here's a bit of an update. There are a few things needed to fix this problem:

  • Support generic attributes as UVs in Blender's renderers.
    • This is in progress in D15101, done for Cycles but still needs work in EEVEE. Some work it depends on is happening in D15205.
  • Update everywhere in Blender to use generic 2D vectors as UV maps.
    • This is in progress in D14365. It's a massive task.
    • Luckily @Baardaap has been working on this for months, and it's getting close. But it's still a big refactor and needs proper review.

Those two things fix the problem in the majority of cases (join geometry, realize instances, etc.), including for exporters, the UV editor, and rendering.
I can't say that these will land in 3.3. Probably not, at least for the second task. I'm confident they can make it in 3.4 though.

That leaves the 2D/3D vector issue, since geometry nodes cannot currently output 2D vectors.
Without some solution to that, UVs created from scratch by geometry nodes wouldn't be seen by exporters as UVs.

  • Personally I would like to add 2D vector sockets to geometry nodes (#92765)
  • Another option is adding some conversion in the store named attribute node like D14705.

thanks hans. we really appreciate all the folks putting in the time to add this functionality.

> In #85962#1387361, @HooglyBoogly wrote: > Here's a bit of an update. There are a few things needed to fix this problem: > - Support generic attributes as UVs in Blender's renderers. > - This is in progress in [D15101](https://archive.blender.org/developer/D15101), done for Cycles but still needs work in EEVEE. Some work it depends on is happening in [D15205](https://archive.blender.org/developer/D15205). > - Update *everywhere* in Blender to use generic 2D vectors as UV maps. > - This is in progress in [D14365](https://archive.blender.org/developer/D14365). It's a massive task. > - Luckily @Baardaap has been working on this for months, and it's getting close. But it's still a big refactor and needs proper review. > > Those two things fix the problem in the majority of cases (join geometry, realize instances, etc.), including for exporters, the UV editor, and rendering. > I can't say that these will land in 3.3. Probably not, at least for the second task. I'm confident they can make it in 3.4 though. > > That leaves the 2D/3D vector issue, since geometry nodes cannot currently output 2D vectors. > Without some solution to that, UVs created from scratch by geometry nodes wouldn't be seen by exporters as UVs. > - Personally I would like to add 2D vector sockets to geometry nodes (#92765) > - Another option is adding some conversion in the store named attribute node like [D14705](https://archive.blender.org/developer/D14705). thanks hans. we really appreciate all the folks putting in the time to add this functionality.

Added subscriber: @austint

Added subscriber: @austint
Contributor

Added subscriber: @Andrej-4

Added subscriber: @Andrej-4

Added subscriber: @pauanyu_blender

Added subscriber: @pauanyu_blender

Added subscriber: @AlexandervD

Added subscriber: @AlexandervD

Added subscriber: @alvaroperez

Added subscriber: @alvaroperez

Added subscriber: @Metrons

Added subscriber: @Metrons

Added subscriber: @TitusLVR

Added subscriber: @TitusLVR
Contributor

Added subscriber: @RedMser

Added subscriber: @RedMser

Added subscriber: @Tilapiatsu

Added subscriber: @Tilapiatsu

Closing in on 2 years

Has anyone been tracking progress on this issue? A little while ago it seemed like we were getting much closer (that the necessary structural changes had been added).

Cannot wait to convert my long queue of workflows over to geo nodes once this fix lands!

Closing in on 2 years Has anyone been tracking progress on this issue? A little while ago it seemed like we were getting much closer (that the necessary structural changes had been added). Cannot wait to convert my long queue of workflows over to geo nodes once this fix lands!

Added subscriber: @lealeelu

Added subscriber: @lealeelu

@lealeelu I Agree, for me, it is a huge blocker in a pipeline. Hope they will fix it as soon as possible.

@lealeelu I Agree, for me, it is a huge blocker in a pipeline. Hope they will fix it as soon as possible.

You can check D14365 for the progress. I've working on it on and off the last half year. It's nearly finished but there are some small problems left. It won't be in 3.4 but I do aim for the one after that. No promises though, I do what I can with the time I have available.

You can check [D14365](https://archive.blender.org/developer/D14365) for the progress. I've working on it on and off the last half year. It's nearly finished but there are some small problems left. It won't be in 3.4 but I do aim for the one after that. No promises though, I do what I can with the time I have available.

Added subscribers: @True-VFX, @Zeastin, @mano-wii, @mod_moder

Added subscribers: @True-VFX, @Zeastin, @mano-wii, @mod_moder

Added subscriber: @davidnr

Added subscriber: @davidnr
Member

Added subscriber: @Funnybob

Added subscriber: @Funnybob
Member

Added subscriber: @GabrielMoro

Added subscriber: @GabrielMoro

In #85962#1439124, @Baardaap wrote:
You can check D14365 for the progress. I've working on it on and off the last half year. It's nearly finished but there are some small problems left. It won't be in 3.4 but I do aim for the one after that. No promises though, I do what I can with the time I have available.

Thanks so much for the link and for the hard work both Martijn and Hans. You are doing gods work.

Hats off to both of you

> In #85962#1439124, @Baardaap wrote: > You can check [D14365](https://archive.blender.org/developer/D14365) for the progress. I've working on it on and off the last half year. It's nearly finished but there are some small problems left. It won't be in 3.4 but I do aim for the one after that. No promises though, I do what I can with the time I have available. Thanks so much for the link and for the hard work both Martijn and Hans. You are doing gods work. Hats off to both of you

Added subscriber: @DanielPaul

Added subscriber: @DanielPaul

Made some small scripts, one to easily convert all modifiers and then convert all attributes with "UV" in the string to a UV Map.
Per object (ModifierPanel) or for all objects in file (N-Panel)
https://blenderartists.org/t/some-serpens-scripts-dp-scripts/1418345?u=daniel_paul

I will add an option to make good packed light maps for realtime with UVPackmaster2 soon.
There is also a UV Checker Function, to show UV Checker map temporarily on all objects.
Works also with Geometry Nodes Attributes, as long as "UV" is in Attribute shader node string.
image.png

Made some small scripts, one to easily convert all modifiers and then convert all attributes with "UV" in the string to a UV Map. Per object (ModifierPanel) or for all objects in file (N-Panel) https://blenderartists.org/t/some-serpens-scripts-dp-scripts/1418345?u=daniel_paul I will add an option to make good packed light maps for realtime with UVPackmaster2 soon. There is also a UV Checker Function, to show UV Checker map temporarily on all objects. Works also with Geometry Nodes Attributes, as long as "UV" is in Attribute shader node string. ![image.png](https://archive.blender.org/developer/F13960765/image.png)

Added subscriber: @luischerub

Added subscriber: @luischerub

Added subscriber: @softyoda

Added subscriber: @softyoda

In #85962#1375353, @eru wrote:

In #85962#1365670, @PaulGeraskin wrote:
Found this issue. UVs disappear after GN. {F13115075}Blend file is attached.

image.png

After you apply Geometry nodes, an attribute called UVMap appears in (new) Attributes panel
image.png
After that, you have to convert that attribute by clicking an arrow and "Convert Attribute". Then choose mode as UV Map.
image.png
After this UVMap will be created and attribute will disappear (conversion).
image.png
And UVs are back again.
image.png

I guess it's how it works now.

Thanks for this tutorial, it works great (I had to try 3 time as it seems I had 3 attribute called "UVMap", "uv_map" and "uv" and only the last one worked)

One simple solution I could found to avoid this attribute convertion would be to create a node like attribute domain transfer, that let you convert attribute to uv from the nodetree.

Once the "export to obj" node will be there, it'll simplify many workflows to avoid destructive tasks like that to only export.

> In #85962#1375353, @eru wrote: >> In #85962#1365670, @PaulGeraskin wrote: >> Found this issue. UVs disappear after GN. {[F13115075](https://archive.blender.org/developer/F13115075/tmp_1.blend)}Blend file is attached. >> >> >> >> ![image.png](https://archive.blender.org/developer/F13115073/image.png) > > After you apply Geometry nodes, an attribute called UVMap appears in (new) Attributes panel > ![image.png](https://archive.blender.org/developer/F13172843/image.png) > After that, you have to convert that attribute by clicking an arrow and "Convert Attribute". Then choose mode as UV Map. > ![image.png](https://archive.blender.org/developer/F13172850/image.png) > After this UVMap will be created and attribute will disappear (conversion). > ![image.png](https://archive.blender.org/developer/F13172856/image.png) > And UVs are back again. > ![image.png](https://archive.blender.org/developer/F13172860/image.png) > > I guess it's how it works now. Thanks for this tutorial, it works great (I had to try 3 time as it seems I had 3 attribute called "UVMap", "uv_map" and "uv" and only the last one worked) One simple solution I could found to avoid this attribute convertion would be to create a node like attribute domain transfer, that let you convert attribute to uv from the nodetree. Once the "export to obj" node will be there, it'll simplify many workflows to avoid destructive tasks like that to only export.
everyone available can help test here: https://devtalk.blender.org/t/testing-wanted-for-the-refactor-mesh-uv-map-generic-branch/27044
Member

In #85962#1465947, @llealloo wrote:
everyone available can help test here: https://devtalk.blender.org/t/testing-wanted-for-the-refactor-mesh-uv-map-generic-branch/27044

What's an attribute name should be in GN to convert to UV? "UVMap*", "uv_map*"?

Also, how can I specify UVMap1 and UVMap2 sequence? For example, I would like to use a second UV for a lightmap in Unity/Unreal.

> In #85962#1465947, @llealloo wrote: > everyone available can help test here: https://devtalk.blender.org/t/testing-wanted-for-the-refactor-mesh-uv-map-generic-branch/27044 What's an attribute name should be in GN to convert to UV? "UVMap*", "uv_map*"? Also, how can I specify UVMap1 and UVMap2 sequence? For example, I would like to use a second UV for a lightmap in Unity/Unreal.

The name doesn't matter.

it should be a 2d vector on face corners. And currently for the shader to see it the UV map must already exist on the base mesh.

The name doesn't matter. it should be a 2d vector on face corners. And *currently* for the shader to see it the UV map must already exist on the base mesh.

Removed subscriber: @DrMc

Removed subscriber: @DrMc

Added subscriber: @Thaina-Yu

Added subscriber: @Thaina-Yu

Is it also related to the problem that 2D vector output type was missing from blender 3 after version 2.9 ? https://developer.blender.org/T92765

Is it also related to the problem that 2D vector output type was missing from blender 3 after version 2.9 ? https://developer.blender.org/T92765
Member

Added subscriber: @deodatopr

Added subscriber: @deodatopr

This issue was referenced by 6c774feba2

This issue was referenced by 6c774feba2c9a1eb5834646f597a0f2c63177914
Member

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Hans Goudey self-assigned this 2023-01-10 07:02:43 +01:00

Removed subscriber: @JuanManuelLynch

Removed subscriber: @JuanManuelLynch
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
97 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#85962
No description provided.