Brick Void Pattern

Hi all,

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:

  1. bricks of 600x50mm e.g.
  2. bricks are of 1/3, 2/3, and full size of the dimension above
  3. voids in between will also be 1/3, 2/3 and full dimension void
  4. 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)
  5. 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

Reference image:

Any other thoughts are welcomed please!

[posted too early :slight_smile: editing it ]

I took this image as sample:

source: Christian A. Petersen

and used the secret tecnique of tracing the patterns by hand in different colors:

if you shift the patterns horizontally you get a perfect repetition :slight_smile:

looks like the pattern is:

[…] = brick
(…) = hole
[A] (B) [A+C] (B) [A] (C) [C] (C)

looks pretty close :slight_smile:

the other thing you can notice is that the (C) [C] (C) pattern always falls exactly over a [A] or a [A+C]

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)


haha show me please :smiley:

1 Like

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
  • etc

You Sir!

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?

Thanks @maje90!

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.

I also just found out about this project as an example,

Golden cinema in France by Antonio Virga evokes the age of “monumental” movie theatres

I will have a go with the “secret way” first!

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

I believe the following ranges are right:

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

that’s always good practice :slight_smile: you’re now one of the chosen ones who know the secret technique :+1:
that distribution of voids looks so well spread among the whole area, it’s everything but random :slight_smile:

1 Like

I will dig deeper into what you updated me with shortly (did you by any chance have that script haha)!

Just to share with you what I’ve found from the second project:

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 :bulb: :pray:

here’s the script for Kolumba, but consider it’s very poorly implemented, it exists just to produce some visual results, don’t expect anything more than that .__. (25.3 KB)

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?)


I’m learning so much from you! Thank you! I will take a proper look tomorrow as it’s getting really later here…

I will take a look of the Kolumba gh too - it might provide me with some clues with the cinema case.

One last attempt from me for the day with this poor script… trying to recreate “random” combo of ABC and appling it to the full length of the area. Not sure how to go from here tbh…

ABC Brick Void (21.0 KB)

is this second rule about structural matter? Or aesthetic?

Also, i’m seeing a lot of cases where 2 bricks meet above a void:

is this acceptable?

Is the final goal also to be able to control the “ratio” of light? (void/bricks)

1 Like

everything I noted is solely and completely -not even aesthetic- but just traced from the image :slight_smile: 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 :slight_smile:


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
Full brick + small void
Full brick + large void

which will avoid back to back voids?

can I add you to my fav for any future pattern questions SIR!

@maje90 looking at this again - I’m actually stuck at how to put down this random sequence of bricks… I was creating something on this line last night where:

1 = full brick
2 = full brick + small void
3 = full brick + bigger void

and jitter these to a partition list and have it run N times

But I couldn’t figure out how to actually place them onto the row?

This is helpful to understand! I had the similar approach to the construction of rectangles!

I guess I’m trying to have a go combining both case studies - to begin with as something to test.

So it will be a series of 123/ 213/ 312/ 132 etc. and they can be oriented to the desired grid with the fixed total length.

But I can’t quite figure out how to make this “random” combo happen in a row.

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 :brain: :fried_egg:

Sorry that I’ve not yet posted anything else but questions… I’m thinking about a method that will cover all the cases (curved surfaces, etc etc)…

Also I’m a bit lost on all the posts… are the bricks now just a single length?
And… the voids, I’m thinking they could be a indefinite length, not some prefixed lengths…

Appreciate that!

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?

Nice subject, I have no time to dig in but I made some search and I saw the question was asked sometimes ago, without answer!