I'm making a procedural building with geometry nodes where the walls are instanced on a generated profile from a grid and those instanced walls are being instanced vertically along a mesh line. While the 1st instance on points node is able to randomly pick mesh from a collection that contains more than 1 wall mesh, I can't find a way to randomize the walls being picked in the 2nd instance on points node which dictates the height of the building. I would also like to avoid using the realize instances node. Any help would be appreciated.
Basically, you would only have to pass a random value when instantiating the objects in the individual floors, so that the objects from your collection are selected in different order.
What I do in this example:
First I create a floor from single points of a subdivided quadrilateral curve.
I multiply this floor with
Instance on Pointsalong a mesh line in the height and realize the points with
Realize Instancesnode is used here only to achieve the points for instantiation, but not to transform the individual objects to be instantiated).
Then I create a selection/mask with which I can separate the lowest floor from the upper floors.
When instantiating the upper floors with the node
Instance on Points, I select the objects from the collection using a random value.
Here is the blend file: