Pipe Systems Generator
How to use
Add the blend file to your asset library. A default pipe object is already marked as asset, so you can simply drag and drop this object into your scene to import the generator node group as well as the linked material presets. You can then either manipulate the existing default object or delete it and apply the geometry nodes modifier to your own objects.
This generator works on edges and on curves, although the standard use case is to use edges as input. Simply drag the vertices around and extrude new edges by hitting Ctrl+E. All available parameters can be found in the modifiers properties panel to the right.
The path finding parameter is enabled per default, meaning a shortest path algorithm will try to find a rectangular path that resembles your input geometry as closely as possible. If you prefer to draw pipes manually, simply disable the path finding parameters. Bear in mind that junctions only spawn on vertices with orthogonal angles and with at least three adjacent edges.
Parameters explained
- Pipe material: select the material that is applied to all pipes. See material section for more details.
- Enable path finding: Whether to spawn a 3D lattice around the input mesh and find the shortest path within the lattice. Turn this off to generate pipes directly on edges and with non-rectangular angles (manual mode).
- Path resolution: Determines how detailed the 3D lattice should be. The number is arbitrary and doesn't relate to a concrete distance.
- Fillet radius: the radius of the rounded corners. It always uses the pipe radius as minimum value to prevent clipping. Large fillet radii might cause issues with instancing the connector object (e.g. it might instance a flange on every fillet vertex). If that happens, try to reduce the radius a little, change the path resolution or try a different seed.
- Junction size: how far the connectors are spread apart at each junction. A junction is determined by the amount of adjacent edges, which need to be at least 3. As of this version, junctions only work on rectangular angles, not on arbitrary angles in manual mode.
- Pipe radius: how big the pipes are. Connectors are scaled proportionally.
- Pipe Resolution: the number of faces of pipes and connectors; defaults to 16.
- Connector radius: Determines the size of the flanges and other connector objects independently of the pipe radius.
- Connector length: stretch or compress the connector objects along the pipe tangents.
- Connector type: 0 - no connectors, 1 - flanges with nuts (nut count can be customized in the subgroup indicated in the node tree), 2 - PVC flange (also works for copper pipes; I have no idea what the correct name for those things is), 3 - hex-shaped connectors. You can also create your own custom connector objects and select them in the indicated node in the subgroup mentioned above.
- Pipe count: instance additional pipes, offset by the array offset vector.
- Array offset: direction delta in which the additional pipes are instanced.
- Random offset: Displaces pipe edges in random directions in a way that they stay rectangular to each other (path finding mode).Adds a random offset to the pipe instances in manual mode (and does not influence individual vertices).
- Pipe mayhem: adds target vertices for the shortest edge path algorithm, which results in extra pipe appendices for additional randomness of the pipe system.
- Seed: Seed value for random offset and mayhem parameters.
Materials
I included six procedural material presets in the blend file to get you started with creating pipe systems easily. You can adapt the materials to your liking, e. g. by changing their colors, noise scales, etc. All materials should work in Cycles and Eevee. For the latter, you will have to enable Ambient Occlusion in the render properties because the materials rely on it for cavity dirt.
There's two reasons why the generator works better with procedural materials:
image textures can lead to repetitive patterns, which is not what you want
an additional UV processing step would add processing load to the generator and potentially slow things down significantly with larger pipe systems
The best way to generate homogenous noise over all pipes is by using the "Object" texture coordinate (in the node with the same name). The generator exposes two attributes that can help you with generating procedural materials by using them with the "Attribute" node in the shader editor:
"pipe_radius": this attribute contains the entered pipe radius. If you want to maintain the same noise scale throughout different pipe sizes, you should divide 1/pipe_radius and use it to drive the mapping scale of the texture coordinates.
"connector": a Boolean attribute that is set to true for every connector geometry, meaning you can apply different materials to the pipes and the connectors if needed
Limitations
As of the current version, junctions are only generated on vertices with strictly rectangular edge angles, so they will mostly generate when the path finding is active or when you follow the X, Y or Z dimensions accurately in manual mode.
Discover more products like this
spring24 pipe-system Pipe summer24 industrial piping flanged pipes