I am exploring the new geometry nodes, my goal is to create a very simple procedural tree: a brown cone and a few green pyramids on top of it 🌲. I would like to apply random variations to the pyramids like rotation, scale, color later maybe subdiv and deformation as well. For now I just work with cubes.
Geometry nodes seem not to support array-like operations so far (Blender 2.93), so I added an array modifier in front of it. However, when I use the Random Float node, I have no idea how to set the seed
individually for each object copy that was created by the Array modifier. I tried to make the seed
a custom parameter of the geometry nodes modifier and use a driver to set a unique value for each instance. However, that plan failed since self
in the driver expression points to the modifier, not to the object so I cant get something like an index out from the Array modifier, also connecting the driver to location.z
related to the original cube, not to its modified version.
My second try was to use the Bounding Box node and get the min.z
to feed it into the seed. This failed as well, since it also seems to relate to the original object before the application of Array.
Both my attempts are captured in the following screenshot. The spreadsheet shows values of the driver (location.z
) the random rotation is seeded by the min.z
of the bounding box.
So I am wondering, how to access the array instance index or similar data inside the geometry nodes?