Poles And Cables Generator

by Samuels Procedural Tools in Modifier Setups


How to use

Add this blend file to your asset library. You can then drag and drop the poles_generator object or the mesh_to_cable object into your scene. These objects will automatically import the underlying node systems. You can then either delete these default objects and apply the node systems to your own objects, or work with them directly.

You can apply the poles_generator system to meshes or curves. When applied to curves, it will use the pole distance parameter to place poles along the curve. If applied to a mesh, it will spawn a pole on every vertex. This is useful if you want to place poles at irregular distances and positions. It's recommended to only use meshes made from edges. If you create Y or X sections (e.g. if the mesh has faces), it will spawn more than one pole at these intersections, which kind of works for poles with radial symmetry, but it will look weird for T-shaped poles.
To use one of the pole presets, drag and drop the pole asset into your scene and hide it from your render. In the modifiers tab (with the poles_generator system applied to your target), select the corresponding pole object in the "Object" input section.

The mesh_to_cable system converts both mesh and curve objects to sagging cables. This system is useful to quickly draw cables between facades, or between facades and poles. It can also be used to spawn several cables per edge/curve with randomized sag and spread them along arbitrary axes. Using the freehand draw tool in curve edit mode is an easy way to draw cables onto walls or from ceilings. If applied to a curve, the system will treat the whole curve segment as one cable, which means you can create loops and other complex curve shapes. In mesh mode, it will turn every edge segment into a cable segment.


Parameters explained:


- Object: The pole object to be instanced on the curve or mesh.
- Pole distance: if applied to a curve, poles will be instanced along the curve separated by this distance.
- Pole rotation: the amount of Z rotation for each pole, in degrees.
- Pole size: multiplicative factor for pole size. Defaults to 1, the original pole size.
- Cable resolution: how many divisions a cable segment has. Increase to 128-256 if kink is used.
- Sag: how deep the cables sag.
- Random sag: Randomize individual cable sag up to 0-100% of the given sag.
- Proportional sag: Use segment length as factor for the sag strength for more realistic results.
- Cable radius: how thick the cables are.
- Random radius: Randomize individual cable radius up to 5-100% of the set radius.
- Cable count: How many cables to spawn at each segment. 0 to turn cables off.
- Count spread: Spread the cables per segment apart to create randomness.
- Delete chance: Chance per cable between 0-100% to delete it.
- Kink scale: how large/small the cable kinks are.
- Kink amount: add kinks to the cables. It's recommended to increase the cable resolution for this.
- Random tilt: randomize the pole rotation along each axis, in degrees.
- Seed: change randomizations for sag, radius, count spread, delete chance and kink.


How to create your own pole objects:


The object origin of a pole should be in the X/Y center, because the pole is instanced on the origin point. The Z position of the origin doesn't matter, because the pole positions are automatically reset to the lowest Z value. Poles should be aligned with the Y axis, meaning that T-shaped poles should be parallel to the Y axis. This can be fixed in post by changing the pole rotation parameter though.

Anchor vertices specify where a cable is connected to the next segment. Every anchor vertex needs to be assigned to a vertex group called "anchor". The node system accesses this attribute to distribute the cables. To get started, simply duplicate an existing vertex of your pole object (using Shift+D) and place it somewhere. Then create a new vertex group in the "Object Data Properties" tab and call it "anchor". With the vertex selected, click "assign". After that, duplicate and place more anchor vertices wherever you need them.

To spawn cables on poles that stay fixed on the pole (e. g. a cable loop) and change their radius together with the other cables, you can assign edges to the "cable" vertex group in the same manner as the anchors. These edges will then be converted to cables (but without applying sag).


Info about procedural materials:


If you want to create procedural materials for your custom poles, there's a few things to keep in mind:

  1. In Blender v3.4, Blender discards the UV texture coordinate attribute when instancing geometry, so you can't access UVs like you normally would. Instead, use the attribute node with the "UVMap" attribute, which stores the same UV information. In Blender v3.6 upwards, you can use the UV texture coordinate like you usually would.

  2. the Object texture coordinates will be different for every pole, because all pole instances are being realized in the geometry nodes system. That can be problematic if you want to apply gradients along the Z axis and the poles have different Z positions. To counteract this, you can access the position information for every pole with the "pole_pos" attribute. Multiplied by -1 and fed into the location of the mapping node, this attribute helps you create Z gradients that stay fixed to the poles even if their Z positions change. Check the pole_wood_mossy material as an example. If in doubt, bake your textures and apply them as image textures.

  3. Another attribute is exposed to help you randomize shader values per pole: the "pole_random" attribute. It stores random values between 0-1 for every pole. Using this attribute, you can e. g. randomize the brightness or the gradient strength for each pole.

Choose a product version:

Sales 70+
Customer Ratings 1
Average Rating
Dev Fund Contributor
Published over 1 year ago
Blender Version 4.1, 4.0, 3.6, 3.5
License GPL
Have questions before purchasing?

Contact the Creator with your questions right now.

Login to Message