Paver Pattern Script
project: Vantage Phase 1, Biotech Campus
location: South San Francisco
date: 2023
size: .35 acre <UPDATE>
collaborator: Frida Escobedo <UPDATE>
Description: We developed this script to analyze how we could pattern a set amount of three different color pavers on a long promenade that varies in width and in direction.
email information@fletcherstudio.com to request materials
SCRIPT OVERVIEW
Implementing the rule set
Initial work for this project involved creating different rule sets for the paver pattern and then manually creating models that would show how implementations of those rule sets might look. This process, done by filling cells with color one-by-one on spreadsheets, took a painstakingly long time and prompted us to think about how we could use scripting to automate this process at a much larger scale.
creating the field
First, we created the paver field using the Land Kit plugin, allowing us to formulate an array of pavers of our desired dimensions within the boundary of our walkway.
initializing color value sequence
The three colors that make up this paver field are white, tan, and graphite. First, we prompted Grasshopper to create a list of tan and graphite color values, with each color value repeating randomly in the range of 2 to 6 times.
ADDing white pavers
Once the tan and graphite pavers were generated, we underwent two processes to add in the white pavers. For the outer edges of the paver field, we used a function in Grasshoppper that allowed us to take the distance from each paver’s center point to the outside edge. Once this list of distance values was generated we could filter out all values that were below a certain distance threshold, which gave us a list of all the pavers that were within the outer thirds. From this list, we randomly selected pavers to turn white at the proportion we wanted so that the outer edges would have a higher concentration of white pavers. For the middle section we also used a random replace to add white pavers, this time adjusting the proportion to be a smaller amount.
checking for thirds
Lastly, we had to ensure that the entire paver field roughly consisted of an equal amount of each color paver. Once we confirmed that each color made up about one-third of the paver field, we could display it in Rhino to see it rendered.
Randomness
One issue we encountered was how we could create a pattern that truly seemed random. When experimenting with different seed values in Grasshopper’s random function, it was difficult to generate a pattern that didn’t have clumps or recurring vertical strings of just one color. We considered the possibility that these undesirable patterns might be a result of the way Grasshopper computes randomness; so, we tried replacing all the instances of random generation with Python blocks containing code that generated random numbers, hoping that the way Python computes randomness would produce a result that was a little more satisfactory. In both cases, playing around with the seed value seemed to be most important when trying to find a “random” arrangement that we liked.
who can follow the rule set best?
Our manual, spreadsheet-based model and our computer-generated model both did a pretty good job of following the rule set we initially outlined and creating a pattern that was aesthetically pleasing. The primary difference between the two versions is that the human-drawn version somehow seemed more random, despite the fact that many might assume a computer would do a much better job at simulating randomness than a human. However, this is not necessarily an indication of a more successful performance on the part of the human, but instead a realization that the human perception of randomness is not very random at all. As humans, we would assume that a random pattern created by a computer would have minimal clumping or long strings of one color, when in reality that is not a fair expectation. The dynamic brain of the human can recognize these patterns and avoid them, whereas the computer’s static brain needs explicit instructions to avoid those patterns. The only way to make the computer create a pattern that could compare with a human-made version is to mess around with seed values and hope for the best, or add more and more complex scripting that would account for situations such as clumping. Perhaps the most effective way to approach this project would be to use a combination of man and machine, wherein machine handles the most computationally heavy and time-consuming aspects of the process and the human manually cleans up any aesthetic issues that the computer does not understand.