I saw a cool video a while back of a procedural pipe tool made with geometry nodes. In the video, the author was extruding single vertices around and a detailed pipe system was being created, with flanges and bolts etc that was all customizable. Unfortunately, they never shared how they did it, so I decided to recreate it for myself and share it with you all. I did this as a learning project to get the hang of Geometry Nodes so it might be a bit funky.
I’ve uploaded it to Pasteall if you want to check it out.
There’s a lot of values to play around with, You can create your own materials, flanges and bolts and have them connect them directly in the modifier properties without having to play with the nodes. You can change the size, radius and resolution of everything.
There’s a few issues. 3 way intersections work, but they can get a bit wonky if the intersection isn’t a planar T or Y shape. 4 way or more intersections are straight up broken. Also, the corner resolution/bevel segments needs to be an odd number other wise flanges get instanced in the middle of the joints.
I made this with the 3.0 Alpha, but not a build with the new Fields update for Geometry Nodes. I’m not sure if this will continue to work with Fields or with older versions of Blender.
The main issue I came across is that there’s no bevel modifier in geometry nodes yet. So I used a normal Bevel modifier and put the geometry nodes in after that. But then I couldn’t find a way to mask the vertices at the start and end of the bevelled sections to instance flanges. So the workaround I came up with was to instance the mesh, one with the geonodes and the other with the bevel modifier. The object with the bevel modifier was then copied into the geonodes so I could use the Attribute Proximity to find the start and end points of the bevel: turns out those vertices are exactly the bevel amount away from the original vertice of the corner. Then I used Drivers to control the Bevel Modifier on the 2nd object with the values in the Geometry nodes modifier on the main object.