"Realizing instances" doesn't work when used after Bake mesh node?

I tried to make all instances real by realizing them out of my geometry node tree, but found out I can’t do it as long as there’s a Bake node in between.

Is this a bug of some “feature” I don’t understand?

For example, I have some instanced generated on this curve

When I want to realize them without Bake node, all works fine

But when Bake node is present (not even baking anything yet), realization of instances doesn’t work anymore and just duplicates entire base object with geometry node tree on top.

Am I doing something wrong here or what’s going on? Can I bake geometry together with generated instances or do I have to always going back to specific modifier in the stack, regenerate it (again) in order to realize those instances (I’m talking about a sandwich of dozen of modifiers)?

1 Like

I’m replying without having a real solution because I’d like to bring up this issue, which seems interesting and deserves an answer.

Yes, it seems that the Bake node and “Make Instances Real” are not yet designed to work seamlessly together.

When you include a Bake node in your Geometry Nodes setup—even if it isn’t actively baking anything—it changes how instances are processed. And I don’t know exactly why… Maybe someone will be able to figure it out.

To understand the cause, it would be interesting to know what code is executed when the Bake node is connected after the instances. However, I don’t know exactly how and where to access the source code for this.

So, we can only assume that this issue may be due to the way the Bake node interacts with the geometry, but the exact cause is not entirely clear.



A few work aroud I see :

1 - You can place the Bake node before the “Make Instances Real” node in the node tree. This will ensure that the Bake operation is applied to the geometry before instances are realized, avoiding the issue you’re experiencing where the Bake node interferes with how instances are processed.

2 - If you absolutely need the Bake node at the end, want to apply the modifier directly after baking, though that can be cumbersome with setups that will requiere python scripting to repeat the process

Hope somoene else will have a better workaround

Hi. and like this?

1 Like

No, the issue is the same. Select the object in the viewport → Ctrl + A → Make Instances Real. You will see that it keeps duplicating all the instances together each time and keeps the node group as well. This issue occurs when you plug the Bake node after the instances (without even baking). However, I also noticed that if you uncheck “As Instance” in the Object Info, this will also happen.

1 Like

I think the bake node turns everything into a final result (that no longer needs to be calculated) so the instances no longer exist as instances they are part of the final resulting GEO.

You should be able to realize them before the bake but not after.

I think looking at the spreadsheet gave me a clearer idea of what’s happening in your situation.

What’s happening isn’t just due to the Bake node. In fact, it’s only possible to use “Make Instances Real” in your case when you have an Object Info node with the “As Instance” option enabled.

Explanation:
In the Object Info node, when “As Instance” is checked:
Instead of converting the object into “realized” geometry, the node generates a single instance of the original object, located outside Geometry Nodes.


In the spreadsheet, when “As Instance” is enabled, you can see that the instance reference type icon clearly shows it as an external reference to the Geometry Nodes object.


In the spreadsheet, when “As Instance” is not enabled, the instance type icon disappears, indicating that the geometry is no longer treated as an external instance but is instead fully realized within the GN system…

You can try this with the Collection Info node as well, and the results will be the same.

Bake Node Interaction:
The same behavior occurs when the Bake node is added. The geometry is converted into localized instances within Geometry Nodes, making it incompatible with the “Make Instances Real” operation.

so currently, these “make instance real” options are just not compatible with instances linked to geometry nodes.

if you really want to make all instances real by realizing them out of your GN tree, efficiently and automatically (like the “make instane real option”),
the solution would be scripting… so good luck :slight_smile:

1 Like

Coming back to this again after a break.

Thanks for explaining. I’ve found a code snippet that can pull out position and rotation for each baked instance, but it doesn’t solve the problem with “de-named” instances after Bake node. When I work with many types of individual and baked instances, this is another problem to deal with (I really need to bake them, for complex, multi layered geometry node trees).

I have only surface level programming experience, so hopefuly someone looking at this will be able to help out.

from bpy import context as C
dg = C.evaluated_depsgraph_get()
ev = C.object.evaluated_get(dg)
instances = (i for i in dg.object_instances if i.instance_object == ev)

for i in instances:
    location, rotation_quat, scale = i.matrix_world.decompose()
    rotation_euler = rotation_quat.to_euler()
    print(f"{location=}\n{rotation_quat=}\n{rotation_euler=}\n{scale=}\n\n")

Taken from following post.

I also reported this, hopefuly to the right place and the right way.