# Is it possible to have an equivalent of Array modifier with decreasing count?

I want to create a simple radial topology starting with a primitive (brick) for a tower, I started with the following:

In this example taper effect is achieved by editing angle of bezier curve vertices via Ctrl+T.

It looks OK, but the only effect I'd add is decreasing number of elements as tower goes up: as tower goes up it'd look better if size of bricks stay almost the same as the first row.

Is there a simple way of achieving this somehow via modifiers?

I found a similar question Array with Size Increment / Decrement which attempts to achieve something similar for a pyramid-alike construct - and suggested answer is referring to a custom python script. I think nowadays a similar effect could be achieved with geometry nodes although I wonder if a simpler solution via modifier stack is possible.

• I don't think you can avoid Geometry Nodes as something like a modulo operator is required as the building goes up. You keep the number of bricks per row constant, reducing the horizontal size of a brick linearly with the height to keep a conical shape to the tower. When the perimeter is once again an integer multiple of the original brick size, you reduce the brick count by one, and you repeat the process. Would you like some piece of GN graph to start with ? Commented Dec 29, 2023 at 7:33
• I think I got the idea but if you have something you can share it'd be great to see. Thank you! Commented Dec 29, 2023 at 7:52

You can't do that with an array modifier but you can use something like this simple geometry nodes setup. Instance a circle on a vertical line, scale the circles along the Z axis, convert the circles to curves, then to points using length parameter, and instance your bricks with the correct rotation.

Here's the blend file for reference. V4.0 +

• It looks gorgeous! Thanks a lot, Gorgious! Commented Dec 29, 2023 at 21:27

(Using Blender 3.6.5)

Here is another proposal, very similar to Gorgious's for the sequence of Instance on Points nodes to first create a stack of circles in vertical direction then to instance bricks of almost constant length along these circles.
The bottom part of the GN graph is shifting even rows in azimuthal direction by half a brick length to have a nice alternate pattern looking from the +X location.

Resources:

• Gorgious deserves the validation of the quickest answer. Commented Dec 29, 2023 at 10:13
• To reduce the gap between adjacent bricks, insert a "Transform Geometry" node between the "Cube" and the last "Instance on Points" nodes, with "Translation" set to (-0.4, 0, 0). It is moving the bricks inwards. The "-0.4" value is to adjust around half the brick thickness (i.e. X Size of the cube). Commented Dec 29, 2023 at 10:36
• Hehe that is fair play but I like that you shifted the bricks, it's more realistic. Ultimately the OP can choose whichever they want, or none :) Cheers Commented Dec 29, 2023 at 10:50
• Thank you very much! Commented Dec 29, 2023 at 21:28

Here's another way to do it, just use a cone:

It gives you the behavior of Stef's answer, with the bricks touching with centers of their local $$x$$ axis (the one going towards the center of a circle):

Adjusting the height of the brick/cone is not implemented here, but I think that's trivial (simply set Cone's Depth to Cube's $$y$$ multiplied by Cone's Segments, or otherwise transform the formula using the multiplication/division triangle)

And if you don't want the overlap (which won't be an overlap if you put enough space between bricks, but perhaps you want the bricks to be trapezoidal as opposed to rectangular), you can simply convert the curves back to mesh:

Yes, yes, they are connected… You could use a line profile, split edges, extrude up:

Yes, they lack bottom, you don't always need it, but here's how you extrude in order to keep the bottom, make it connected with the rest, and make normals point in the right way:

(those 4 nodes replace the single "Extrude" node, you don't need to put them in a separate custom group)

• It looks awesome, thanks Markus! Commented Dec 29, 2023 at 21:35