Geometry Nodes: Distribute Points on Faces causes crash

Hello all,

Thanks in advance for any insight you could give here; I’m running into a problem where I’m experiencing a crash with Blender as I attempt to distribute points on faces using Geometry Nodes.

I was following this tutorial, but using my own Blender file and assets I made (buildings).

I have a 2000m x 2000m plane, with my buildings I’d like to distribute on it. Each of these buildings is relatively low-poly, anywhere from ~2k - 15k polygons.

I have plenty of system power - 12-core CPU, and 128iGB of RAM.

When I add the “Distribute Points on Faces” node, as shown in the screenshot, Blender becomes unusable: the interface just crawls along, but there is no extra CPU usage or memory usage. You can see that I have also not yet connected the “Object Info” node of any of the buildings, so no distribution / instancing of objects is taking place.

Does anyone have any idea what’s going on here?

Thank you in advance for your time and insight!

I think it’s your computer… I tried duplicating your setup exactly, and using a cube with 2k faces as the instance object. I’ve been able to turn the density as high as 1374 without any lag at all. I doubled the faces per cube twice- up to 8k- and I can still see results at 1374 density, there’s definitely lag now. Are you sure there’s not modifiers on your instance objects that are increasing the face count?

Nope, no modifiers.

I just figured it out, I think.

It’s related to the dimensions of the plane.

If I do this with a plane of 100 meters, it has no problem - but “2000 meters” causes the problem.

To re-iterate, this is before even adding the “object info” node, to distribute the object on the faces. The plane I created also has only a single face.

Steps to duplicate:

1: Create a 2000m plane with one single face, no subdivisions
2. Add Geometry nodes as shown in the attached screenshot
3. Prepare for crash.

I don’t think this is a bug since you can solve it by scaling everything in your scene down, it looks like Geometry Nodes require computing power proportionate to object scale and your computer doesn’t have enough power for 2000x scale

Hold on, what do you mean “2000x scale”? I thought you used a 2000m plane in your test?

Edited to add:

I don’t think the “scale” here is the case either, because I haven’t scaled any objects. I also have another scene with a spaceship I modeled which exceeds 100,000,000 polygons, and is 1500 meters long, and my system handles that like a champ.

Edited again to add:

Blender is also not using any of my CPU when it starts to hang like this - I can watch my CPU usage and it never goes above 6%.

If it works with a 1x1 plane but not a 2000x2000 plane, the issue is the size of the plane. There might be more granular definitions of “scale”, but at the end of the day, if that’s the only factor that makes a change, that’s your problem.

I didn’t actually try it at 2000x2000 because that’s way too big and I never work at that scale. I tried it at that size just now, and it lagged a bunch, significantly more than at 1x1. It was still workable for me but I think I have a stronger GPU. Either way, the scale or size, whatever you call it, of the plane and other objects is the direct determining factor of your lag here

How is GPU a factor in this case? It’s a single face on that plane. It shouldn’t matter whether it’s “1 unit” or "2000 units, because the polygon count doesn’t change: the only thing that changes in that case is a field in memory that reads “1” or “2000”, but you’re not computing any additional polygons.

I don’t know the specifics of why, why is interesting but not really relevant to your problem. If you want it to work, scale down your plane and objects. I don’t know why that makes a difference, but since it does make a difference, that’s your solution unless you find a different solution that works better for you :slight_smile:

This doesn’t make any sense though - none of the other commercial packages I’ve used have this problem with object dimensions - only polycount.

I think I should file a bug report because this simply doesn’t add up. Changing the object scale is only relevant to the proportional computation of the object’s size in your viewport. It even scales the grid relative to your chosen scale settings - but that also can’t account for this problem, because Blender is not using excessive CPU or GPU with this setup.

Like I said before, I have other scenes that have 100-million-polygon objects of similar dimensions that do not have this problem.

Sounds like it’s time for another bug report.

Go wild :slight_smile: If it is a bug, it’ll get looked at by a developer and added to a release calendar. If it’s not, it won’t. Never hurts to try

Yeah, I think that’s what I gotta do.

Thanks for your input, I’m off to file a bug!

For anyone who has problems with Geometry Nodes and objects of large unit-numbers:

I submitted a bug-report to Blender Development about the issue, and the developers responded:

"Even though instance on points node has no input, it still operates on 40M points in your file. Also I can see CPU being used, but only 1 thread seems to be (mostly) utilized here.

Checking with profiler, I see most time being spent in object_duplilist
Looking further in make_duplis_geometry_set_impl, I see only early return if geometry_set.get_component_for_read() is NULL, but it is not checked, whether anything “real” is instanced. But I don’t know whether it is even practical to do such check either."

and:

"Thanks for the report and for investigating. Indeed, the performance is known to be bad in workbench and EEVEE when there are many instances, including when the instances are empty.

I think this falls under existing todo tasks though."

So the Blender Developers are already aware of performance problems in the Workbench / Eevee when dealing with large numbers of instances.

I was able to get this to work by lowering the point-density first to 0.0001 (see in screenshot) and was able to populate the 2000-unit plane with the desired geometry.

1 Like

Thank you!! I had tried the Distribute Points in Volume node and it ate 28 GB of my 32 GB of ram-- freezing Blender-- so reducing the “Density” value BEFORE connecting the node definitely helped! :slight_smile: