Hey all, like many others here I’ve been playing with geometry nodes for repeating things like roof tiles. But I always seem to run in the issue that the boolean ops are super slow at scale and somewhat buggy. Are there any suggestions for how to improve their performance?
In this example we’re tiling an irregular quad roof. I limit the boolean operations to only inside and along the edges of the roof…but things are slow at scale and buggy on complex goemetry. If you disable use_boolean things speed up…but get messy at the roof edges and it would need additional geometry to hide the mess
Any suggestions before I fall back to a texture nodes?
Just stick with instances and model/place them such that there are no intesections:
Good luck.
Edit: Sorry - I misunderstood your question.
Yeah, Booleans are slow.
Something you may consider is to use Higgsas’ tesselate node - provided you keep the edge tiles consistent, this may be a solution - Boolean on a simple mesh is quick, then tessellating on that mesh will be quickish also.
Thanks @zeroskilz, yes that’s what i figured! Because we don’t know the shape of the roof, we can’t use templated tiles. Even simple meshes in boolean ops seem to fail at scale.
I see the small intersections between rows of tiles you mentioned in the original post - yes, they’re messy! but can be adjusted with the pitch node.
Looking at real-world roofs, there is a lot of cutting slate tiles to weird shapes…and I doubt that we can model this geometry in any way except booleans…
Another option is to use the Realize Instances node at the end of your instancing network and then just use the “Fast” Boolean modifier - it’s performance is so-so - for now, it seems faster than the GN Boolean nodes.
Yeah current boolean node is a bit hopeless. But I think freeze node and caching is about to arrive, so you can do it once and keep it without recomputing.
There are some good news for the future. Howard who is designing the bevel node is planning to work on a new boolean node. Probably it will take some time.
This is from dev chat:
"I think I have persuaded a friend of mine to help implement really-fast-exact booleans. He used to do research in this area and he and I now both agree that the EMBER approach looks better:: https://dl.acm.org/doi/10.1145/3528223.3530181
So he and I will be working on that (in between me continuing to work on bevelv2). I may also do a fast-exact-bisect-by-plane node first, as a testbed for the math routines we have to write (256 bit integer arithmetic, some determinants of 4d things).