I’m working on some brick patterns for facade. I’m interested to know if it’s possible, or how, to achieve something like what Zumthor has done on Kolumba musuem?
It looks random to me - maybe there are patterns for certain courses and then iterative combos. I’ve managed to work something out to randomly remove certain full size bricks but not in irregular voids.
For me I’m thinking of something on this line for the design option I need:
bricks of 600x50mm e.g.
bricks are of 1/3, 2/3, and full size of the dimension above
voids in between will also be 1/3, 2/3 and full dimension void
I can perhaps use NUScale to achieve this and then space them out in a similar fashion (3 different distances and random offset - something on this line)
what’s tricky though is that I also want to ensure there isn’t any 2 voids adjacent to each other - I’m not sure how to achieve this tbh
so, in order to have the (C) [C] (C) pattern to always fall under a [A] or a [A+C] pattern, each next line should have a shift within one of the following domains (K is a minimum distance that might be considereded something close to B/2 = A/8)
How do you “bridge over” a 600mm gap if you longest bricks are 600mm long?
Using 2 bricks? Making “half bridge” with each brick? Would be unstable… not?
I guess 1/3 gaps must be “bridged” by 2/3 or 3/3 bricks, and 2/3 gaps must be bridged by 3/3 bricks.
Can you confirm?
Also, what is the input of the wall to fill?
Is it always a rectangular space? (x length by n rows?)
(hopefully a length multiple of 1/3 of a brick, so multiple of 200mm)
Can the row start/end with a gap?
I did something similar 3 years ago, something with brute force and just letting a script make countless random attempts until it fits the goals.
Worked fast for simple cases. If the brick rows are too much long, it starts to slow down exponentially…
The logic was something like:
put a random sequence of bricks until it cover the wall length
put a new row the same way, check if gaps are not aligned, if so, make a new row, if not remake current row with another random
The good secret way of manual tracing and analysing is where I fall short big time! Thank you for reminding me of that!
I guess what I was trying to do is to quickly have something that I can work with for testing of ideas so I wasn’t aiming to resolve how Kolumba was done - but all makes more sense to see the genius behind it with your analysis!
So just to confirm that I understand it correctly - the combo you’ve used is
and that’s fixed, with the variable being the shifting distance which is what you summarised as 3 instances involving K (each with its own min. and max.)?
So it will come down to having this pattern repeated at each row with a list of distances (K combos) it seems?
I should have been more precise - I was just using it as an example really so yes voids will be 1/3, or 2/3 instead of full size. Input shapes will be rectangle as we are designing with bricks. Starting and ending with a gap is not allowed also.
As you said yes it will get exponentially complicated if it’s a huge wall - which is why I’m leaning towards to what @inno suggested - that it’s a designed pattern with variable offsets.
yeah, and I also think I might have messed up a bit with letters in the previously posted ranges…
the end-part (C) [C] (C) always falls over an [A] or [A+C] pattern, so you have 3 possible pattern shift along each line, indicated as cases 1, 2, 3
for each of the 3 cases the pattern can slide on a Range, and there is always a “minimum distance” K that might be A/8 or A/16 that makes sure that holes on following/previous rows never have perfectly aligned edges
a very poor implementation just to see if this study made sense at all looks similar, but not quite there…
to exactly reproduce the same effect probably would be worth to count how many times cases 1, 2, 3 are there on -for instance- 100 rows of pattern, and try to figure out their relative %s
I have summarised 5 different combos - not exactly like what you discovered in Kolumba, but I think this also makes sense!
1 = small void
2 = full brick
3 = bigger void
A = 2
B = 21
C = 23
D = 221
E = 223
Since all starts with 2 i.e. solid full brick there won’t be back to back void.
So it will be a “random” combo of these 5 in no particular order - at least from these 4 rows.
Please correct me if I’m wrong though.
Now onto the gh side - how do I make this possible as a script so that I can apply onto a large flat facade?
Actually now I’m thinking about it - if we are to randomise ABCDE combo it won’t have so many void repetitions like what the project has.
Instead I’m leaning towards to think that for example, it’s applied to the entire length of the wall which is more or less constant, and then applie these ABCDE in random orders to reach to the entire length of the wall (in this instance this portion of the facade) - this way there could be more or less voids, instead of having to have always 2 short and 2 long voids in these 5 combos.
Though I’m not sure how this would always run to the same length now I’m thinking about it again - like if there are more voids or full bricks things might run over? I guess we could trim the two ends as necessary though?
Sorry I can only theorize but am acutally not that good with gh… shed some lights please
about the golden cinema, just to understand how much surface is brick and how much is void (based on pixel brightness over the 153 horizontal lines of bricks):
% of light pixels (= bricks) fluctuates between 75% to 90%
median value is 84%, average value is 84%
I agree there might be just 3 units:
→ brick of length L
→ small void of length L/3
→ big void of length L/2
the area covered by the pattern is 153 lines, 37L long
for each line a percentage floating between 75 to 90% is covered in bricks
→ this leaves [9L to 4L] of total-sum of void per line, with an average of 6L
there are several ways to combine voids of length L/2 and L/3 to reach those total-void-value per line, and I think an approach like the one shown by @maje90 would produce very nice results here
measured on the image: the number of voids per line ranges from 9 to 21 (average 14.5, median 15):
→ if you want to create 4L of voids using 9 of them you’ll end up with 6L/2 + 3L/3 = 9 (and this is the lower bound)
→ if you want to create 9L of voids using 21 of them you’ll end up with 12L/2 + 9L/3 = 21 (and this is the higher bound)
the only other “rules” that I see applied might be:
→ on the next line: void edges should never fall inside other voids
→ on the next second line: one single void edge can fall inside other voids, but not both
→ on the next third line: anything is allowed (maybe?)
everything I noted is solely and completely -not even aesthetic- but just traced from the image I have no idea of what’s really going on from an architectural point of view, I just go full throttle when see patterns… they make me angry and anxious to understand their rules
The way I see it it’s acceptable and for aesthetic reasons to not have both void edges aligned.
I believe structurally that would work out with mortar and brick ties for these single leaf brick patterned walls.
That wasn’t intentional but a really good example by @inno ! It will definitely help with the distribution of voids across each line, or the facade. Guess it will be in the “ideal to have in the next step” category.
The gif you shared @maje90 - I think it will still take exponential time to run it across large facade - maybe the rule can be tweaked to be
Full brick + small void
Full brick + large void
Another thinking is to have the points to move in X direction by distance set out in 1, and then move from the new location by 2, and by 3, and make this process in random order - though not sure how this works either… brain fried
Yes it gets a bit confusing I can see - but I guess what I have summarised above is kind of what I’m after. Maybe as a starting point - that will help get to the ultimate solution you are trying to work out on curved surface etc?
I guess the purpose is that we can define void sizes from a list of selections? In theory brick lengths and voids can all be any number, but for this instance I’m after a full brick length, and a couple of void sizes to begin with if it makes sense?