The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Published by martykasiulis11, 2019-05-31 12:39:59

Performative Parametrics

January 2018

PART A - stage i
06. Points + Vectors & Colour Mapping
08. Formulas + Curves + Surfaces
10. Surface Taxonomy + Colour Mapping
12. Data Structures + Attractors + Voronoi + Colour Mapping 14. Image Mapping
16. Surfaces + Spatial Subdivision
18. Manual Meshing + Catmull-Clark
20. Physics Simulation + Form Finding
22. Loops + Agents
24. Evolutionary Solvers + Single-objective optimisation
PART B - stage i
44. Part B Project Overview + Brief
46. Aperiodic Voronoi Brick System
48. Aperiodic Voronoi Brick System (skeletal selection) 50. Aperiodic Voronoi Brick System (mass deduction)
52. Aperiodic Voronoi Brick System (deduction + gradient) 54. Simulating Salt Crystal Growth (random)
56. Simulating Salt Crystal Growth (regional)
58. Simulating Salt Crystal Growth (regional spread)
60. Simulating Salt Crystal Growth (curved surface)
62. Aperiodic Voronoi Bricks & Crystal Growth
PART A - stage ii
28. Part A ii Project Brief + Aspirations 30. Creating Tensile Structure
32. Developing Tensile Structure
34. Karamba 3D Structural Analysis 36. The Arts Market Parametric Proposal
PART B - stage ii
66. Part B ii Project Brief + Aspirations
68. Voronoi Massing & Dividing Segments
70. Voronoi Brick Application & Crystal Growth 72. Salt Brick/Crystal Pavilion Parametric Proposal

PART A - stage i
Initial Studies
This part of the document will present all of the different parametric stud- ies of key themes in parametric design that were discussed in the tutorial sessions. Each script was rebuilt from scratch whilst referencing back to the scripts developed in the tutorial session, however they were pushed beyond in order to gain more knowledge of scripting and digital design capabilities.

Creating Parametric Lift
In the first attempt to script and use grasshopper, the understanding of how points and vectors work was essential. The model and principles of how basic lifts work was chosen to explore. A set of points are used to create basic floor plate and lift platform surface. Using sub lists and list items the lift is controlled to which floor it moves. Explained in detail below:
Generating initial points and curves - coordinate sliders set the po- sition and distance between each point. Lines between two points are drawn and joint to create a square.
Creating: lift mass, lift cable, and floor slab elements with colour maps highlighting each individual element. Moreover, colour mapping was used to highlight which level the lift mass has landed on.
Selection 1
Selection 3
Offset & Merge
Setting number of ‘floors’ - arraying a set of gener- ated curves along the ‘Z’ axis with a ‘3000mm’ step size to mimick floor to floor height.
Select & Offset
Sub List
Custom Array 1
Custom Array 2

0. 1. 2. 3. 4. 5.
0. 1. 2. 3. 4. 5.

Creating Parametric Ribbed Structure
Using curves and the creation of possible surfaces from the curves was explored and tested below. The generated points along the bounding curves had to be shifted and joined up with one another to create the rib- like pattern. Once the first quarter of the structure was complete, mirror- ing was used to draw up the rest of the looping ribbed structure.
Generating initial points and curves - inherited points from rhino are used to generate a set of curve lines which are then divided. The divisions are then shifted accordingly to generate a unique ribbed structure pattern.
Drawing Lines
Shift List
Joining Shifted Points
All Curves Joined
Custom Profile Exstrusion Profile Size 1
Profile Size 2
Profile Size 3
Mirror Y axis
Mirror Y axis
Offsetting and Trimming - A primary curve is selected and used to create the ‘bracing’ element. The curve offset is controlled by the density of points. A trimming region is set and together with a filter it culls out any lines that fall out of that region.
Offseting Selected Curve Trimming Offset
Filtering the Trim
Division 2.
Division 4.
Division 6.
Customising profile extrusions - the generated curves are evaluated and a series of perpendicular rectangular planes are created. These rectangles contain a mathematical equation which changes accordingly to the division input and thus controls the size of the profile extrusion.
Mirroring generated sweeps - the created surfaces are then mirrored in y and z axis to complete the ribbed structure design.
Join All

Variant 1.
Variant 2.
Variant 3.

Merging lists and sweeping - The moved point data is merged into lists that allow to generate a series of polylines, which would be used as rails for the sweep. The end points of both polylines (rails) are also used to draw a line between the two and thus create section curve for the sweep.
Creating Concertina Helix
This script focused on applying the method/approach explored in the previous script which looked to create a parametric ribbed structure, and instead apply it to create a concertina helix surface. Colour mapping was explored and tested on this script to display the smoothness vs. intensity of the concertina surface.
Z-200 Z-100
Z = 0
Z+100 Z+200
Dividing, Culling & Moving points - To control and customize the final surface of the helix, the curves are divided and culled into two different patterns. The culled points are then moved in either positive or negative Z axis.
Divide 10.
Divide 20.
Divide 30.
Polyline 1
Polyline 2
Both rails
Section Curve
750. 500.
Cull Pattern 1
Cull Pattern 2
Generating initial points and curves - using sin and cos formulas a set of helix points are generated. The set of points are used to generate a curve which is then offset.
Generating Helix Points
Curve Points
Offset Curve
Measuring Distance and Colour Mapping - The distance between two points from different cull patterns is measured. The lowest and highest distance determines the range.
Controling Height
Count 12.
Count 24.
Count 48.


50 Points
Degree 1.
100 Points
Degree 2.
200 Points
Degree 3.
Attractor point experiment
The first part of the script looked at how voronoi is constructed with-
in grasshopper. A path is later defined and a point along the path is generated. The point is then used to create a boundary surface in which more voronoi cells would be generated. Colour mapping was used at the last stage of the script, to help and visualise the point’s position on the voronoi tile.
Generating a surface plane which is then populated with a set of random points that are then used to generate a voronoi.
1/2 3/4
Attractor Position
Surface Plane
Point Population
Generating Voronoi
Voronoi Attractor
Exploding & Culling
S.F. 0.75
S.F. 0.50
S.F. 0.25
Scaling (offsetting)
Defining a path (curve) along which point on a curve is generated and used as an attractor. The point is also used to create a cirlce (boundary surface) which further populates points for voronoi to generate from.
The converted mesh is then deconstructed. Using the points from deconstructed mesh, the distance is measured between those points and an attractor point. The distances are record- ed and remapped back onto a new mesh that is constructed with a new set of data.
Boundary + Point Population
Re-constructed Mesh
The scaled nurbs curves are used togeth- er with the surface outline to generate
a planar surface. The surface is then extruded in Z direction and converted into a mesh.
Creating Nurbs curves from exploded voronoi points. Then scaling (offsetting) the nurbs curves to increase the distance between each one.
De-constructed Mesh
Extruding Surface
Surface to Mesh

Custom 1 - Plan
Custom 2 - Plan
Custom 3 - Plan
Custom 4 - Plan
Custom 5 - Plan
Start. - Plan
1/4 - Plan
1/2 - Plan
3/4 - Plan
End. - Plan

Extracting Image geometry
The script below, which had a simple 2D image of ‘salt flats’ imported and used as an input, extracts and differentiates the geometric pattern seen in the photographs. The geometry is then extruded to give some thickness, and used as a tile to achieve a lager surface, whilst containing the 3D extruded geometry.
Import an image into grasshopper. A bounding box is used together with deconsturct brep to give a set of dimensions from an imported image.
*Script Resource:
The script structure was heavily sourced from the video linked above. Nonetheless the idea of using a tile-able texture/pattern jpeg as part of a script to create a 3D tile-able mesh was mine.
To generate a mesh from a set of points a grass- hopper plug-in called ‘MeshEdit’ was used.
Import Jpeg Image
Deconstruct Brep
A uniform grid is created, from which points are moved along the Z axis.
Generating Grid
Using image sampler - brightness values are filtered.
Sample Imported Image
The filtered points are moved along the Z axis to reveal the pattern in 3D from a 2D jpeg image.
Move filtered points
The original image was edited to show thresholds and remove any unwanted details/noise before it was imported into grasshopper.
Construct Mesh from Points

Single 3D seamless pattern surface.
Tiled 3D seamless pattern surface.
Multiple 3D seamless pattern surface.

Experimenting with surfaces
This script tries to understand how a single surface can be sub-divided, and how the sub-division reacts when the initial geometry takes another form. MD Sliders have been used to get a greater control of how the geometry changes shape.
The centre point of interpolate curve is moved along the Z axis, a line between the two is drawn and divided to generate the mid point.
Extrusion 25
Extrusion 50
Extrusion 100
Draw Line
Move Point
Divide Line
Both the top and mid points are connected to ‘MD sliders’ to con- trol their X and Y values.
Move Mid Point
A set of points is generate through the use of ‘MD Sliders’, which also control their X and Y values. Interpolate curve is created using these 4 points.
Interpolate Curve
All three points are re-connected and used to generate a second Interpo- late curve which runs along the Z axis through those points. Both Interpo- late curves are used to sweep and create a surface. The surface is then evaluated and a set of polygons mapped onto its surface. The polygons are then extruded and capped.
Move Point
Interpolate Curve Sweep
Subdivide Surface
Apply Polygons

Custom Shapes Generated by changing ‘MD Slider’ values
Extrusion Length
Extrusion Radius
Y-axis Density
X-axis Density
Custom Height
Custom Scale
Moving Mid and End points with ‘MD Slider’

Perforated Geometries
To create a series of different perforated geometric shapes, a graph mapper was used to help and control/alter the overall geometric shape. Weaverbird’s plug-in was use to help and create the perforations.
6 Steps
4 Steps
2 Steps
Shift Points Down
Shift Points Up
WB. Picture Frame
Catmull-Clark Subdivision
Generating a single polygon, which is then moved along the Z axis. Each polygon’s radius is controlled with ‘graph mapper’, segments (no. of corners) controlled with a slider, and steps (no. of polygons) also controlled with a slider.
5 Segments
4 Segments
3 Segments
Generating Polygons
Dividing Polygons
Divided points, first of all, are shifted clockwise before being shifted along the Z axis - this is required to help and generate different location vertices for quad mesh face creation.
Shift Points Sideways
Shift Points Down
Shift Points Up
Divided points are shifted along the Z axis only - this is required to help and generate different location vertices for quad mesh face creation.
The shifted points are used to construct quad mesh faces which are then joined. WB. picture frame component is used to create a hole in each mesh face. The new mesh is thickened using another WB component called WBMeshThicken. Last but not least the Catmull-Clark subdivision component is used to smoothen mesh edges.
Construct Mesh
WB. Thickens Mesh

3 Corners
4 Corners
5 Corners
6 Corners
Custom Graph Mapper 1
Custom Graph Mapper 2
Custom Graph Mapper 3
Custom Graph Mapper 4

Finding forms through physics simulation
A flat mesh plane was used to generate a series of points and segments that were then simulated in Kangoroo Physics. By changing the anchor points on the plane different geometric vaults are created through the physics simulation.
Creating a mesh plane which physics simulation could be run on. The mesh grid is extracted and used as a spring force object.
Controlling Mesh Size
Controlling Mesh Plane Grid
Controlling Spring Stiffness
Controlling Size of Perforations
Controlling Mesh Thickness
Set Rectangle to control size of mesh lane.
Create Mesh plane
Extract Mesh grid
Simulated geometry is used to perform a WB picture frame and WB Thicken (as shown
in previous script) to create a perforated structure.
Deconstruct Mesh - use points for UForce
Extract mesh centre-point
Mesh plane points are used to apply force to with the UForce component. Z axis force is applied. Additionally plane edge points and centre point is extracted to be used as a set of anchor points.
Anchor Points 1
Anchor Points 2
Anchor Points 3
Anchor Points 4
Anchor Points 5
Extract mesh edge points which
could be used as anchors which could be used as anchor
Springs from line & Kangaroo Physics are used to perform a physics simulation on the specified geometry. Springs togeth- er with UForce are used as force objects. A toggle button with timer allow to run and stop the physics simulation.
True value = simulation is not being performed
False value = simulation is being performed
Simulated Geometry
Thicken Mesh
WB Frame run on simulated geometry

WB P. Frame: 5
WB P. Frame: 10
WB P. Frame: 25
WB P. Frame: 50
WB P. Frame: 100
Stiffness: 10
Stiffness: 8
Stiffness: 6
Stiffness: 4
Custom Anchor Points 1
Custom Anchor Points 2
Custom Anchor Points 3
Custom Anchor Points 4
Custom Anchor Points 5
Stiffness: 2

Using loops to simulate growth
By repeating a script process and recording it’s data and using that data to generate a new set of data, ‘growth’ like simulation can take place. Looping is essential to this process as demonstrated by the script below that tried to replicate a bacteria/mould - like growth.
Controlling Number of Loops
Controlling sphere radius
Setting initial brep (Sphere in this case) to be used as a looping geometry.
Setting initial brep (sphere)
The loop is used to generate and simulate a random growth of spheres.
The brep is de-constructed and the face is randomly populated with a single point. A single line is drawn between the newly populated point and the centre point of the geometry. The line is scaled by a factor of 2, and a new end point of the line is used to generate a new sphere. This process is then repeated through looping.
WB Stellate is used on the generated spheres to add pyramid needles to the surfaces - thus creat- ing a fur like effect.
Needles generated on surface
New sphere is generated on point
Initial point populated on sphere’s surface
Sphere’s centre- point is located
Line is created between the two points
Line is scaled to extend beyond the sphere
Start point of line is located and used

0 Loops 25 Loops 50 Loops
100 Loops
200 Loops
400 Loops

Finding the largest surface area
Using the Evolutionary solvers this script focused on finding the geometric form which had the highest area within the specified set of z axis restric- tions and the number of plane divisions. The set of points generated from the plane were used to create a delaunay mesh which was then smoothed, and area measured. Evolutionary solver focused on moving the culled sets of points in the z axis to generate an outcome with the highest area value.
Create mesh Plane
Deconstruct mesh to extract vertices
Cull Pattern 1
Cull Pattern 2
Cull Pattern 3
Cull Pattern 4
Cull Pattern 5
Surface found by evolu- tionary solver
Mesh plane is created. Mesh vertices are extracted and selected with various of different culling patterns.
The evolutionary solver changes the slider values, which move the points and generate a new mesh surface. The solver aims to find the surface with the largest surface area.
Move Cull Pattern 1
Move Cull Pattern 2
Move Cull Pattern 3
Move Cull Pattern 4
Move Cull Pattern 5
Construct Mesh from points
Catmull Clark Mesh
Each culled point patern is then moved along the z axis. The slider controls the distance of movement (0 to 250).
Using delauney mesh component, the points are used to create
a triangulated mesh, which is then smoothed using WB Catmull Clark. Finally the area of smoothed surface is measured and used as a ‘fitness’ to test for the evolutionary solver.

Solver Attempt 1 (smoothed)
Solver Attempt 2 (smoothed)
Solver Attempt 3 (smoothed)
Solver Attempt 1 (triangulated)
Solver Attempt 2 (triangulated)
Solver Attempt 3 (triangulated)
Solver Attempt 1 (quad mesh)
Solver Attempt 2 (quad mesh)
Solver Attempt 3 (quad mesh)

PART A - stage ii
Final Studies
The final stage of Part A builds from the newly gained skills and knowl- edge of grasshopper, and explores a further and deeper study of a particular field. The chosen areas of further study and exploration were; Kangaroo Physics simulation, Catmull Clark Mesh Subdivisions, and a new investigation and study of Karamba 3D.

Upon my trip to south east Asia in the summer of 2018, I came across a very beautiful arts market in Kuta, Bali, Indonesia. The city and the island of Bali, heavily relies on tourism as a source of financial income, there- fore many streets are littered with loads of small retail stalls and shops selling various of goods. The arts market in Kuta, sourced many of its goods from various of the stalls and artists, and placed them under one large roof. Although as beautiful as the market was, mainly due to the vast array of Balinese goods, the building itself was neglected and lacked traditional Balinese character.
Situated on one of the main streets of ‘Jl Kartika Plaza’, the Arts Market had a small courtyard at the front of the building with a large tree and
a small tensile shelter that provided some cover from the rain, sun and the heat. The Arts Market was the largest building out of the cluster of buildings that surrounded it, and had the largest column to column spans which provided open space to display the goods. Although the Arts Mar- ket had the largest beam spans in the area, it was still deemed very small compared to the Western and European standards.
Brief for Digital Design Proposal
The local traditional architecture comprises of lightweight bamboo struc- tures, with some showcasing impressive spans and architectural complex- ity just like the local Bali Green School, which was entirely made out of bamboo. In my proposal I’m going to look into a potential new proposal for the Arts Market in Kuta, which would take ideas and inspiration not only from the local bamboo architecture, but also from tensile structures such as Frei Otto’s Munich Olympic Park. The tensile membrane and timber woven structures are a great lightweight solutions that are able to provide large column free spans.
In addition to the proposed new Arts Market structure, I would like to look at simulating a potential earthquake (as the region is prone to many earthquakes) and see/record how the tensile proposal is able to absorb and respond to these harsh site conditions.
The choice of materials would be locally sourced bamboo and potentially PTFE for large span coverings, as the material is a great insulator and resistant to high temperatures.
Desired Outcomes & Actions
As the final outcome for this part I would like to produce a new design for the Arts Market and simulate a potential earthquake to see/record how the proposed design responds to this potential real-life scenario. Applying my knowledge which I gained from the tutorial sessions, and further de- tailed study of Kangoroo Physics, Weaverbird, and Potentially Evolutionary solvers, I will attempt to digitally design this new proposal.
Using the ideas from precedents like the Centre Pompidou-Metz, I will attempt to incorporate the existing site trees into the proposal, and will look to respond with the design contextually.
Additionally, the new Arts Market should be more open to allow for greater display of goods, and more permeable as opposed to the existing market.
Local Balinese School made out of Bamboo
Inside the Arts Market in Kuta, Bali, Indonesia
Arts Market’s external space with tree & existing tensile shelter
Existing Site; Arts Market, Kuta, Bali, Indonesia
Local Balinese School made out of Bamboo

Shanghai Megastructures expo 2010
Munich Olympic Village tensile structures by Frei Otto
Hannover Pavilion by Thomas Herzog
Taiwan Forest Pavilion 2011
Centre Pompidou-Metz by Shigeru Ban
SBA Monaco by Shigeru Ban Architects
ASU Scottsdale innovation Centre

Initial Tensile Structure Study
Once the site constraints were clear (surrounding buildings + trees on site) a ‘buildable area’ was defined on grasshopper as a surface. This surface was then used as the tensile mesh. A series of points were extract- ed from the original surface, moved in various of Z positions, and defined as anchor points on Kangoroo Physics component.
Select points on the cut out circles
Move selected points & set them as anchor points
Controlling Z position of circle anchors
Gravitational Strength
Offset from initial set surface
Mesh Thickness
Button to trigger physics simulation
Mesh is deconstructed to extract ver- tices and use them as UForce points
Kangoroo Physics simulates the ‘buildable’ area surface stretched with various of anchor points. The generated geometry is then thickened using WB’s component.
A ‘buildable’ area surface is set, and recon- structed with adjustable circle openings
Extract mesh edges
Applying physics simulation on mesh
Draw line between the two sets of points
Mesh Thickening
9 surface segments are selected individually and divid- ed to create a custom number of boundary anchors.
A ‘buildable’ area surface is explod- ed to extract the edge points.
Setting ‘buildable’ area surface
Creating adjustable cutting geometry
The moved anchor points and their original position are used to create ‘pipes’, which resem- ble structural bamboo.
Selecting segments (desired entrances)
Project moved points down to the plane
Extract surface edges
Move Anchor Points Solid intersection
Points along the cut out circles are selected and moved to create the first set of anchors.
Selecting segments (desired closed walls)
Moving anchors (desired entrances)
Moving anchors (desired closed walls)
Deconstruct Mesh & extract Vertices
Pipe and cap the drawn lines

Study 2
Study 3
Initial Tensile Structure Study in context
Study 1
Existing Arts Market Massing in context
• • • • • • •
Adjustable Height. of Circular Openings
Adjustable Radius of Circular Openings
Adjustable Membrane Opening Height. (both entrance ends) Adjustable Membrane Thickness. (all meshes)
Adjustable Membrane Stiffness (all meshes)
Adjustable Membrane Tension (all meshes)
Adjustable Structure Radius. (all beams/columns)
List of Adjustable Elements

Developing Tensile Structure
Building up on the initial script, many of the architectural elements began to take form. Focus was drawn on developing each architectural ele- ments, like the feature columns, that can be parametrically controlled, and how their change causes an effect on other linked elements like the mesh membrane.
A second mesh is created, and physics simula- tion is run to create a tensile membrane which should provide cover over the central feature column.
This part of script has been explained in the previ- ous pages.
Using the mesh membrane opening circles, a location is defined for parametric feature columns to take place. The columns are linked with the openings, therefore if the openings are to change diameter/ position/heights, the feature columns will adapt and change accordingly to re- spond to the input changes.
Once physics simulation on smaller mesh membrane is com- plete, the new meshes’ edges are extracted and used a piping paths to generate bamboo triangulated structure. Additionally, the simulated mesh is also separated into individual triangular segments, and finally thickened.
Floor and adjustable counter around the central feature column is created.
All the different architctural components are grouped, merged and welded.
Segments adja- cent to contex- tual buildings
are selected to create parametric closures (mem- brane meshes) that respond to change.
Step 3 is repeated, however it is applied to the main mem- brane mesh that spans over the ‘buildable’ area.

Developed Tensile Structure Study in context
Study 1
Existing Arts Market Massing in context
List of Adjustable Elements
New Additions
• • • • • • •
Adjustable Height. of Circular Openings
Adjustable Radius of Circular Openings
Adjustable Membrane Opening Height. (both entrance ends) Adjustable Membrane Thickness. (all meshes)
Adjustable Membrane Stiffness (all meshes)
Adjustable Membrane Tension (all meshes)
Adjustable Membrane Triangulation Density. (all meshes)
• • • • • • •
Adjustable Structure Radius. (all beams/columns) Adjustable Vertical Division. (for each column) Adjustable Horizontal Division. (for each column) Adjustable Horizontal Division. (for each column) Adjustable Top Radius. (for each column) Adjustable Bottom Radius. (for each column) Adjustable Height. (for each column)
• • • • • •
Adjustable Height of small roof above centre column
Adjustable Opening Distance of small roof above centre column Adjustable Structure Radius. (all beams/columns)
Adjustable Behind Counter Width (Space Between Column & Counter) Adjustable Counter Height & Width
Adjustable Floor Thickness
Study 2
Study 3

Form Finding with Karamba
For the last stage of the script, the meshes generated by Kangoroo Physics are used to create a series of triangulated bamboo structural beams. These are then analysed in Karamba 3D to find the form with the least Axial stress.
This part of script has been explained in the previous pages.
Beam resultant forces component is used to extract Normal Forces (tensions and compression) acting on the beams (bamboo triangulate structure). The component analyses each structure piece individually and returns the values; <0 compressive forces & >0 tensile forces. Mass addition is used to add the values into a single value which could be compared as part of the analysis between the mesh iterations. The aim of the analysis was to find the structural from that created the lowest stress values.
he mesh surface that was simulated by Kangoroo Physics has the mesh edges xtracted and used to crate ‘beams’ in Karamba 3D. Other various of factors such
s material (wood), load (gravity), cross section and support is assigned in Assemble omponent which re-creates the model as a Karamba 3D Model. The model is then nalysed and using ‘beam View’ component, analysis is visualized.
T e a c a

Analysis 1
Analysis 2 Analysis 3
Tensile Forces: 2.9423 Compressive Forces: -1.7113
Analysis 4
Tensile Forces: 3.2222 Compressive Forces: -1.8624
Analysis 5
Tensile Forces: 8.2807 Compressive Forces: -2.9222
Analysis 6
Tensile Forces: 2.8714 Compressive Forces: -1.7955
Analysis 7
Tensile Forces: 3.2806 Compressive Forces: -1.8785
Analysis 8
Tensile Forces: 6.5989 Compressive Forces: -2.8885
Analysis 9
Tensile Forces: 2.4477 Compressive Forces: -1.2176
Tensile Forces: 2.3591 Compressive Forces: -1.2653
Tensile Forces: 4.0268 Compressive Forces: -3.7535

Final Study Conclusion
After further studies into Kangaroo Physics, Catmull Clark Subdivisions, and a new study of Karamba 3D, I was able to achieve a final, fully parametric, The Arts Market proposal located in Kuta, Bali, Indonesia. With the use of Kangaroo Physics simulation, I was able to fully achieve my initial aspiration of creating a large spanning, membrane/bamboo/ wooden structure, and together will Catmull Clark I was not only able to extract a triangulated frame structure, but also create a unique pattern on the tensile membrane.
The last Grasshopper component which I began to explore in this final piece of work, was the Karamba 3D structural analysis. I decided to analyse the stress levels on the wooden triangulated frame structure and find the most optimum design iteration that caused the least amount of stress. This part was done manually as I experimented with different input parameters and recorded the stress level output. For this part of this script, I initially set out to use Galapagos evolutionary solvers, but because the Kangaroo physics simulation had to be run to generate the geometry from the set of inputs before the set of data was generated in Karamba 3D, Galapagos did not perform well as it changed input parameters too quickly for the geometry to be generated by Kangaroo. This resulted in the script to crash, and I was unable to solve this problem.
Moreover, I had also spent some time exploring the possibility of mesh weaving, however I was unable to fully understand the process and make a functioning script. Instead I opted to use Weaver Birds’ Catmull Clark triangulated subdivision (similar to the structure) and subdivide the mesh membrane to generate a pattern.
The further development of the script would have been to look into solving the problems which I got when attempting to use a Galapagos evolutionary solver, as this I believe would have generated an even better performing geometry for the proposal. Additionally, I would have also liked to have looked at analysing the structure entirely, not just the span, but also the feature columns and the columns on the side of the structure, as this would have also had some impact on the structure.
Lastly, I was unable to create a potential earthquake simulation on the structure, however I had planned to create a plane to which the structural columns would have been attached, and shook the plane whilst running the Kangaroo Physics simulation. Although this would have been an interesting exercise to undertake, I believe in the time-frame I would have not been able to address the issues raised and posed by the potential earthquake, therefore the simulation would have not impacted the design strategy/approach.
I chose to use the outcome geometry of Analysis 7 from the Karamba 3D Structural Analysis study as it proved to be the least stress causing model. Analysis 7 was not only the best performing model in terms of the struc- ture, but aesthetically it had a lot of interesting features which I also liked. The large and tall central opening allowed the most light into the spaces inside and improved the lighting conditions. The two circular openings at the front and rear of the structure were also large enough to wrap around the existing trees and allow for further light to enter the space.
Another study of the model, which would have been interesting for me to see, was how acoustically the space performed. For this analysis I would have had to use the Mosquito Plug-in for Grasshopper, identified the sound source position, and specified the surfaces from which the sound would bounce from. This potentially would have had an impact on the design, as I would have had to find a form that is not only best for acous- tics, but also for natural light levels and least stress causing.
Although I was unable to further explore the model with further poten- tial studies, overall I’m very pleased with the final script that I was able to create, as all parts of the design have been made parametric and interlinked with one another. Additionally, I’m happy to have discovered so many different potential uses with grasshopper, and extremely excited to implement and explore other studies in my future work.
Analysis 7 Geometry - Final Outcome






PART B - stage i
Developing Salt Brick System
The last part of the report focuses on developing a potential design for
a brick system made from salt. The brick system is also covered with a ‘protective’ layer of salt crystals, therefore a simulation of crystal growth on a surface is also explored in this last chapter. Last but not least, the two are merged into one component and used to create a pavilion, which demonstrates how architecturally this new system could be used.

Masters Project Summary
The project initially began investigating the manufacturing means and processes of future electric vehicles. The concluding factors were that the inevitable rise of the electric automobiles in the future will mean the rise in demand for Lithium-Ion batteries that are used in all of the electric cars. This ultimately means that Lithium-Ion batteries, or Lithium as a material to be exact, will become the 21st century oil of the future, and therefore countries that posses large deposits of lithium will rise to be very rich and powerful countries.
The next stage of the project, began to investigate ways in which lithium is sourced/extracted and which countries contribute significantly to sourcing lithium carbonate for lithium-ion battery manufacturing. The investigation showed that nearly half the worlds lithium resources (estimated around 49%) is located in the South American region; Chile, Argentina, and Bo- livia. Interestingly Bolivia, the country with one of the largest salt flats and lithium reserves in the world (estimated to hold over 9m tons of lithium),
is at the very bottom of lithium production list. Bolivia’s lithium carbonate exports in 2017 reached a mere 50 tonnes, compared with neighbouring countries like Chile (14,100 tonnes export) and Argentina (5,500 tonnes export), this makes Bolivia’s exports a very small fraction from the South American region, and that is not even mentioning other top exporting countries from around the world.
The project began to further research and investigate the issues surround- ing Bolivia’s Lithium exports and prompted to choose Bolivia’s Uyuni Salt Flats as the overall site for the project. Regional political figures dictate that the Salt flats are not to be exploited by foreign companies, and instead the country wishes to take the Lithium Carbonate production into its own hands and at its own pace, thus explaining the low exportation figures. The country also seeks to bring battery and electric vehicle man- ufacturers along with their factories to the country, which would provide jobs for the locals and increase the country’s economy. However, Bolivia’s lack of infrastructure and political instability currently seems to be the decisive factors from this taking place.
Nevertheless, the stunning and untouched natural landscape, indigenous communities, and local architecture that thrives on using salt bricks, seems to be just a few factors, amongst many others, that attracts large portion of tourists into the country. The overall project proposal is to
look at developing a unique transportation infrastructure in and around the Uyuni Salt Flats that would accommodate both the tourists and the Lithium extraction processes and factories. The second part of the overall project will be to design a unique ‘factory of the future’ that increases Lith- ium Carbonate production in the local region, whilst using local resourc- es such as salt, as one of the key building materials.
Brief for Digital Design Proposal
It is in this design module, that I wish and propose to investigate a poten- tial design for a new salt brick system that allows salt crystals to grow on the exterior surface and form a protective layer against the rain. Once that protective layer is dissolved by rain and the salt bricks are again exposed to the exterior, the surface is then triggered to allow the growth of salt crystals along the salt brick surface to take place - and so the cycle would repeat after every rain season.
In order to achieve this, a new salt brick system is to be parametrically designed using some of the techniques learnt in the seminar workshops. The proposed system is to act as either an infill layer or as a cladding system to a more structurally stable building/element framework. The new salt brick system should be flexible and parametrically adaptable to any shape or size structural framework. In addition the system should accom- modate crystal growth, which should be simulated on the external surface of the designed salt brick system.
The overall combined outcomes should be tested on straight and curved surfaces, and if needed optimized to ensure both surface types can be ac- commodated using a new salt brick and crystal hybrid system. Although the main intent is to design either an infill layer or a cladding system, just like a regular brick, which can be used as a cladding element and/or a structural element to a building, the new and proposed hybrid structure should also be tested in both scenarios to widen the potential uses for the new hybrid system.
Hotel made from Salt Blocks in Uyuni, Bolivia
Desired Outcomes
A salt brick system design(s) that incorporate salt crystal growth. The mod- ule should be tested and work on both flat and curved surface types, with crystal growth simulation also following the tested surface types. A final proposal that will demonstrate this hybrid module will be in a shape/form of a wall/pavilion/shelter, and this will be secondary to the main intention, purpose and aim of developing a functional salt brick system design.
3D Printed salt tile structure - by
3D Printed salt tile - by
Salar de Uyuni, Bolivia
Salt used to 3D Print - by

Parametric and Tactile brick precedent
3D Printing clay brick module
Parametric and Tactile brick module precedent
Parametric and Tactile brick precedent - applied on curved surface
Geometric clay brick module with interlocking system
Example of salt crystals growing on a brick surface
Parametric and Tactile brick precedent - applied on flat surface
Interlocked brick system creating a structural arch

Designing Potential Brick System
Inspired by the vast presence of voronoi geometry in the salt flats of Salar de Uyuni, Bolivia (project site), I set out to use the logic behind voronoi and help me design a new potential brick system which could be made entriley out of salt. Using Grotto by Aranda\Lasch as a main source of inspiration and precedent below is my first attempt.
Generating Wall Mass
Populating Mass /w Points
Creating 3D Voronoi
Once the 3D voronoi is generated from a set of random points, the voronoi is exploded into individual faces. Each voronoi face is then used to extract the centre point of the face. These set of points are then measured against one another - this will help to find the inner ‘clothed’ voronoi cells in the future.
First part sets out the boundaries in which 3D Voronoi is gen- erated. The mass boundary can mimic a wall or a compo- nent/building mass based on dimensions given as an input.
250 Points
500 Points
1000 Points
2000 Points
*Script Resource: The script structure was heavily sourced from the forum post linked
above. However I have completely changed the first part of the script to generate an outcome which I desired. The rest three parts of the script I tried to understand and explain how it works through a series of diagrams and annotations.
Exploding 3D Voronoi
Selecting Voronoi Faces’ Centre-points
This part specifically aims to find all of the voronoi cells that have a naked edge (outter facing face).
“Closest points gives us data tree with distances (cp output D), where each branch con- tains 2 values - 0 for point itself and 2nd distance for potencial pair. next add these two values - it should give some value greater than 0 (what means there is only one point at that location) or equal to 0 (if point shares location with other guy)
we can tell that each point has some information about neighbours. Going back to faces - we can tell that face is ‘naked’ or ‘clothed’ - if its center point has pair in same location it means face is clothed, if its alone its naked.
Next we use path mapper to add all values from faces from each cell (path mapped ->mass add). Now if all faces are clothed, than adding all values should give 0, which means cell is clothed. If this value > 0 than cell is naked.” - Mateusz Zwierzycki
Finding 2 points with the same location
Selecting the ‘clothed’ voronoi cells
Culling the unwanted open (outter facing) edge voronoi cells.
Join Cells

250 Points
500 Points
1000 Points
2000 Points
250 Points - Manual Carving 1
500 Points - Manual Carving 2
1000 Points - Manual Carving 3
2000 Points - Manual Carving 4

BRICK SYSTEM (skeletal selection)
Building Skeletal Structures
Having developed an idea behind the new brick system design, I wanted to test it by attempting to construct various of skeletal structures. For this to work I had to generate a curve of the skeletal structure, and then place it within the 3D voronoi box and select only the closest voronoi cells that are to the place skeletal curve. The outcome of this experiment is shown below.
Skeletal 1
Custom Mass Dimensions
Skeletal 2
Skeletal 3
Skeletal 4
Creating Mass
Populating mass with points
Creating 3D Voronoi
Selecting the ‘clothed’ voronoi cells
Selecting closest voronoi cell centre points
Selecting voronoi cells with closest centre points Join Cells
First part sets out the boundaries in which 3D Voronoi is generated. The mass boundary can mimic a wall or a component/building mass based on dimensions given as an input.
Curve closest points
Finding the voronoi cells that have their centre points clos- est to the curve points within a set distance. Then selecting those voronoi cells based on whether their centre points matched the set criteria or not.
*Script Resource: inside-voronoi-cells-selection
As mentioned previously, parts 2 and 3 of this script were resourced from the link above. The other parts were original and created by me.
Skeletal 5
Setting Custom Skeletal Curve
Once the 3D voronoi is generated from a set of random points, the voronoi is exploded into individual faces. Each voronoi face is then used to extract the centre point of the face. These set of points are then measured against one another - this will help to find the inner ‘clothed’ voronoi cells in the future.
Exploding 3D Voronoi Selecting Voronoi Faces’ Centre-points
Input skeletal curve to ‘attract’ voronoi cells onto it. The slider controls the max. distance between the curve points and the voronoi cell centre point to attract.
600mm 800mm
Selecting centre point of ‘clothed’ voronoi cells
This part specifically aims to find all of the voronoi cells that have a naked edge (outter facing face). - as explained in previous script

250 Points
500 Points
1000 Points
2000 Points
2000 Points - Skeletal 1
2000 Points - Skeletal 2
2000 Points - Skeletal 3
2000 Points - Skeletal 4
2000 Points - Skeletal 5

BRICK SYSTEM (mass deduction)
Carving Mass Spaces
After experimenting with an additive design approach in previous skeletal structure script, I wanted to test and see if it would be possible to adopt an opposite subtractive design approach. The script for this approach is very much similar other than parts 4 and 5, which had a few adjustments. The same clothed voronoi cell mass is used, however the centre points of the cells that fall within the subtractive mass breps are culled (removed).
Mass 1
Custom Mass Dimensions
Mass 2
Mass 3
Mass 4
Creating Mass
Populating mass with points
Creating 3D Voronoi
Selecting the ‘clothed’ voronoi cells
Selecting closest voronoi cell centre points
Using the leftover points to select voronoi cells
The centre points of voronoi cells that did not fall inside the subtractive mass brep, are selected and used to display the 3d voronoi cells.
First part sets out the boundaries in which 3D Voronoi is generated. The mass boundary can mimic a wall or a component/building mass based on dimensions given as an input.
Subtractive Mass Brep
*Script Resource: inside-voronoi-cells-selection
As mentioned previously, parts 2 and 3 of this script were resourced from the link above. The other parts were original and created by me.
Once the 3D voronoi is generated from a set of random points, the voronoi is exploded into individual faces. Each voronoi face is then used to extract the centre point of the face. These set of points are then measured against one another - this will help to find the inner ‘clothed’ voronoi cells in the future.
Selecting centre point of ‘clothed’ voronoi cells
Input brep mass which would be used to
cull the centre points of voronoi cells that
are within it. This way a subtractive design method could be used to carve out a desired mass/shape made up of 3D voronoi cells.
Exploding 3D Voronoi Selecting Voronoi Faces’ Centre-points
This part specifically aims to find all of the voronoi cells that have a naked edge (outter facing face). - as explained in previous script

Click to View FlipBook Version