I wanted to make a procedural building based on part of Montane Mansion in Hong Kong. I traveled to Hong Kong in 2018 and this was a really amazing place to see in real life and it was a lot of fun to recreate digitally.
Number of Floors: Controls the number of floors above the ground floor.
Center Width: Controls the width (x-axis) of the center segment (not including the sides). It also controls the whole width of the building when the sides visibility is turned off.
Center Depth: Controls the depth (x-axis) of the center segment (not including the sides). It also controls the whole depth of the building when the sides visibility is turned off.
Wall Extrude Distance: Controls the distance that segments of the wall extrude from the main body of the building.
Random Color: Controls the random seed of the color applied to the extruded segments of the wall.
Window Side: Controls the width of the windows and the clothes racks on the walls.
Window Trim: Controls the thickness of the trim on the windows.
Horizontal Bar Height: Controls the height of the horizontal bar in the windows.
Number of Window Bars: Controls the number of bars dividing each window.
Garage Door Width: Controls the width of the garage doors on the bottom floor of the building.
Rooftop Density: Controls the density of the buildings on the roof.
Roof Seed: Controls the random placement of the buildings on the roof.
Rooftop Relax Radius: Controls how the buildings on the roof space themselves out.
Window Drying Racks: Lets the user turn on or off the visibility of the clothes drying racks on the walls.
Random Seed: Controls the random placement of the clothes drying racks on the walls.
Sides: Allows the user to hide the right and left sides of the building, leaving only the center (allowing for more variety and usability).
Side Width: Controls the width of the sides.
Side Depth: Controls the depth of the sides.
Rooftop Density Side: Controls the rooftop building density on the sides of the building.
Rooftop Seed Side: Controls the random placement of buildings on the roof of the sides.
Rooftop Relax Radius Side: Controls how the buildings on the side of the roof space themselves out.
Side Toggle Setup
I used a switch node controlled by a toggle on the top level building parameters to hide geometry. I wanted my building to have a higher level of customization, allowing the user to use it in more places.
I used the For-each loop to control random placement of geometry in a few places. I attached a switch node to a copy node in the For Each loop, which allowed the switch node to change its input for each iteration. That determined which geometry would be placed on which point. I used this same concept for the small huts on the roof, clothing racks under windows, and the color of the building extrusions.