Algorithm-Aided Design PDF
Algorithm-Aided Design PDF
AAD
ALGORITHMS-
AIDED
DESIGN
PARAMETRIC STRATEGIES USING GRASSHOPPER®
LE PENSEUR PUBLISHER
ARTURO TEDESCHI
AAD
ALGORITHMS-
AIDED
DESIGN
PARAMETRIC STRATEGIES USING GRASSHOPPER®
LE PENSEUR PUBLISHER
AAD_Algorithm s-Aided Design
Parametric Strategies using Grasshopper®
A rtu ro T e d e sc h i
with contributions by Stefano A ndreani, Antonella Buono, M aurizio Degni, Lawrence Friesen, Andrea Galli, Fran
cesco Lipari, Davide Lom bardi, Ludovico Lonnbardi, A rthur Mamou-Mani, Alberto Pugnale, Antonio Turieiio, Brian
Each author bears responsibility exclusively for the contents he wrote and might dissent from contents of other
ISBN 978-88-95315-30-0
First edition 2014
© 2014 by Le Penseur
http://www.lepenseur.it/books-and-training/en/
All right reserved. No part o f th is book m ay be reprinted or reproduced or utilized in any form or by any electronic, nnechanical, or
other m eans, now known or hereafter invented, including photocopying and recording, or in any inform ation storage or retrieval
Product or corporate nam es m ay be trad em arks or registered trad em arks, and are used only for identification and explanation w i
thout intent to infringe. G rassho pp er is a trad em ark of Robert McNeel & Associates. Autodesk and Ecotect are registered trad em arks
or trad em arks of Autodesk, Inc., and/or Its sub sid iaries and/or affiliates in the USA and/or other countries.
Every effort has been m ade to contact and acknowledge copyright ow ners. If any m aterial has been included w ithout perm ission,
the publisher offers its apologies. The publisher would be pleased to have any e rro rs or om issions brought to its attention so that
The authors and publisher o f this book have used th eir best efforts In preparing the m aterial in th is book. These efforts Include the
developm ent, research and testing o f the theo ries and com puter m ethods to d eterm ine th eir effectiveness. The auth ors and publi
sher of th is book m ake no w a rra n ty of any kind, exp ressed or implied, with regard to th ese m ethods explained, or the docum entation
contained in th is book. The authors and p ub lisher shall not be liable in any event for any dam ages. Including incidental or consequen
tial dam ages, lost profits, or otherw ise in connection w ith any text and m ethods explained in this book.
This book m entions several projects and buildings not necessarily designed using the algorithm editor Grasshopper® , but whose
Acknowledgements 7
Foreword 9
4_transfornnations 183
4.1 Vectors 185
4.2 Euclidean transform ations 187
4.3 Affine transform ations 196
4.4 Other transform ations: Box Morph 210
6_smoothness 255
6.1 NURBS and Polygon Meshes 258
5.2 Polygon m eshes 260
6.3 Creating meshes in G rasshopper 263
6.4 SubD in Grasshopper: W eaverbird plug-in 273
6.5 Subdivision of triangular m eshes: Loop algorithm 274
6.6 Subdivision of quadrangular m eshes: Catmull-Clark algorithm 277
Digital informing creativity 293
7_loops 297
7.1 Loops in Grasshopper: HoopSnake component 300
7.2 Fractals 301
7.3 Loops in Grasshopper: Loop component 306
8_digital fabrication | make ideas come true 309
8.1 Fabrication Techniques 310
8.2 IVIodeling Printable Objects 320
8.3 IVIodeling objects for cutting based operations 330
8.4 NU:S Installation 338
8.5 Large-scale objects 341
Over the material, Past the Digital: Back to Cities 343
(Digital) Form-finding 353
Appendix
References 492
First of all I would like to thank Maurizio Degni and Davide Lombardi who assisted me during
the writing and editing. Their support and com m ents have been essential for this publication.
I'm also indebted to Brian Vesely for the final revision and to Alessia De Luca who proofread the
manuscript.
This book gathers experim ents, methods and strategies that I developed as an independent
researcher, designer and tutor. Specific topics are part of a research led at AA Rome Visiting School
organized by the A rchitectural Association School of Architecture (London) and directed by Lorenzo
Vianello, Lawrence Friesen and the author, under the coordination of Christopher Pierce.
The book also benefits from the original contributions of several people: Stefano Andreani, Antonella
Buono, Lawrence Friesen, Andrea Galli, Francesco Lipari, Ludovico Lombardi, Arthur Mamou-Mani,
Alberto Pugnale, Antonio Turiello, Lorenzo Vianello, Fulvio Wirz. I would also thank their respective
Particular thanks go to the McNeel staff: Elena Caneva, Bob McNeel, Jody Mills, Carlos Perez,
Giulio Piacentino, Delia Robalo, David Rutten. I wish to acknowledge the supportive Grasshopper
and Rhino comm unities, in particular: Michele Calvano, Yannis Chatzikonstantinou, Jissi Choi, Paul
Cowell, Arturo de la Fuente, Simon Flory, Ursula Frick, Riccardo Gatti, Thom as Grabner, Giorgio
Gurioli, Rodrigo Medina Garcia, Nathan Miller, Michalatos Panagiotis, Daniel Piker, Kaijima Sawako,
Will Pearson, Clem ens Presinger, Michael Pryor, Filipe Reis, Mateusz Zwierzycki.
I would also acknowledge people that, in different ways, allowed me to start and enhance my
experience as a lecturer over the last four years, in particular: Rosetta Angelini, Paolo Cascone,
Giancarlo Di Marco, Paolo Fusero, Andrea Giordano, Matteo Gobbi, Lorenzo Massimiano, Giuseppe
Massoni, Vittorio Paris, Attilio Pizzigoni, Livio Sacchi, Antonino Saggio, Simone Simonelli.
My gratitude also goes to several people that inspired me or encouraged my work over the years:
Eugenio Aglietti, Fabrizio Aimar, Antonietta Andriuoli, Giuseppe Aquino, Andrea Balducci Caste,
Chiara Cola, Peter Cook, Rodolfo Beltran, Alessio Biagi, Luca Biselli, Federico Borello, Paolo Franco,
Niccolo Casas, Nicholette Chan, Carlo Coppola, Mario Coppola, Paolo Cresci, Maurizio Crespan,
Pellegrino Cucciniello, Emanuele Custo, Dominiki Dadatsi, Gaetano De Francesco, Davide Del
Giudice, Enrico Dini, Gregory Epps, Michela Falcone, Cristian Farinella, Christian Florian, Andrea Foti,
Simone Giostra, Lorena Greco, Cesare Griffa, AN Habibian, Marcin Kasiak, Maria e Vincenzo Lamberti,
IVIario Losasso, Giuseppe Losco, IVlassimiliano iVlanno, Emanueie IVIantrici, Benedicta Mariani, Maria
Elisa Marini, Maria Rosaria Melia, Flavia Migani, Jon Mirtschin, Andrea Morgante, Filippo Moroni,
Josef Musil, Charlotte Newman, Federica Ottone, Michael Peng, Em m anuele Jonathan Pilia, Marco
Poletto, Sergio Pone, Luigi Prestinenza Puglisi, Faith Robinson, Rinaldo Rustico, Stephanie Santini,
Antonio Pio Saracino, Francesco Schiavello, Patrik Schum acher, Gabriele Stancato, Davide Severi,
Danecia Sibingo, Aldo Sollazzo, Alessio Spinelli, Liz Stinson, Giovanni Viggiano, Davide Vitali, Moritz
Finally, I would like to thank all the students that I met in these years. This book is dedicated to them.
Arturo Tedeschi
oreword
In writing the foreword to Arturo Tedeschi's first book, "Param etric Arcliitecture with Grasshopper,"
the scenario I portrayed on the use of digital tools and generative algorithms in architecture was
rather different from today. It was ju st a few years ago, but the discipline had yet to complete
the portrayed revolutionary cycle: both academic research and advanced architectural practices
around the world were stillin the process of discovering the newness of the digital era with little real
focus on the building's industry. From the early nineties to the beginning of the new millennium,
architecture went through an incredible period of creative acceleration which som etim es took the
discipline progressively beyond product design, car design and art in general. In fact many spatial
languages, processes and patterns developed in this period by students and digital pioneering
architects with generative design tools, have been subsequently incorporated and produced in
other fields with great success. It might then sound a little paradoxical that the discipline which
did generate this revolutionary design shift is also the one which took longer to benefit from its
implications in real world scenarios like m anufacturing and construction. This delay was due to a
number of issues intrinsic to architecture: the complexity of a built organism, its delicate bond with
socio-economic and political context, and last but not least the tim efram e and costs involved in
Today the popularity of generative tools and the way students can now absorb information and train
their skills has grown exponentially. At the beginning of the new millennium computational training
were yet to be included within academic programmes and the average student could only passively
watch the results of the new digital era on the internet, considering those visionary experim ents as
A changed paradigm can now be depicted. Not alternative or contrasting, ju st evolved. Looking
back at the advances of digital tools in architecture in the last decade two aspects are clear. Firstly,
computational research and knowledge have been widely spread thanks to those architects,
researchers and universities who shared their experiences. The web has become an invaluable
source for tutorials published in blogs or websites which are inspiring to young generations of digital
designers. At the sam e tim e students have the opportunity to learn processes and theory through
workshops arranged by experts and visiting schools showcasing didactic methods used by the most
advanced universities all over the world. This gives students, coming from a more conservative
background, the opportunity to practically understand this new approach to design. In parallel
the wider interest towards the topic has triggered the activation of m any advanced architecture
programs, computational departm ents and digital fabrication facilities from international universities
which were previously known to foster a more conservative approach towards architectural
research. Better aw areness of the creative possibilities of digital tools has also strengthened the
global sensibility of architects for the rising aesthetic of computational design which is increasingly
The affirm ation of digital design culture de facto concludes the speculative era started in the nineties
with pioneers using animation software to generate param etric form s and ending with agent-based
designs programmed using Processing. Thirty years enriched by highly experim ental architecture
Second aspect, which I believe could possibly trigger an evolution of the way architects make use
of digital design, is the shift towards an integrated use of computational design which is already
underway. Trying to contrast an unstable socio-economic scenario, the architects' main interest is
moving from a mere pursuit for spatial complexity and newness to em brace collaborative workflows,
The outcome of architectural research can no longer be a beautiful image printed in a magazine or
a book, waiting to be eventually converted in reality after years of reverse engineering and money
spent. Digital design can and must confront reality as early as in concept stages giving answers
to both perform ance and functional criteria and achieving solutions tailored to overcome the
The rise of pre-assembled pipelines on construction sites, the necessity of reducing the number
of special parts, the economical restrictions deriving from an era of constant recession and, more
notably, the necessity of planning a sustainable lifecycle for the building are all part of the equation.
These are concepts which can be seen as in opposition to the advancem ent of architectural research;
however, digital architecture m ust be brought to this next level: form m ust reflect the integration
languages, structural perform ance as well as building sub-system s. For the designer this means, to
evaluate the output of their G rasshopper definition, Mel or Processing script for variables beyond
personal spatial vision. In order to succeed in the current m arket it is crucial to go beyond. It is
essential to dominate tools and processes in order to achieve a higher level of coordination within
the design.
The need for digital designers and artists to redefine their agenda is quite well described in the
article written by Michael Parsons for Design Review: "Tolerance and Customization: a Question of
Value". Even if I cannot completely adhere to author's vision I think he is right when arguing that
as digital tools become more popular and ordinary the complex form s made possible by these
tools will lose their status of cutting-edge research unless their aesthetic and spatial qualities are
case the Voronoi algorithm. Form erly a territory only explored by the most skilled computational
designers, the Voronoi algorithm has now become an accessible tool. It is obvious that only a deep
understanding of its geometrical properties and intelligent im plementation of them can push
forward and justify its use. Anything else is just a mere proof of knowing how to use a definition
programmed by others, in which case, as Michael Parsons says, "there is no skill involved in it" and
I would add there is no progress either. The goal, instead, must be to achieve a perfect equilibrium
In this book Arturo Tedeschi delivers a text that is both a theoretical and practical reference for
architectural professionals and students. The text dem onstrates techniques of advanced digital form
finding workflow, which enables readers to take a step forward, towards the m ature implementation
of digital tools in architecture. Computational design has refined the architectural language, and it is
now time for designers to make dram atic yet meaningful poetry with it.
Fulvio Wirz
Fulvio W irz, born in Naples in 1977, graduated in architecture from Federico II University in Naples. He earned a
master in "Public Areas Design" in 2003 and in "Architectural Design for Photovoltaic Integration" in 2004. Since
2002 complemented the w ork experience in his father's studio with teaching at design courses with Lucio Morrica
and starts a personal research focused on relations between architecture and new m edia, put into practice through
several competitions and culm inated with the achievem ent, in 2008, of the PhD in Architectural Design with the
thesis "Digital representation and architectural composition". Since 2005 he cooperated at Zaha Hadid Architects
office in London w here he has progressed his career over the years earning the position of Associate in 2014.
Within ZHA Fulvio has won prestigious international com petitions as Seville's library, the M asterplan for "Kartal-
Pendik" area in Istanbul, the "Lilium Tow er" in W arsaw , the "Eli & Edythe" m useum in Michigan, the KAPSARC (King
Abdullah Petroleum Studies and Research Center) in Saudi Arabia. He has been project designer on "Aura", an
installation exhibited at Biennale di Venezia in 2008, and on a num ber of cutting edge product designs including
Zephyr Sofa, Z-Chair and Liquid Glacial Table. Currently he's working on several projects, such as the design of
a mosque in Kuwait and the KAFD Metro Station in Riyadh. Fulvio has been co-leading Research Cluster 6 at the
GAD (Graduate Architectural Design) at Bartlett School of Architecture and has been teaching at a num ber of
universities in Italy and UK. Since 2013 he is lecturer at the London South Bank University and he has been guest
lecturer at AA Rome Visiting School.
Detail of the specification
d e c e m b e r1 8 2 2 to
m ents on pencil-holders.
AAD
Algorithms-Aided Design
From traditional drawings to the parametric diagram
Architects have always drawn before building, an act that diferentiates architecture from the mere
construction. Drawings have been the architects medium to organize ideas, resources, space, etc.
and represent the architects' faculty to predict design outcomes. As methods of representation have
evolved, new styles have emerged. Tools such as perspective in the Renaissance and projective
geometry in Modernism have marked leaps forward in design. However, these tools have been
dependant on a stable set of instrum ents for centuries: paper, drawing utensils, ruler and the
compass. In this model each creative act is translated into a geometric alphabet by gestures which
FIGURE 0.1
The act of drawing is a natural gesture wlien executed using traditional drawing tools which establish a direct link
between ideas and signs. A natural interaction is characteristic of those tools which can be considered as a hand
mould.
An additive process
The traditional drawing is an additive process, in w liich complexity is achieved by the addition
and overlap of independent signs traced on paper. No associative relations can be managed.
The internal consistency of a drawing is not guaranteed by the medium, but is entrusted to the
designer. As follows, the drawing is not a sm art medium, but rather, a code based on standards
and conventions.
FIGURE 0.2
The traditional drawing is based on adding and overlapping independent signs on a paper. The meaning and the overall
consistency of these signs is entrusted to the designers and is based on conventions. The drawing by Mies van der
Rohe (on the left) is a "plan" while the sketch on the right is a "draft", nevertheless both are (ontologically) just signs on
a paper.
The additive logic of the traditional drawing implies two limits: first, the act of drawing differs from
cognitive mechanisms underlying the creative process, which works by establishing interrelations
rather than adding information. Second, the drawing process excludes physically relevant aspects that
in the real world drive the generation of form s. For example, the traditional drawing cannot manage
forces (such as gravity) and constraints which affect and restrict deformations and displacements.
These limits have restricted the exploitation of the drawing and designers have been forced to reiterate
definitive tectonic systems rather than innovating. Initially these limits were not overcome by the
computer: CAD software simply improved the ability to perform repetitive tasks without affecting the
method of design. Similar to traditional drawing, CAD entrusted the designer to determine the overall
consistency by adding digital signs or geometric primitives on a digital sheet/space and controlling CAD
layers; this method can be seen as the translation of the additive logic w ithin the digital realm.
FIGURE 0,3
The m ouse is still an extension of the brain. It sim ulates the "presence" of the hand in the digital environm ent.
From 60's, the architecture avant-garde tried to "force" drawing's limits using several methods to
represent forces and processes that drive the generative process. For example, Elsenman's diagram
for House IV Im pressed the entire sequence of geometric operations that led to the final object.
VfplJI
FIGURE 0,4
Peter Eisenm an, House IV, Falls Village, Connecticut, 1971,
From conventional drawing to the analogue (smart) apparatus
Despite the limitations, drawings have been the stable nnedium of architecture over the centuries and
this was possible as the architects have relied on typology, i.e. the use of well proven, preconceived
solutions and tectonic system s. Typology made the drawing not only a comm unication medium but
a system that enabled designers to explore and refine variations (form-making approach) within a
The conventional drawing was first attacked by a new approach, the form-finding - emerged in
architecture in late 19th century - which aimed to investigate novel and optimized structures found
through complex and associative relations between m aterials, shape and structures.
Pioneers like Gaudi (1852-1926), Isler (1926-2009), Otto (1925-) and Musmeci (1926-1981) have
rejected typology and looked to self-formation processes in nature as a way to organize buildings.
Since the form could not descend from proven solutions, the traditional drawing could not be used
FIGURE 0.5
Heinz Isler. Service Station in Deitingen, Solothurn, Switzerland (1968). Image by David P. Billington.
For this reason form-finding pioneers relied on physical models such as: soap film s which found
minimal surfaces, and suspended fabric which found com pression-only vaults and branched
structures. In other words, the drawing as a medium to investigate form w as replaced with
physical form finding relying on analogue devices which dem onstrated how dynam ic forces could
• •
# •
FIGURE 0.7
"Any granular m aterial falling from a fixed point form s a cone on the surface below and a funnel within the
granulate m ass with the sam e angle of inclination, the natural angle of repose, 35 degree," Frei Otto, 1972. Sand
Experim ent Inspired by Frei Otto - W eW antToLearn.net, studio ran by Toby Burgess and A rthur Mamou-IVIani at
the University of W estm inster, student: Jack Munro,
Over the last decades the increasing com plexity of buildings has made form -finding an important
strategy in determining the shape and form of indeterm inate structures. Structural optimization
through physical modeling w as m ono-param etric (gravity based) and marked a trajectory towards
m ulti-param etric form-finding which aim s to interact with heterogeneous data: geometry, dynamic
His research on "the relations between the dimensions dependent upon various parameters" culminated
in an innovative exhibition of his models of stadium s for soccer, tennis and swim ming at the 1960
Twelfth Milan Triennial. Moretti's design param eters were linked to viewing angles and economic
feasibility in these projects: the final shape was generated by calculating pseudo isocurves, that
FIGURE 0.8
"Architettura Param etrica" research. Milan Triennale exhibition, 1960. Solution for a soccer stadium and diagrams
drawn to generate the geom etry.
Moretti's research was a collaboration with the m athematician Bruno De Finetti, wherewith he
founded the Institute for Mathematical Research In Architecture (I.R.M .O.U.). Moretti said:
'The parameters and their interrelationships become [...] the code o f the new architectural language,
the "structure" in the original sense o f the word [...]. The setting o f param eters and their relation must
be supported by the techniques and tools offered by the most current sciences, in particular by logics,
mathematics [...] and com puters. Computers give the possibility to express param eters and their relations
NOTE 1
F. Bucci and M. M ulazzani, Luigi Moretti opere e scritti (M ilano: Electa, 2006), 204-208.
It is evident from this quote, that IVIoretti immediately understood the potentials of the computer applied
to design. Following Moretti, the first application for design utilizing the computer occurred in 1953. The
American computer scientist Ivan Sutherland developed the Sketchpad, defined as "A Machine Graphical
Communication System," creating the first interactive Computer-Aided Design (CAD) program.
FIGURE 0.9
Ivan Sutherland on MIT Lincoln Labs'TX-2 com puter (1963). The Sketchpad interface.
Considered as one of the most influential com puter programs ever written, the sketchpad was
designed to test human-com puter interaction and allowed designers to draw basic primitives such
as: points, lines and arcs, using a light-pen for input. The program featured many of the now typical
CAD operations such as: blocks managing, zoom and snaps. Moreover, it was based on an advanced
It was an innovative feature which facilitated links between objects; for example, if two lines (or more
appropriately two vectors) were drawn starting from the sam e point A, every m ovem ent of A implied
change in magnitude and direction of the lines. Constraints such as points could be combined to
generate relationships between objects, overcoming the limits of the additive logic of traditional
drawings.
The introduction of the com puter to design by Moretti, and the graphical interface of Sutherland
marked a revolution in architectural design techniques and m oreover it upgraded the architects
tools. However, the innovations brought by early CAD programs w ere not im mediately embraced by
For instance, the associative capabilities introduced by the Sketchpad were not embedded in commercially
successful software, such as Autocad (1982). Autocad met the architects need to speed up repetitive
tasks and manage multiple drawing layers, by in effect, digitalizing the drawing board.
The next im portant step forward occurred in 1987, with the introduction of Pro/ENGINEER® software.
developed by Samuel Geisberg for mechanical system design. The program allowed users to
associate tridim ensional param etric components which were controlled by user input constraints.
For example, it was possible to create a link between a rivet and the relative hole. The user changing
the rivet input size implied a propagation of m odifiers which updated the tridim ensional model as
Pro/ENGINEER reduced the cost of making design changes, and overcame the rigid constraints of
The most profound progress has happened from the late 1980's to present day. Academic research
and avant-garde practices - trying to escape simple editing limitations of software applications -
explored new ways to manipulate software "from the inside" aiming to find unexplored solutions
and form s through programming. Many designers soon realized that more sofisticated programs
could manage com plexity beyond hum an capabilities by structuring routines and procedures.
This type of modeling relies on programming languages which express instructions in a form that
can be executed by the com puter through a step-by-step procedure: the algorithm.
Algorithm ic m odeling
What is an algorithm? An algorithm^ is a procedure used to return a solution to a question - or to
perform a particular task - through a finite list of basic and well-defined instructions. Algorithms
follow the human aptitude to split a problem into a set of simple steps that can be easily computed,
and although they are strongly associated with the computer, algorithms could be defined
independently from programming languages. Forexam ple, a recipe can be considered as something
sim ilar to an algorithm. We can set a procedure for cooking a chocolate cake, based on a simple list
of instructions:
0. Mix ingredients;
1. Spread in Pan;
4. Cool.
Nevertheless, such a procedure cannot be properly considered an algorithm since the instructions
NOTE 2
The term "Algorithm" is named after the 9th century Persian m athem atician Al-Khwarizmi.
are far from being well-defined and contain ambiguities: "mix ingredients" but which ingredients?
How long should the cake cook? This basic exam ple points out some im portant properties of
algorithms:
Algorithms depend on entered instructions. The result will be incorrect if the algorithm
is not properly defined. Put another way, if steps in the cake are inverted or skipped, the
Input can be different for type and quantity. The step {0 } requires ingredients, the step {2}
requires quantitative information such as baking tem perature and time. Moreover, each
input has a precondition, e.g. a requirem ent which must be met, such as a range of baking
input 1
input n
FIGURE 0.10
Schematic representation of an algorithm .
• An algorithm can produce error messages and warnings within the specific editor.
Input is specific. If preconditions are not met, e.g. num bers are imputted instead of text,
Although algorithm s are often studied abstractly they harness the potential of the com puter
which has the capacity to perform tasks according to a set of instructions. When algorithmic
calculations are executed by a com puter, a specific ed ito r is used to type instructions. Editors
can be sta n d alo ne applications or em bedded in a softw are application. For exam ple, standalone
editors include C#, Python etc. and em bedded editors are script editors provided by programs
such as Rhinoceros and Autocad that allow users to w rite instructions to autom ate tasks.
Algorithms consist of different classes, an algorithm class which leads to a number is called a
computation procedure, while an algorithm that generates ayes or no is called a decision procedure.
Algorithm s can also lead to geom etries. For instance, if an integrated editor is used within CAD or
another modeling software, a 3D geometry is created by m anipulating the standard set of primitives
provided by the software or procedurally defined by a sequence of instructions. For instance, a line
can be defined by two points, a start and an end; points in turn can be defined by their coordinates
{x,y,z}. For example, a vase model can be defined as a revolution of a profile curve around an axis,
Objects are no longer manipulated with a mouse, instead they are defined by procedures expressed
Such an approach - usually referred to as scripting - is completely new for designers and transform s
• the algorithm;
(El
FIGURE 0.11
The algorithmic modeling based on scripting consists of two main "windows": the editor and the 3D modeling
environm ent.
The final output is not ju s t a "digital sign" but it can be considered as an in teractive digital model
responding to variatio n s in the input by m anipulating the e n tire system . For example, if the points
coordinates are changed from {x,y,z} to { x \ y ’,z'} of the mentioned line, the algorithm m aintains the
established relationship that the line is defined by the two points not their location. Algorithms
establish associative relations between different entities such as num bers, geometric primitives and
data. For example, complex geometries can be defined by an unambiguous sequence of instructions
which drive interrelations. Algorithm ic design enables u sers to design a process rath e r than ju st
a single object.
RhinoScript Ed ito r
<Search>
g] Pg ^ 7Q _R ecursiveRantG a’vef3t<y.fvti* x x |/ Q ]
strObject = Rhino.GecObjecc ("give me an object to copy aroiind")
If IsNull(StrObject) Then Exit Sub
rhino.Print strObject
FIGURE 0.12
The RhinoScript editor.
Bruce Mau in his 1998 Incomplete Manifesto fo r Growth, states that a "process is more important
than outcome. When the outcome drives the process we will only ever go to where we've already been.
If process drives outcome we may not know where we're going, but we will l<now we want to be there".
Mau's quote sum m arizes the core concept of algorithmic design; the potential to generate and
control design-complexity beyond human capabilities. A set of well defined associative rules and
constraints can lead to unprecedented shapes or unpredictable results that are coherent with the
param eters established. Algorithmic design allows designers to find new solutions and step beyond
Algorithms can define every type of geometry. The method to construct geometries procedurally
is based on writing a rough draft and translate it into a programming language. For exam ple, the
1. Subdivide the four circles into N parts; we get N points for each circle;
for each circle (r'), (r^) and (r^), and the method of connecting the
lines. These refinem ents are made when transitioning from the
accessible to users with little to no programming skills. In effect, associative rules and dependencies
Sutherland's Sketchpad represented all the constraints defined during the drawing process. Through
a special diagram - a//o w c/io rt-th e user could not only visualize the tree of dependencies but could
FIGURE 0.14
The Sketchpad (1963) provided a graphic visualization of design-constraints through a diagram caWed flow chart.
Many softw are have enabled users to interact with digital objects either by a direct manipulation
and via node-based diagram s. Node based softw are system s such as G enerative Components® by
Bentley System s and Grasshopper® by Robert McNeel & A ssociates, are two softw ares that enable
users to build up com plex g eom etries by associating param etric prim itives. Visual scripting makes
possible a process w ere a line can be built by connecting two point objects, a square by connecting
"In principle any conceivable network o f relations between a given set o f element attributes can be
constructed".^
NOTE 3
P. Schumacher, The Autopoiesis o f Architecture, A New Framework fo r Architecture, Cohn Wiley & Sons, 2010), vol. I, p. 353.
^ —^ a r t Point
A B
Line ................
End Point
J IL 1
-----
Similar to scripting, visual scripting Is based on two main working environm ents:
• the node diagram, also called param etric diagram or visual algorithm;
• the output of the param etric diagram constituted by param etric 3D or 2D geometry.
Node diagrams can be used to create geometries.For exam ple, the following figure is the visual
circle
divide
Q - L iiu t; I
divide
line
circle
divide
circle 1
divide
o
The diagram consists of nodes and connections. Square nodes are the main functions: draw a circle,
divide a circle, create a line. The circular nodes are the param eters: the radius of each circle, and the
num ber of subdivisions. The diagram's output is the sam e geom etry generated through the step-by-
The advantage of a node diagram resides in the intuitive logic which allows you to quickly interact
with param eters. For exam ple, if the N param eter is modified, more lines are generated.
rirria
(.IILIC
line
divide
0 ^
divide f x ,
€ K line
circle
divide
C K line
circle
divide
0^
The geometi^ can be fu rth er modified by manipulating one of the (R) param eters, the radius of (R3)
is increased in figure.
The geometry can be once again be modified by manipulating (R1, R2, R3, R4) as shown in figure.
circle
line
divide
C K
rirrlp
LiiUc
divide
€ K line
circle
C K
divide
divide
N line
€ K
The param etric diagram has the potential to create associative models that explore multiple
"While the attributes o f the graphic/digital primitives [...] are fuiiy determined and fixed at any time, within
the parametric diagram they remain variable. This variability might be constrained within a defined range
on the basis o f associative functions that imbue the diagramnnatic process with an in-built inteiiigence"^.
The param etric diagram can be considered a sm art medium for arcliitecture and design, since
"Form-maldng, loosely defined, is a process o f inspiration and refinement (form precedes analysis o f
programmatic influences and design constraints) versus form-finding as (loosely) a process o f discovery
and editing (form emerges from analysis). Extreme form-making is not architecture but sculpture [...].
Extreme form-finding also is not architecture but applied engineering, where form exclusively determined
by function".^
FIGURE 0.15
Conceptual representation of the form -m aking approach.
FIGURE 0.16
Conceptual representation of the form -finding approach.
NOTE 4
P. Schumacher, The Autopoiesis ofArchiteaure, A New Fromeworit fo r Architecture (John Wiley & Sons, 2010), vol. I, p. 352.
N O TES
J. Laiserin, 2008, Digital Environm er]tsfor Early Design: Form-Making versus Form-Finding. First International Conferen
ce on Critical Digital: What M atters(s)? -18-19 April 2008, Harvard U niversity Graduate School of Design, Cambridge
(USA), pp. 235-242.
A rchitects do not make buildings, they make
diagrams of buildings
/\
.algorithm ic modeling
with Grasshoooer®
The aim of this publication is to provide techniques and strategieswhich enable designers to master visual
scripting utilizing Grasshopper®, one of the most popular and advanced algorithmic modeling tool.
This book is intended to guide readers through the essential concepts of algorithmic modeling both
Grasshopper, a plug-in for Rhinoceros®, is a node-based editor developed by David Rutten*" at Robert
McNeel & Associates. Created in 2007 for Rhino 4.0 - originally named as Explicit History - was re
branded as Grasshopper in 2008, Within a few years the plug-in gained a vast comm unity of users
and developers, including students, academ ics, and professionals. G rasshopper is available as a free
NOTE 6
David Rutten is a graduate of TU Delft Architecture and Urbanism faculties. He works for Robert McNeel &
Associates since 2006 on several program s, the m ost im portant of which is the G rasshopper visual programming
environment for Rhinoceros 3D. See A. Tedeschi, 2010, Interview with David Rutten. M ixExperience magazine,
'Tools" issue.
http://content.yudu.com /Library/A1qies/m ixexperiencetoolsnu/resources/index.htm .
Grasshopper's is an unrivaled platform for formal exploration, that benefits from:
Grasshopper is not just a piece of software, it includes a dynamic network of users that
share works, knowledge, ask questions, and discuss challenging problems at www.
grasshopper3d.com.
• Constant updating
G rasshopper benefits from constant updating and im provem ents. Moreover, bug fixing
• Ecosystem
A wide set of plug-ins developed for G rasshopper are available from independent
program m ers. Loosely speaking, G rasshopper benefits from a plug-in ecosystem that
extends the software's potentials. For exam ple plug-ins are available for dynamic
• Software interaction
G rasshopper has the potential to interact with other software; not only for file-compatibility
and interchange, but for real-time interaction between the algorithmic modeling
environm ent and external software (Excel®, Photoshop®, Revit®, Ecotect® etc.).
Hardware interaction
This book will cover visual algorithmic modeling using Grasshopper, from the basic concept to more
advanced strategies. The main ambition is to provide the computational skills - based on a solid
understanding of m athem atics, logics and geometry - required to face the new design challenges.
1.1 Prereq uisites and installation
Grasshopper is not a standalone application, it operates as a plug-in for Rhinoceros. The installation
file can be downloaded from the website www.grasshopper3d.com {download section). Presently,
Grasshopper exclusively runs on Windows OS (G rasshopper Is not currently compatible with Mac
OS). Grasshopper is offered as a free download - without an expiration date - and is required to
run on a licensed copy of Rhinoceros 5.0 or higher. Future releases of Rhinoceros might embed
Once installed, G rasshopper can be opened by grasshopper in the Rhino command line.
3D-modeling environm ent (B). Within the editor (A), users can build visual algorithms (C) by properly
connectinggraphical objects, called components. Components are actually the nodes of a parametric
diagram that defines and controls a 3D geometry (D) which is displayed in the Rhinoceros window
FIGURE 1.1
The image show s the Rhino modeling environm ent (B) and the Grasshopper editor (A) which is a window that
works in parallel with Rhinoceros. D is a geom etry "generated" by the visual algorithm (C).
The Grasshopper window is split into four sections, as shown in the following image.
Grss^«pper-unn*med
Fte Edi Wow Otmin ScUMn Hdp
® l= Paiarm Ma(f» Saa Vector Cunt Surfiee M«^ lnHrs«cl Tf»n»to«m Tt«*8 W> MtllnxKte K»nj«roo UjosABm Brtni
B B B B B HI « □
(DC
Following Windows OS typical bar layout, the menu bar perform s basic operations (open,
save, etc). On the far right, users can find the//Ve browser button which can be used to
switch between different loaded files; G rasshopper allows multiple files to be loaded
sim ultaneously. By default a new file is displayed as unnamed until it is saved under a
Components do not work as "buttons". To enable them , users m ust drag the relative icons
onto the working area (4). Every component becomes a node of a visual algorithm.
Grasshopper algorithms are node diagrams made of properly connected components. Components
represent primitives (e.g. points, curves, surfaces), geometric entities (e.g. vectors), geometric
operations (e.g. extrusion, rotation, revolution) and other categories. They are grouped in several
tabs [Params, Maths, Sets, etc.) each organized in p a n e ls. For example, the Params tab holds four
panels: Geometry, Primitive, Input and Util. Each panel has a variable number of components. This
book will use the notation component name (Tab > Panel) to indicate the location of a specific
component. Put another way. Line (Param s > Geometry) m eans that Line component is found within
Params | Maths Sets Vector Curve Surface Mesh Intersect Transform Display
B S it u S
m A
Params Maths Sets | Vector | Curve Surface Mesh Intersect Transform Display
u t n
o-^ 1 U o 0 Q XYZ
XV
n \ zia y XYZ o-^
Params Maths Sets Vector j Curve | Surface Mesh Intersect Transform Display
V it / m o x d : A X
K Cc r 0 / o y <) ? V (f
D l M ffm
FIGURE 1.2
The image shows three different com ponent tabs - Param s, Vector and Curve - with relative panels.
By default the tabs show a selection of components available within each panel. Each panel can be
expanded to display the entire set of components by clicking on the black stripe of a specific panel: a
dropdown menu will appear displaying a detailed list of components. Alternatively, users can enable
the Obscure Components mode in the menu bar (View > Obscure Components) to display the entire
set of components.
Rie EdI O M ay Solution Heip
o # m m m m B
A ____ I
Vector
O Pon
<3-
^ Q r ie ^ C icularArc
Cuni« ^ Line
^ Plane o Rectangle
G Box © Brep
Mesh M e ^ Face
^ Rdd Geometry
^ Grou) Transfomi
The canvas is the "blackboard" w here users can build algorithms. Users can place a component on
•By double-clicking any free area of the canvas and typing the component's name in the pop
up search box referred to as the c a n v a s s e a rch box. As the first letters of the components
name are typed in canvas search box, G rasshopper suggests a list of components that
Grasshopper - unnamed
Re BS Ospiay Solutiorx He^
f^ntns Maths Sets ' Vector | Curve Siaface U«sh Ir^ersect Transferm
<P9 ^ P tD
u V ’■f \ m
g g 195% O'
Enterasearchkeyvmrd.
FIGURE 1.3
The image shows the canvas search box which allows you to find com ponents by name.
FIGURE 1.4
As you enter the first letters, Grasshopper suggests a list of com ponents that match your search.
The canvas toolbar - positioned above the working area - provides the open/save files buttons as
list of well defined instructions. G rasshopper provides users with a friendly interface of components
components operate.
components expect a defined set of input data which is processed to generate an output.
For example, the point-component requires a set of num eric {x,y,z} coordinates as input
► d a ta
2. Input-components
Input-components provide data (num bers, colours, etc) which can be modified by the
user. They are hosted within the Input panel of the Params tab. Input-components do not
► d a ta
These components can be imagined as containers for data. They can collect data in several
ways, and can be used as input for other components. Container components are hosted
within the Geometry and Primitive panels of the Params tab and they are characterized by
a black-hexagonal icon.
^ d a ta ]>
A standard component placed on the canvas is represented by a node that requires a defined
set of data in order to perform a tasl< and generate an output. IVIost components consist of three
main sections: input, nam e, and output. The following image shows the component Construct Point
{Vector > Point) which generates a point in the Rhinoceros 3D environm ent according to its three
coordinates:
1 1 1 1
c
c
X
Y
H )
<
C
X
Y Pt )
<
c Y ^ J lP t )
c Z
1
1
C Z
n
€
• The input section contains a variable num ber of input slots that are specific to each
component. For exam ple, the Construct Point component requires {x,y,z} coordinates as
• The nam e section shows an abbreviation of the components full name (e.g. Pt for Point). A
component can be renamed using the first line of the context menu, which appears by right-
clicking on the com ponents name. Alternatively, Grasshopper can display an icon instead of
a name if users activate the Draw Icons mode on the menu bar (Display > Draw Icons).
( X
w t__ 1^ ..... > 1 ( Y vo/ Pt )
2 Ena
>bl»«
<d < Z
■ 1 Rak*..
HeJp...
• The output section shows a variable num ber of outputs that are specific to each
component. For exam ple, the ConstrucfPo/nf component has one output slot that generates
data in the form of a correctly form atted point defined by {x,y,z} coordinates.
If the Construct Point com ponent is placed onto the canvas a point appears im mediately in the origin
of Rhino's space. This happens because Construct Point, like many components, contains default
data. In particular. Construct Point contains, by default, the following coordinates as input: x=0, y=0,
z=0. The objects (points, lines, surfaces, etc.) generated by Grassliopper are displayed by
To change the position of the point, users have to input values for the {x,y,z} coordinates. In other
In general, an algorithm is constituted by components which use all three strategies. The next
Data can be set locally by the context pop-up menu which appears by right-clicking on the specific
input slot. For Example, to change the X input, right-click on the X and select the Set Number option.
Anew value (e.g. X=3.0) can be entered and confirm ed by clicking on Commit Changes. As a result, the
point moves three Rhino units in the x-direction, creating a point with coordinates {3.0, 0.0, 0.0}.
^ X
Wire Display ►
^ Principal
^ Reverse
® Flatten
® Graft
I® Simplify
!@ Expression >
1 Set Number ►|
h 1
1------------------------------------------ 1
! Set Multiple Numbers > ^ Commit changes
Manage Number collection ^ Cancel changes
Clear values
Internalise data
Extract parameter
If we repeat the procedure for Y and Z by entering, for example, Y=3.0 and Z=2.0, the Construct Point
component will generate a point with the coordinates {3.0, 3.0, 2.0}.
1.3.2 Wired connection
To build more complex algorithms wired connections are used to set data between components.
Wires conduct data from the output of a component to the input of another component.
The Construct Point component can receive data from other components that output num eric data.
For instance, the input-component Number Slider {Param s > Input) generates a domain of numeric
data. By adjusting the central grip, a num ber can be output within the domain and can be used as
To transfer data to another component, press and hold the left mouse button on the output slot
of the num ber slider. A connecting wire will be extracted which can be used to transfer data to
the Construct Point component by dragging the end of the wire to the specified input slot. Once
a connection is established, the Number Slider will be renamed based upon the input the wire is
connected to.
30 _ _
30 |)
02
rH cooldtiat^ 30
[ T c o ld h a t^ 30 |>
20
FIGURE 1.6
A Number Slider is autom atically renam ed according to the input nam e.
By moving the sliders grip, input values are updated changing the points position in real-time. The
change in data input can be visualized in Rhino's 3D environm ent. Once connected to a Construct
Point component, a Number Slider can be used to param etrically change the points position.
r
V
i.'
P-
Slider properties can be changed through the context menu accessible by double-clicking the slider
name (not on the grip). Within the context menu the Numeric Domain or the Min/Max value of the
slider as well as numerical Rounding: Floating Point Numbers (R), Integer Numbers (N), Even Numbers
(E) or Odd Numbers (O), can be specified. If the Number Slider rounding is set to R, the am ount of
Sliden
P r o p e r t ie s ________________
Name
B^vesson
aipajte [Shye&Te^
9id er accurac^r
Rounding R N E O
Digits [T]
Numeric dom ar
mn + 0
+ 10
Range 10
Nuneric value
Setting a Number Slider \s a procedure that slows down the construction of an algorithm: users have
to change the Numeric Domain (min and max) and define the numerical set.
A quicker and easier way to insert a slider with a specific value is to double click on a free area of the
canvas to recall the canvas search box. If a num ber (e.g. 5) is typed into the search box Grasshopper
suggests the Number Slider. If the slider is added to the canvas the component will be set on the
typed num ber (i.e. 5) with a defined default domain (i.e. 0-10).
Number aider
m k s i id e r j 50
The domain and a value for a slider can specified by typing 0<5<50 in the canvas search box. In this
case, the domain will be set between 0 and 50 and the slider will be set to a value of 5.
Numb«^ Slider
❖ 5
0<5<50|
If 0.5 is typed in the canvas search box a slider set to Floating Point Numbers (R) will appear on the
canvas with one digit after the zero, a default domain between 0 and 1 and a value of 0.5.
If 0-5 is typed in the canvas search box, a Slider set to -5 will appear on the canvas with a default
domain between 0 and -10. T y p i n g i n the canvas search box recalls the component; Subtraction.
Number Slider
S lider -5.000 O
0-5
Wired connections are used to build algorithmic sequences, they transfer data between output
and input of the components. For example, a line can be generated by connecting two points. In this
case a specific component is used: Line (Curve > Primitive). If the sliders values are changed, the points
{x,y,z} positions are recalculated and the magnitude and direction of the line updates associatively.
V o*
H I rt
zK
❖ 0
FIGURE 1.7
A line generated as a connection between two points (renam ed as Point A and Point B),
The /./ne-output can be defined as a param etric line, meaning the line is tied associatively to the six
slider parameters of the points, generating a set of lines defined by the possible combinations of the
The algorithm above generates three kinds of output: two point-geometries and one line-geometry.
Established connections can be disconnected by right-clicking on the specific input slot: the context
pop-up menu will appear, and components can be disconnected by selecting the d/sconnecf submenu
@ Flatten
m Graft
(B Simfrfify
m Bcpression ►
Algorithms can produce error messages and warnings. Grasshopper uses the background color of
components to indicate their status and report possible errors. Components display status based
Acom ponent which is properly connected displays a gray background. A working algorithm
to a lacl< of data. For example, when a Line component is placed on the canvas it is in
warning status: displayed as orange. This is because the component requires two points (A
and B), in order to create a line. If points A and B are connected to input A and B, the Line
Q Ln(Ltne)
This olflectconteins two warnings.
Q ic k on the balloon to see dl messages
activate this function through Display > Canvas Widgets > Message Baiioons). Hovering the
mouse over the balloon activates a message-box which suggests the possible causes of
the warning.
An algorithm with "orange components" may still work in some cases, but in general, a lack
An error status occurs if users do not fulfill the input requirem ents. In the comparison
between algorithms and recipes it was noted that some steps require "ingredients", others
"temperatures", still others require "times". Similarly, each component's input expects a
defined type of data. For example, if users connect the A-input of the Line component
using a num eric value instead of a described point {x,y,z}, the Line component turns red
I'start Point ]| 50
Ln(Line)
h a m m m fi 03 Y a. Pt
h - <
1Z coordinate j 02 Z
A component in error status does not generate any result. If we connect a component
with a "red component" no data will be created or transferred between them . For this
reason, a component in error status affects the entire set of components that are directly
or indirectly connected with the component in error status. An error status can be fixed
Data can also be set from existing Rhino geometry. For exam ple, a line can be created between
two points that exist in Rhino. Using the Line component users can right-click on the A-input slot
and select the Set one Point option from the contextual menu. The Set one Point option allows users
to select a point from Rhino. When users click on Set one Point, Grasshopper's window minimizes,
Bake...
Principal
m Reverse
B Flatten
a Graft
B Simplify
B Expression ►
Once users set both A and B input points, the component turns gray and generates a line. Such a
method directly stores a Rhino's objects inside an input. If the points move in Rhino the line will be
associatively updated. To "empty" an input, right-click on the input slot to recall the contextual menu
and select Clear values. Alternatively, Rhino's geometry can be collected using specific container
components (see 1.3). The Geometry and Primitive panels of the Params tab hold a set of black-
hexagonal icons for com ponents th at store data. To set a point, select the component Point
(Param s > Geometry) and place it on the canvas, right-click on the component and select the Set one
O O Vector 1 —
9 Enabled
0 Circle QfcularAfc
For example, to create a line between two Rhino points: collect the points data with two Point
() pt )>— — < It
The container components do not perform any operations, tlie y ju st store data. These components
can be used to collect any type of geometry or object from Rhino. Each container component expects
a defined type of geometry. In order to collect curves, the Curve component would be selected.
(j C fv |)
The Geometry container is a versatile component which can be used to store any kind of geometry
(points, curves, solids etc.). To set a geom etry or multiple geometries right-click on the Geometry
component and select the Set or)e Geometry or Set Multiple Geometries option within the context
menu, respectively.
(j G eo j)
The container components also provide an input slot that allows components to store data collected
<1 "
< rx > ^
A
Grasshopper's geometry, displayed in red, overlaps the imported geometries that exist in Rhino. When
geometry is "set". Grasshopper establishes a continuous link with Rhino, meaning if geometry is deleted
in Rhino, the specific container component turns orange because it is no longer collecting data.
Container components allow data to be perm anently stored by right-clicking on the geometry
component and selecting the Internalise data option from the context menu. If this option is selected.
Grasshopper will import the geometries data, breaking the link with Rhino, meaning if the original
geometry is deleted the specific component will continue to store the data. For exam ple, if a point is
imported from Rhino using the Point component and internalised, the point can be deleted in Rhino
and still exist as stored data in Grasshopper. The points {x,y,z} location can be changed by selecting
the Point component and using Rhino's Gumball to change the point's position.
Pt
FIGURE 1.8
If you internalise a point in G rasshopper and then you click on the relative box-component, the Rhino's Gumball
appears on the point, so you can easily change its position.
1.4 Save and bake
1.4.1 Save
Algorithms can be saved using the Save Document or Save Document As options available in the File
menu of the Menu Bar. The default extension for Grasshopper's files is .gh.
The .gh files are not executable. Therefore, to open a previously saved algorithm, users have to start
The .gh file extension is formatted in binary, meaning it stores data as pure bytes. Grasshopper
files can also be saved as .ghx. The .ghx file extension is written in XML format, meaning it can be
modified using text-editors. For this reason, the .ghx files are bigger than .gh files.
1.4.2 Bake
In the previous sections, two parametric points was generated and associated to a line creating
a basic algorithm. The algorithm's result was displayed as red preview geom etries in the Rhino
environment. Preview geometries cannot be edited, meaning users cannot select them, save them
as a Rhino file, render them , etc. Moreover, if users close the Grasshopper file these objects will
disappear. The reason for this is that Grasshopper generates not ju st one geometry but an entire
set of geometries that can be varied by changing the input param eters. To edit one of the possible
configurations generated by an algorithm, users have to "bal<e" the Grasshopper preview into the
Rhino environment. Every component that generates a preview can be baked by right-clicking on
the component and selecting the bake option from the context menu. For example to bake the Line
component, right-click on it and select Bal<e.... Baking the component makes the line editable in
Rhino.
— <X K
m ►review
I t n iw n r j — — <y E pt yy Enabled
I 'r a — r iT ^ -- ( zK ^ Bake..,
Help...
The Bake Attribute window, which opens when Bake... is selected allows users to set several attributes,
such as: the target layer, the color of the baked geometry, and the possibility to group objects.
Attributes
Name
1 Layer 02
i Layer 03
Lay«-
Colour m By Layer
Decorations | None
Display Oefaiit -
Mode Nomial -
Group □ Yes. please
UserTejd
1 OK 11 1
After baking, the geometry can be changed by manipulating the input parameters within Grasshopper.
Grasshopper geometry is parametric and the number of solutions are only limited by the input
parameters combinations. To undo a bake operation, simply delete the geometry in Rhino or type undo
in the Rhino command line. Grasshopper cannot bake geometry if any command is running on Rhino.
1.5 Display and control
Grasshopper uses colors and graphics to report component states and display-modes.
Working components generate a result that are, by default, represented by a red preview color in Rhino.
Color and quality of the preview can be set through the Canvas Toolbar. In particular, the preview color
can be set by the Document Preview Setting option, while the quality of visualization can be modified
through the Preview Mesh Quality option. Both options are contained in the canvas toolbar.
O -
Qsable Meshing
Document Preview Settings
Low Quality
Q High Quality
Document QuaKy
Q CustwnOu^
Bump Preview
H H H ia m
The preview of a geom etry can be disabled by right-clicking on the name of the component and
selecting the preview option from the context menu. When you disable the preview the component
Pi
& Preview
D Enabled
Bake...
Help...
Enabling/disabling preview is crucial when algoritlnms become com plex. Algorithms can be imagined
as a construction history, it is unnecessary to visualize all the steps that lead to the final result.
Unlike the Preview option, which does not affect the functioning of a component, when a component
is disable it will no longer operate. A disabled component can be distinguished by the faded gray
Disabling a component disables all parts of the algorithm that rely on the disabled node for input.
V : I!'*-
Y a Pt
i z
Preview
[B l Enabled
Bake...
Help...
Many productivity tools so fa r discussed are included in the Radial M enu which can be opened
by clicking the spacebar, including; navigation, preferences, group, cluster, preview/hide, enable/
disable, bake, zoom, disable solver, recompute, and find. For exam ple, to disable the preview of two
or more components: select the components, press the spacebar and click on the "masked face" to
disable the preview. Other tools of the Radial Menu follow a sim ilar logic.
1.5.3 Wire display
If the Draw Fancy Wires mode is activated {Display menu > Draw Fancy Wires), Grasshopper
differentiates types of connecting w ires according to their type of data structure. In particular:
• Orange connector
Geo
i no data
Just one datum (one number, one geometry, etc) is being transmitted between components.
Two or more data items are being transm itted between components.
<j G eo )>=
two or more data
Grasshopper allows users to set "w ireless" connections, making a w ire invisible unless one of the
connected components is selected. This option can be activated within the context menu of every
( § Hidden
^ Principal
Reveree
@ Flatten
® Graft
® S ir r * p %
M a n a ge Geometry coltection
Clear values
Internalise data
Extract parameter
^ Help...
.5 G ra ssh o p p e r flow
It is important to point out that w ires can only connect the output of a generic component (A) with the
input of a component (B) that doesn't precede (A) in the algorithmic sequence, in other words, the
data stream can be imagined as a fluid th at flows through the com ponents from left to right.
Consequently, is not possible to create a loop in Grasshopper, except using special components
The Grasshopper logic sequence can be imagined as a co n stru ctio n h istory: G rasshopper stores
the output of each instruction. To display the final output of an algorithm all nodes except last
component m ust be un-previewed. If users do not hide components the algorithm will generate
d r )
o O
In the following image all the components are turned off except the last component, allowing the
final output of the algorithm to be visualized without overlap the previous steps.
1 H
1 H
In the following image all the components are turned off except an interm ediate step.
4
)>-<
H
1.7 Basic concepts and operations
This section is a preview of topics that will be discussed, in depth, in following chapters. Here we
will focus on components that find specific points on objects or perform basic operations such as
The drawing accuracy of CAD software relies on Object Snaps or Osnap controls. The Object Snap
tools allows users to select strategic locations to connect objects. For exam ple, a line has three main
points that can be snapped to: a start point, a mid point, and an end point. Grasshopper does not
function under the CAD snap logic, instead, it relies on defined algorithmic logic to create the same
functionality.
Specific points on a curve can be found using the component Point on Curve (Curve > Analysis). The
Point on Curve slider defines a point on a curve by "reparam eterizing" a curve's length as a unit of
1. Correspondingly, the Point on Curve component set to a value of 0 will define a point at the start
point and value of 1 the end point. By default the component is set to 0.5, the mid point. A specific
numeric value can be chosen by right-clicking on the component to open the context menu and
selecting the desired input value (start, quarter, third, mid, two thirds, three quarters, end). Arbitrary
points along a curve can be "snapped to" by adjusting the slider's grip between 0 and 1. The following
example shows how to create a line which connects a point C to the midpoint of a line between two
points A and B.
IY ccKinljiatt I 6»
cooHlinale~~j » l"
jYcooniinate j 50
6^
The component End Points (Curve > Analysis) can be used to quickly exctract the start point (S-output)
and end point (E-output) of a given curve. The following example demonstrates how the End Points
component can be used to access the end points of a curve set in Rhino (the curve could alternatively
be described in Grasshopper), then use the End Points component output to generate two lines
between the start and end points and a third defined point.
|'Xcoordinate"j 04
(
jifc M ltfn a te j 50
<[ Crv k
|> i.
P 1' c QH '
e >“ ......... — <
i
End Points
The com ponent/Ireo (Surface > Analysis) can be used to extract the geometric centroid of a planar
closed curve. The component also calculates the area (A-output) of the input curve. The following
example dem onstrates how the Area component can be used to access the centroids of two closed
three-dimensional geometry. The Volume component output calculates volume (V-output) and centroid
(C-output). Data output, such as area and volume for the Volume component, can be displayed using the
component Pone/(Params > Input). The following example calculates the volume of a Rhino set geometry
and displays the result as a single output in a panel. If multiple geometries were set, the panels would
calculate the volume of each object, and display the results as specific items in the panel.
The component Merge (Sets > Tree) allows two or more data flows to converge in a single list. With
reference to the previous exercise, the following example shows how to use ju st one Line component,
instead of two, by collecting the start point and end point by the M erge component.
I T coordinate '— - - 5 ❖
I'l'coordinate 1O
Wires containing more than one item are displayed as a thickened line. For instance, after the merging
operation the wire contains more than one item and is displayed as a thicker line (see 1.5.3).
When the Merge component is placed on the canvas, it displays two Inputs (D1 and D2). Once the 02-
input is receiving data (i.e. has a wired connected). Merge autom atically adds a D3-input. The Merge
component m aintains a record of the connection-order via the progressive index of the D-input.
Additional D-inputs can be manually added by using the Zoom able U ser In terfa ce. The interface
(available on some components) adds an input by clicking on the "+" buttons which are visible after
D3
m .
The component Divide Curve (Curve > Division), divides an open or closed curve into equal arc length
segments. More specifically, given a curve set from Rhino (C-input) and an integer for the num ber of
subdivision (N-input), N-^1 points (P-output) will be generated in case of an open curve and N points
List (Display > Vector). Display components do not have an output section as they are used for
visualization. The component Point List allows users to set the text-size by the S-input.
►5
1.7.4 Moving an object / vectors
operations are blindly performed. For example, when vertically moving an object, the movement
is performed according to a specific vector. Vectors are a geometric entities defined by direction,
The component Move (Transform > Euclidian), moves geometries according to a specified vector.
Vectors can be defined by several components (Vector > Vector). For instance, vectors can be defined
by three component parts using the component VectorXYZ (Vector > Vector) or by specifying a default
unit vector according to an axis: UnitX, Unit Y or Unit Z {Vector > Vector). The following exam ple uses
the Move component to translate an input geometry (G) along a vector (T). The vector is defined
through a UnitX component which, by default, is a unit vector w hose direction and sense is parallel
to x-axis and length equal to 1. In order to am plify the vector (and consequently, the movement) it
is enough to connect a Number Slider to the F-input of UnitX. According to the construction history
(see 1.6) Grasshopper displays the original and the translated geometry. In order to display just the
I
<r Geo j>"
Fartor i 02 ])—
By default vectors are not previewed, they can be displayed using a specific visualization component:
Vector Display (Display > Vector). Vector Display requires a start point (A) and the vector to display (V).
The default red-preview of Grasshopper geometries can be modified through the Document Preview
Settings. Users can alternatively customize the preview of single components using Custom
Preview (Display > Preview). Custom Preview relies on the component Colour Swatch (Params > Input).
The color and transparency level can be set by left-clicking on the node to recall a context menu.
I^Swat*
The world's first electronic digital com puter, the Electro
Digital modeling has traditionally been based on virtual manipulation, by the pseudo physical
presence of the mouse and keyboard in the digital environm ent. Algorithmic modeling, conversely,
is based on logic and is void of "physical" m anipulation. Algorithms rely on the ability to establish
conceptual associations between geom etry and m athem atics. In other words, data is manipulated
An algorithm can be imagined as a network of data stream s, and in order to selectively operate on
the network, is necessary to filter, divert and modify data to virtually manipulate geometry. Within
this context mathematics and logic are the mouse and keyboard.
2.1 Filters
One of the consequence of the lack of "physical" interaction in Grasshopper is the seeming difficulty
in selecting single items among a set of objects. In the following exam ple two curves drawn in Rhino
are imported into G rasshopper (by two Curve components renamed as Curve 01 and Curve 02) and
then divided into ten parts. As result, eleven points are generated on each curve.
E X
A simple operation such as connecting two arbitrary points among tlie set of 22 division points (see
following image), seem s impossible to get using the Line component, since we don't know yet the
In fact, connecting a line component to the P-output of the two Divide Curve components will instruct
Grasshopper to generate eleven lines connecting the entire set of corresponding points.
--
iOMTi 10 ❖
---
tSH rt 10^
In order to analyze the output of a component a Panel (Paranns > Input) can be connected to a
component's output to display the data structure. Panels are visualization tools that can be used to
Grasshopper structures data into paths i.e. hierarchical levels that contain L ists. Lists are further
subdivided into items which are indexed with a natural num ber (0 to i) to reference an item's position
within the list. For example, the data output of the Divide Curve components slot (P), is a triplet of
coordinates m athem atically representing an {x,y,z} point. Each point or datum is referenced by an
index, the first point in the list (-141.07, 228.4, 0.0) has an index of 0. Indices always start from 0 and
G rasshopper sorts data based on the way data is set. For example, objects set from Rhino will be
organized in Grasshopper in the sam e order they are selected from Rhino. In the case of Divide
Understanding lists enables users to easily select a specific datum within a list by referring to its
index by a filte r. G rasshopper has many components to filter and direct data.
(0;0)
For example, the component L is t Item (Sets > List) is a filter to select a specific index item. To select
an item, connect a list to select from into the L-input of List Item and an integer to the item slot (i).
The integer's value specifies the item that the filter selects.
A Line can be generated between the List Item outputs (I) by connecting w ires from the i-outputs to
the A and B inputs o f Line. The "Index" slider denotes the point selected from the list to be connected
List Item, by using the M erge component, or by pressing and holding the shift button on the keyboard
{0;0}
0 {-141.07, 228.4, 0.0}
1 {-107.82, 225.22, 0.0}
2 {-75.99, 214.96, 0.0}
3 {-43.85, 206.09, 0.0}
4 {-16.07, 221.68, 0.0)
5 {4.27e-7, 251.0, 0.0}
r 1 r___ _____ c a ---- -----------
N
B ; \
E
o i
6T-107.82, 225.22, 0.0}
10 O 1 (-16.07, 221.68, 0.0 }
K w
c
1 ❖ |)
In this way, two lines can be generated by specifying two index items from the P-output using the
10 1
l' w » 2 i 4^
iTTTS-
—
2^ 1
\n 3 s m m
30 t
The component List Item can be used to filter any data formatted in a list. For instance, the List Item
For example, using a Geometry container six circles are set from Rhino, using the Set Multiple
Geometries option from the context menu. G rasshopper sorts the circles according to their position
on the x-axis. In order to select and extrude the fourth circle, the index item 3 needs to be specified
as the input of the List Item. The component Extrude (Surface > Freeform) is used to extrude the
circle according to a distance and direction (D) specified by a vector. In this case the component
Unit Z (Vector > Vector) specifies a vector in the z-direction with a magnitude of 1. Using scalar
o
o
c
{Of
0 Referenced Circular Curve
1 Referenced Circular Curve
2 Referenced Circular Curve
3 Referenced Circular Curve
4 Referenced Circular Curve
5 Referenced Circular Curve
I Factor 200 0
The component Cull In d ex {Sets > Sequence) perform s the reverse faction of the List Item component:
{0;0>
0 {-141.07, 228.4, 0 .0 )
^lJ-107.82, 225.22 0 .0) IFILTER
2^{-75.99, 214.96, 0.0}
{-43.85, 206.09, 0. 01
{-16.07, 221.68, 0.0)
{4.27e-7, 251.0, 0 . 0 1
{27.16, 261.66, 0 .0 )
{55.9, 244.57, 0 . 0 )
8 {86.27, 230.79, 0.0)
9 (119.41, 226.77, 0. 0}
10 {152.68, 229.98, 0. 0}
For instance, to cull index 1 from the list, a slider set to 1 is connected to the i-input of the Cull Index
component (see following image). As a result, if the initial list has N items the output o f Cull Index is
a new list which hosts N minus the num ber of culled items.
( 0;0)
0 ( - 1 4 1 . 0 7 ^ 228 . 4 / 0 ’6]
1 ( - 1 0 7 . 8 2 , 225 . 2 2 , 0 . 0 )
2 ( - 7 5 . 9 9 , 2 1 4 . 96, 0 . 0 )
3 (-43.85, 206. 09, 0.0}
4 (-16.07, 221. 68, 0.0}
5 ( 4 . 2 7 e - 7 , 251 . 0 , 0. 0}
6 (27.16, 261.66, 0.0}
7 (55.9, 244.57 , 0 .0)
8 (86.27, :2 3 0 . 7 9 , 0 . 0 }
9 ( 119.41, 2 2 6 . 77, 0.0}
10 ( 1 5 2 . 6 8 , 2 2 9 . 98, 0.0}
I0;0;0}
(-141.07, 228. 4, oVoi
(-75.99, 214.96, 0.0)
(-43.85, 206.09, 0. 0}
(-16.07, 221.68, 0. 0}
(4.27e-7, 251.0, 0. 0}
t O |) <
(27.16, 261.66, 0.0}
(55.9, 244.57, 0. 0)
(86.27, 230.79, 0.0)
( 119.41, 226.77, 0.0}
(152.68, 229.98, 0.0}
In the following exam ple a set of lines is created between couples of corresponding points excluding
Repeating patterns of True and False values (Boolean values) can be used to select and exclude,
respectively, items from a list. The component Cull P a ttern (Sets > Sequence) is used in Grasshopper
{0;0}
'^T-141.07^, Y 2 8 . 4 , b.oT ------------- ► TRUE
1 f-107.82, 225.22, 0.0} 1 FALSE
2 {-75.99, 214.96, 0.0) ------------- ► TRUE
3 {-43.85, 206.09, 0.0) 1 FALSE
4 {-16.07, 221.68, 0.0} ------------- ► TRUE
5 {4.27e-7, 251.0, 0.0} >1 FALSE
6 {27.16, 261.66, 0.0) ------------- ► TRUE
7 {55.9, 244.57, 0.0} 1 FALSE
8 {86.27, 230.79, 0.0) ------------- ► TRUE
9 {119.41, 226.77, 0.0} 1 FALSE
10 { 1 5 2 . 6 8 , 229.98, 0.0) ------------- ► TRUE
The component Boolean Toggle (Param s > Input), can be used to define culling patterns. The
component output can be changed by left clicking the True/False portion of the button, to declare
either True or False respectively. Multiple Boolean Toggle components can be combined into a single
{0;0}
o' { - 1 4 1 . 0 7 , 228.4, 0.0)
1 {-107.82 , 225.22 , 0.0}
2 (-75.99, 214.96, 0.0}
3 (-43.85, 206.09, 0.0}
4 (-16.07, 221.68, 0.0}
5 {4.27e-7 , 251.0, 0.0}
6 {27.16, 261.66, 0.0}
7 {55.9, 244.57, 0 .0!
8 {86.27, 230.79, 0.0}
9 {119.41, 226.77, 0.0}
10 { 1 5 2 . 6 8 , 229.99, 0.0}
{0;0}
<t - f e i f v e O l ( t o )
0 228.'!, 0.0)
X {-75.99, 214.96, 0.0)
2 1-16.07, 221.68, 0.0}
3 127.16, 261.66, 0.0)
4 (86.27, 230.79, 0.0}
5 U52.68, 229.98, 0.0}
The declared True/False pattern is repeated for the length of the list, meaning if the pattern is (True,
False) and the list has a length of 4 (contains index num bers 0,1,2,3) the pattern will repeat resulting
in a culling pattern (True, False, True, False). Referring to the previous exam ple, lines can be drawn
4 Curve 01-<anr-j>
1^ Toggle_____________
Repeating models can be based on patterns greater than two declarations. As shown in the following
image the Cull Pattern is based on a repetition of three Boolean values (True, True, False).
<jr<un«01(Cfv) !>•——<
FIGURE 2.1
The image show s the result of Cull Pattern based on a repetition of three Boolean values: True, True, False.
The component S h ift L is t (Sets > List) shifts index num bers, upward or downward. The component's
S-input is the shifting offset, the L-input is the list to shift, and the W-input (Wrap) is a Boolean
Param eter which declares if the resulting shifting should be re-appended. Negative num bers shift
the list downward and positive num bers upward. For exam ple, If the shifting offset (S) is set to -3
and the wrap (W) is set to true, the list's original indexes are shifted 3 units tow ards the end of the
list and the list is re-appended, meaning the bottom three indexes 8, 9, and 10 become indexes 0,
1, and 2 respectively.
{0;01 {0;0;0)
0 {-141.07 , 228.4, 0.0} {86.27, 230.79, 0 . oT
1 (-107.82 , 225.22 » 0.0) {119.41, 226.77, 0.0)
2 (-75.99, 214.96, 0.0} (152.68, 229.98, 0.0}
3 (-43.85, 206.09, 0.0} {-141.07, 228.4, 0.0!
4 (-16.07, 221.68, 0.0} { - 1 0 7 . B2, 225.22, 0.0)
5 (4.27e-7 , 251.0, 0.0} {-75.99, 214.96, 0.0)
6 127.16, 261.66, 0.0 } 6 {-43.85, 206.09, 0,0)
7 (55.9, 244.57, 0 .0} 7 {-16.07, 221.68, 0.0)
8 (86.27, 230.79, 0.0 } 8 (4.2 7e-7, 251.0, 0.0}
9 (119.41, 226.77, 0.0} 9 {27.16, 261.66, O. OJ
10 ( 1 5 2 . 6 8 , 229.98. 0.0} 10 { 5 5 . 9 , 244.57, 0.0}
If the shifting offset is set to 3 and the w rap (W) is set to false, the original indexes are shifted 3 units
toward the beginning of the list, and the first three values are culled.
(0;0} {0;0;0}
0 i -141.07 , 228 . 4, O’ . O) '{-4 3 .8 5 , T 06. 09, 0 . 0T
1 {-107.82 , 225 . 22 , 0.0} {-16.07, 221.68, 0.0)
2 (-75.99, 2 1 4 . 96, 0.0} {4.27e-7, 251.0, 0.0)
3 (-43.85, 2 0 6 . 09, 0.0} {27.16, 261.66, 0.0)
4 (-16.07, 2 2 1 . 68, 0.0) {55.9, 244.57, 0.0)
5 (4.27e-7 , 25 1 . 0 , 0.0} {86.27, 230.79, 0.0)
6 (27.16, 261.66, O. Oi {119.41, 226.77, 0.0)
7 (55.9, 244.57 . 0 .0} {152.68, 229.98, 0.0)
8 (86.27, 230.79, 0.0}
9 {119.41, 2 2 6 . 77, 0.0}
10 ( 1 5 2 . 6 8 , 2 2 9 . 9 8. 0.0}
The following algorithm generates a set of lines connecting the generic point i on the first curve with the
point i+1 on the second curve. The resulting output list of the component will be shifted 1 value
towards the beginning of the list and the list will be re-appended with respect to the input list, meaning
disabled p review
2.1.5 Split List / List Length
The Split List component (Sets > List) splits a single input list at a specific index into two lists A and I
{0}
0 Referenced Circular Curve
I Referenced Circular Curve
2 Referenced Circular Curve
3 Referenced Circular Curve
4 Referenced Circular Curve
5 Referenced Circular Curve
6 Referenced Circular Curve
7 Referenced Circular Curve
8 Referenced Circular Curve
9 Referenced Circular Curve
10 Referenced Circular Curve
{0;0}
0 Referenced Circular Curve
1 Referenced Circular Curve
2 Referenced Circular Curve
iO:0}
The Component L is t Length (Sets > List) calculates how many items there are in a list. To display the
will be empty.
{0 ;0 )
0 11
,{0; 0)
0 0
The Split List component can be used to carry out different operations on a set of geometries. For
instance, after the set is split into two lists, list A is extruded a magnitude of 200 units in the UnitZ
direction and list B is extruded a magnitude of 100 units in the sam e direction.
2,1.6 Reverse List
Frequently is useful to reverse the order of a list of data. Referring to the previous example, we want
to create a line which connects the "last point" on the Curve 01 with the "first point" on the Curve 02.
In addition, such a rule m ust work even if changing the num ber of subdivisions through the N-input
of Divide Curve.
The "first point" can be easily found by a List Item component set to 0. The "last point", instead,
depends on the num ber of subdivisions (N). To find this latter, we can rely on two main strategies.
The first one consists in creating a "param etric link" using the sam e slider to "feed" the N-input and
{0;0)
’o' (-141,07 , ^28.4, 'o.o-
1 1-107.82 , 225.22 f 0.0)
2 (-75.99, 214.96, 0.0)
3 (-43.85, 206.09, 0.0)
4 (-16.07, 221.68, 0.0)
5 (4.27e-7 , 251.0, 0.0)
6 (27.16, 261.66, 0.0}
7 {55.9, 244.57, 0 .0)
8 (86.27, 230.79, 0.0)
9 {119.41, 226.77, 0.0)
10 (152.68, 229.98, 0.0)
In this way, even if changing the num ber of subdivisions, the List Item will always select the "last
a list (in this case the P-output list), meaning the index 10 is converted into 0, the index 9 into 1 etc.
Every input slot embeds the functionality to reverse input data by right-clicking the slot and choosing
Reverse from the contextual menu. Using Reverse List, the sam e slider set to 0 can feed the two List
Item components.
(0;0} (0;0}
2.2.1 Series
The component Series (Sets > Sequence) generates numerical sequences according to:
The Series component default settings are: S=0, N=1, C=10, resulting in the sequence:
(0, 1 ,2 ,3 , 4, 5, 6, 7, 8, 9).
{0;0}
0 0.0
I 1.0
2 2.0
3 3.0
4 4.0
N s
5 5.0
C
__ 6 6.0
7 7.0
8 8.0
9 9.0
For instance, by setting the param eters to; S=2, N=2 and C-6, a series of 6 nunnbers is generated
which starts from 2 and has a distance of 2 units between a num ber and its subsequent:
2, 4, 6, 8 ,1 0 ,1 2 .
The Series component can create infinite unique numerical sequences that are increasing or
{0;01
0 2 .0
>M M 1 4.0
2 6.0
"Step j ❖2 IH S )= (
3 8.0
[•C^Unrj 4 10.0
5 12.0
10;0}
EI ITIl
0 -5.0
-5 0 __J> — <
I -3.0
02 2 -1.0
(|
1>— <
j> -— 3 1.0
1C o u R 1 5O
4 3.0
{0;0}
00.0
1 Start^ O 0 )y- Mo( ; S' tA 1 -2.0
2 -4.0 .
[Stepll 0-2 }h— <N *U s
3 -6.0
Count ]| 0 4 ))- C
Series is often used along with transform ation components, such as Move, in order to get multiple
transform ations. The component Move (Transform > Euclidian) translates a geom etry (G) according
to a vector (T). The Series component describes a list of scalar values which can be multiplied by a unit
vector to define a translation vector (T) for the Move component. For exam ple, a Rhino defined cube
can be translated along the x-axis using the Move component in conjunction with Series component.
The Series component generates the num erical sequence (0, 2, 4, 6, 8) of scalar values which are
multiplied by a unit vector in the x direction resulting in the translation vectors (Ox, 2x, 4x, 6x, 8x).
The translation vectors are connected to the T-input of the Move component, yielding a series of
cubes translated One Dimensionally. The first translation vector is Ox, meaning the first translated
If you want to display ju st the translated cubes (output o f Move), you have to disable the preview of
Geometry as well as the preview of the initial object in Rhino {Hide Objects command).
The Move and Series components, used in combination, can create infinite unique vector sequences.
The sequences can start at any value, have any step size and count to any length.
For instance, if (S) is equal to 3, (N) is equal to 1.5 and (C) is equal to 5, the sequence (3.0, 4.5, 6.0,
7.5, 9.0) will result. If the sequence is multiplied by the Unit X vector the translation vectors (3.0x,
4.5x, 6.Ox, 7.5x, 9 .Ox) will be defined. Inputting the translation vectors into the T-input of the Move
component defines the One Dimension translation. The first translation vector Is 3.Ox, meaning the
first translated geometry will not overlap with the Rhino set geometry.
2.2.2 Data Matching
Usually a component receives two or more w ires and as many data stream s. When data enter Into a
component they are matched according to a default logic which m ust be understood In order to get
Starting from the previous algorithm we aim to get the following cube grid (based on a 5 x 5 grid).
m i
As first attempt we can modify the algorithm by adding a new Move component connected to a Series
in order to translate the five cubes (output by the first Move) according to the y-axis.
Nevertheless, the final output Is quite different from a cube grid: the boxes will create a diagonal
arrangement.
t
Such a result depends on a particular logic called "Data Matching" w liich, by default, matches - one
by one - corresponding items from different lists entering into the sam e component.
In the example, the second Move component m atches two flows, the first one transferring geometries
(G-input), the second one transferring vectors (T-input). According to this logic the Move component
moves the first geometry according to the first vector (0 length), the second geometry according to
In order to get the square grid. Grasshopper m ust move each cube according to all vectors.
• The Shortest List mode matches each item in the first list with the corresponding item
in the second list. If the lists are not the sam e length the shorter list length will shrink the
• The Longest List mode (default method) m atches each item in the first list with the
corresponding item in the second list. If the lists are not the sam e length the last point in
the shorter list will be connected to remaining points in the longer list.
• The Cross Reference mode m atches each item of the first list with all the items of the
second list.
A
O-
—o --0
K
V__ _
Shortest List Longest List Cross Reference
In order to modify tine matcfiing logic G rasshopper provides us of three specific components: Shortest
List, Longest List and Cross Reference all hosted within the List panel of the Sets tab.
The component Cross Reference can be used, in the example, to create a two-dimensional array i.e.
[ start ] O 0
D>^ T « X
t l B r q OQ
1Count
The component Cross Reference can also be used to create three-dim ensional arrays, by connecting a
z translation vector sequence and "cross referencing" the data with the second move component.
The algorithm uses the sam e three Number Sliders to feed the three Series components. In this way we
can change the distance between cubes (in all the three directions) by acting on the slider connected
to the N-input of the three Series (in our exam ple the initial cube has a side length equal to 1).
N=1
Another useful component is Repeat Data (Sets > Sequence) which extends a numeric sequence
to a specified length by repeating the input data. The component's D-input collects a defined set of
numbers, and the L-input defines the length of the output list. For exam ple, if the num bers (2,6,1)
are merged into a single list connected to the D-input o f Repeat Data, the resulting list is (2, 6 ,1 , 2, 6)
{0;0)
0 ' 2 . 0'
1 6.0
2 1.0
3 2.0
4 6.0
The output of the Repeat Data component can be used to define sequential geometry. To visualize
how Repeat Data can m anipulate geometry, a simple algorithm will be used to get the following
surface.
Two curves set from Rhino are divided using the Divide Curve connponent, and lines are connected
to corresponding points in the lists using the Line component. The lines are evaluated using Point on
Each midpoint is moved by a translation z-vector (visualized by the Vector Display component), using
I'Rdor 50
Then, the Divide Curve output (P) of Curve 01, the translated points, and the Divide Curve output
(P) of Curve 02, are connected into the A, B, C slots of the component Arc 3Pt (Curve > Primitive)
respectively.
The following image displays the final set of arcs. We turned off the preview of all the components
except/Arc 3Pt (you can also see the two curves drawn in Rhino).
Lastly, the A-output of the Arc 3Pt component is connected to the C-input of the component Loft
(Surface > Freeform) to generate a lofted surface, defined as a surface through a set of section
curves.
o
Bj
The 0-input of Loft is used to modify surface options. Options can be locally set or, in alternative,
modified by the L o ft O ptions component (Surface > Freeform) connected to the 0-input, As an
instance, when the num ber of section curves is not enough to create a "smooth" surface, the rebuild
option (Rbd-input) must be set. Loft Options also allows to close the loft, to adjust the seam s as well
as select the loft type, which is defined by an integer (0 = Normal, 1 = Loose, 2 = Tight, 3 = Straight, 4
= Developable, 5 = Uniform).
The algorithm is now complete. To modify the surface, the lofted arcs can be manipulated using
the Repeat Data component. Modifying an algorithm by changing the inputs is a common working
method in Grasshopper. For exam ple, if the Number Slider connected to the Unit Z vector component
is replaced with a list of repeated num bers (with the List Length set equal to the num ber of items of
the i/ne component) the lofted geom etry will be updated, and express the change tothez-translation
in its surface shape. The surface can be varied through infinite changes of the sequence input into
the Un/f/component.
I Data I j 03
{0;0;Q}
I Data 2)1 0 4.000
ol.b
1 4.0
2 3.0
3 4.0
4 3.0
5 4.0
6 3.0
7 4.0
8 3.0
9 4.0
10 3.0
11 4.0
12 3.0
FIGURE 2.2
Shapes informed by data,
The component Random (Sets > Sequence) generates a list of (N) randonn num bers within a defined
numeric domain (R). The S-input specifies the seed value of the component, if the seed value is
changed and all other inputs remain the sam e a new list of random values will be generated. By
default, the Random component generates real num bers. To specify integers right-click on the
Random component and select the Integer Numbers option from the context menu and a black
Integers flag will appear at the bottom of the component. The component Construct Domain (Maths
> Domain) is used to define a num eric domain between two num eric extrem es. For example, a
domain defined between a minimum value of 2 and a m axim um value of 8 Is connected to a Random
component specifying a list with five items is to be generated. The output of the Random component
{0;01
(iHttaTn Start'1 02 0 6.63
80 1 4.42
l^Oomain end^j
2 3.0
3 7.91
4 2.65
2.2.5 Range
The component Range (Sets > Sequence) defines a range of num bers within a num eric domain (D)
with (N) subdivisions. In other w ords, num eric domain is divided into equal parts. When the domain
{0;0}
0 0.0
I Domain start' OO 1 2.0
2 4.0
I Domain end 1
3 6.0
4 8.0
1 steps~]| 50
5 10.0
mathematical functions.
A function of one variable has as a domain of values in the x axis and a codomain of values in th e y
axis, meaning for each input value (xi) the function provides an output value (yi).
domain
To build an algorithm with a m athematical function:
1. Defining a function
The Evaluate F(X) component, can define a function by double-clicking on the node to
display the Expression Designer. For instance, a parabola can be defined by the explicit
equation y=x^, so would be typed in the Expression Designer. The square operator can be
found within the Operators library and a complete list of functions and their signatures are
available by clicking the f:N>R button (at the upper right corner).
Expression x1
x : H u ll
y ; N u ll
Vanables
2. Defining a domain
In order for a function to return a result, the function requires numerical values as input.
The component Construct Domain in conjunction with the component Range can generate
numerical output. For example, if a domain [-2,2] is connected to a range component with N
set to 10,11 values will be generated which are equally divided with respect to the domain.
The output numerical values can be used as input for the Evaluate F(X) component.
The r-output of the Evaluate component is the codomain of the function. Examining the output of the
Evaluate component, the list of num bers decreases until zero and then increases again after zero;
Each point of a planar mathematical curve has two coordinates - x and y - w here x is a value from
the domain and y the output codomain. If the outputs of Range component (R) and the Evaluate
component (r) are connected to the Construct Point components (X) and (Y) slots respectively a set
of points which define the graphical appearance of the function will be generated. A curve can be
drawn through these points using the component Interpolate Curve (Curve > Spline).
{0;0}
0 4.0
1 2,56
2 1.44
3 0.64
4 0.16
5 0.0
6 0.16
7 0.64
8 1.44
9 2.5 6
10 4 . 0
A function of two variables has a domain composed of a subset of points belonging to the XY-plane
and a codomain of values in the z axis, meaning for each input value (xi,yi) the function provides an
To generate a surface from a function o f tw/o variables: first, define an equation and second define
the domain. Then construct points v\/ith respective (xi,yi,zi) output and interpolate a surface through
the points. Functions of two variables have a bi-dimensional domain, meaning input values for (xi)
For example, a paraboloid can be defined by the equation; z=-((x2+y^)/4)+4. To generate a grid of
points to define a paraboloid surface, the (xl) and (yi) input lists are required to be "cross referenced"
p a r a b o l o i d eq uation
|-DomatnMrj 0 3-0
The Evaluate component generates a (zi) coordinate for each (xi,yi) input pair based upon the
specified equation. The Construct Point component combines the data from the (xi), (yi), and (zi)
The component SrfGrid (Surface > Freeform) creates a surface from a grid of points (see 3.6). To
generate the paraboloid surface the Pt-output o f Construct Point \s connected to to the P-input of the
SrfGrid component, and the List length component is used to specify the num ber of points in the x or
( b - x ic - y ) {b^x^c-y)
, + (‘^ + y f ^ J j b + x f + (i/ + y f
( h - x ) ( d + y) ^ {b-t-x){d + y)
N O TE ?
C.J.K. W illiams, The analytic and numerical definition o f the geom etry o f the British Museum Great Court R oo f (Mathe
but it also allows us to define conditions in G rasshopper. Often it's crucial that an algorithm performs
different operations if a condition is met or not. A condition can be set in the F-input of Evaluate (in
alternative, you can type the condition inside the Expression Designer editor) and it may include an
Smaller Than (<), Larger Than which can be found within the Operators panel of the Maths tab. Other
operators (e.g. inequality, sm aller than or equal) can be found within the Expression Designer editor.
For example, the Evaluate component can be used to test if a set of numerical variables meets a
defined condition. Evaluate returns Boolean values*: True if the condition is met, and False if the
j^artam x^ 8 O
< I
m 0 True
0 False
['Variable i r |
Variable x 1 ] 1 True
< x+ y-6
['H^riable x 04
1
1W ang le y ❖ 2
Conditional statem ents can be used to define Cull Patterns. For example, a set of circles whose
radius are calculated using the component Deconstruct Arc/DArc (Curve > Analysis) are compared to the
conditional statement R > 8, circles which satisfy this condition are extruded 20 units in the z direction,
NOTE 8
Named after the English m athem atician George Boole.
^20
10}
0 False
1 False
2 False
3 False
(01 4 True
0 4.56 5 False
1 5.49 6 False
2 2.61 _2. --
3 6.4 ^
4 10.98
5 2.57
6 1.43
T 1
Alternatively, the component Dispatch (Sets > List) can be used to filter data with a corresponding
Boolean values list. The Dispatch component returns two lists: list A contains data which returned
True I.e. met the conditional statem ent, and a list B contains data which returned False i.e. data that
did not meet the conditional statem ent. Referring to the previous exam ple, Dispatch compares the
radius of circles to the conditional statem ent (R>8) and sorts the circles so that circles which return
True are extruded 20 units in the z direction and circles which return False are extruded 5 units in
the z direction.
<{ Cry
The component Concatenate {Sets > le x t ), can be used to join two or multiple fragm ents of text. For
instance the statement "the cat is on the table" can be created by concatenating the panels "the cat"
and "is on the table." Concatenate can be used to w rite a "parametric" condition by concatenating the
text "x>" typed inside a Panel (do not press ENTER on your keyboard after typing "x>" but confirm
with OK within the Panel Properties window) with a Number Slider or a generic num ber input.
the cat
(0 )
0 the cat is on the table
is on the
tab l e
{0}
0 x>3.0
The Concatenated output can then be used as the F-input of the Evaluate component.
The Evaluate component can be used to define if/then statem ents, meaning the conditional statement
if(x>5,l,8)
i 0 8
( 0 }
Inputs A and B do not have to be num bers. For instance, the text "cat" can be returned when the
< if(x>5,y,"cat") {0 }
0 6.0
1 cat
[Witaie-iii 02
|[~yariable 6 O
r
2.4.3 Other operators: Contains
The Contains operator C o n ta in s (s, "p") tests whether the string p is in the list of data s. The Evaluate
component tests the operator and returns a Boolean value. The following exam ple tests if "4" occurs
within the list of num bers connected to the x-input, and yields True as a Boolean value.
The operator Contains can also be used to find specific geometries within a list. For example, to
test if a list of geometries (imported by a Geomef/y container) contains a line, the operator Contains
(x,"line") can be set in the F-input of Evaluate. Then, a Panel must be used as a "bridge" between
Geometry and the x-input of Evaluate. Panel's descriptions containing the text "Line" will result in a
True statement and any other text will result in a False statement.
2.5 Remapping numbers / Attractors
The component Rem ap N um bers (Maths > Domain) evaluates a list of num bers ranging from A to B,
and resizes them proportionally to a new num eric domain A' to B'. The Remap component requires a
list to remap (V), a source domain (S), and a target domain (T). The source domain of the numerical
sequence can be found using the component Bounds (Maths > Domain), while the target domain is
specified using the Construct Domain component. For example, the list of num bers (2, 4, 6, 8) whose
source domain is [2,8] can be remapped to a new domain [0,1], yielding the list of values (0.0, 0.33,
0.67,1.0).
2.5.1 Attractors
The Remap component is used to perform distance-based transform ations, utilizing "attractors."
An attractor is a geometric entity: a point, a curve or another element, used to modify the geometry
around it within defined limits. The impact an attractor has on other geom etry depends on the
distance between the defined attractor and the object it is manipulating. To visualize how a point
attractor can scale a grid of circles a simple algorithm will be used as an example.
The component Circle (Primitive > Curve) generates a circle with tlie center at point {0,0,0} and a
radius of 1. The defined circle is two dim ensionally arrayed using Move and Series in conjunction,
{0;0) (
------
0
1 31.24
2 30.01
3 28.86
4 27.8
5 26.86
y n.
{0;0) (
\ d ’ 0 .8
1 0.77
2 0.74
3 0.71
> 4 0.68
5 0.66
_^ ^ _______
0 0 . 1 2 ' To 3 2 . 5 5
t w u i a H r l 0 0 .0 1 0 |)— ( {0 }
O T . O I To 0 . 8 ^
j 0 .8 0 |h - <
A point set from Rhino is used as the attractor m echanism by m easuring the distance between the
attractor-point and the centroid of each circle returning a list of num eric values. To scale the circles
a scaling factor between 0 and 1 is required. The Remap component is used to remap the actual
distances (between the attractor point and each centroid) proportionally to a new domain between
(0,1]. A scaling factor of zero would yield null results; consequently a value close to zero is used.
OO o o o o o O O O O O O O O O O O O O ..............................• o o O O O O O O O O O
O O oo o o o O O O O O O O O O O O O O * .............................................................. o a o O O O O O O O O
O O OO o o o o o o o o o o o o o o O O ................................................. o o o o o o O O O O
O O OO o o o o o O O ................................................. ® o o o o O O O O O
O O O0 o o o o o o o • . . . • ......................... ® © o o o o O O O O
o o o o o o o o o o O ................................................. o o o o o o O O O O
o o o o o o o o o O O ............................................................................o o o O O O O O O O
o o o o o o o e o o O ............................................ o o o o o o O O O O O
o o o O O o o o o o O ............................................ o o o o o o O O O O O
o o o O O o o o o O O o o o o o o o o o o o o o O O O O O O O
o o o O O o o o o O O o o o o o o o o o o o o o O O O O O O O
O O O Oo 0 o o o O O o o o o o o o o o o o o o O O O O O G O
O O O Oo o o o o O O o o o o o o o o o o o o o o O O O G O O
O O O OO o o o o o o o o o o o o o O O o o o o o o o o o o o O O O O O O C O O
O O O OO O o o o O O O O O o o o o o o o o ooooooooooooO O O O O O
OOO O O O O o o o o o o OOOOOOO O O O O O O O O O O O O O O O O O O O O
OOOOOOO o o o o o o OOOOOOO oooooOOOOOOOOOOOOOOO
OOOOOOO o o o o o o OOOOOOO OOOOOOOOOOOOOOOOOOOO
OOOOOOO o o o o o o OOOOOOO OOOOOOOOOOOOOOOOOOOO
O O O O O O O OO OO OO OOOOOOO OOOOOOOOOOOOOOOOOOOO
The component Scale (Transform > Euclidean), scales geom etry (G) according to a center of scaling
(C) and a scale-factor (F). The remapped domain (0,1 ] is used as the scaling factors. As the attractor
points position moves, the respective distances change and the scaling associatively updates.
The component Boundary (Surface > Freeform ) creates planar surfaces from closed curves. The
component Grod/cnt (Param s > Input) can be used to display the respective scaling factors graphically
by a color gradation. To change the Grad/ent component's color preset: right-click on the component,
o 0 o O o o • •
0 o o 0 o e •
o o o o o 0 ® •
o o o • •
o
• . . . o 0 0 o o o o • •
. . . 0 o o o o 0 o • •
0 o 0 o o • •
o 0 0 O o o • •
0 o 0 e « 0 9 0 0 0 o 0 0 o o • •
o 0 0 o o • • •
OOOOOO O O O O O O o o Q • • •
OOOOOO OOOO O 0 0 ©9 • • •
OOOOOO OOOO 0 o
OOO o o o o o o
a o o o o o o o o
• • • • • •
• • • • • • • • • • • • •
A curve can also be used as an attractor by nneans of the component Curve C losest Point (Curve
> Analysis). The Curve Closest Point component m easures the distance (D) between each circle's
center and the closest point on the curve. The scaling factors can be visualized by using the Gradient
component.
* 0 0 0 0 0 0 9 9
• o O O O O O O O O O
o o O O O O O O O O O Oo • • • • • • •
0 0 0 0 # # # 9 # @ 0 0 0 0 0 o o o o o
o o o o o o o o
o O o o o o o
• • • • • • • • • • • • • • « e o o o o
The remapped values can also be used to move the centroid points. For instance, the points can be
moved in the z-direction. Changing the remapped domain to [3,15] em phasis the translation when
Multiple attractor points can also be defined. For example, two attractor-points can be set by
summing their relative distances to each circles centroid. The list to rem ap (V) will be the output of
the component/4dd/f/on (Maths > Operators). If we invert the domain's extrem es [0.82, 0.01] we get
To lim it theeffect of an attractor the distance between the point and the centroid can be divided by
an arbitrary number, which beconnes the operating range of the attractor. The division returns a list
of values which are connected to the F-input of the Scale component. The scaling factors must be
smaller than 1 to reduce the original geometry. The component M inim um (Maths > Util) can be used
to test whether a list of num bers are larger than a comparison num ber (B). Values that satisfy the
component are replaced with the minimum value (B). For instance, distances that are greater than
25
Frank Owen Gehry, W alt Disney C oncert Hall building.
Prior to the advent of digital tools, formal investigation w as limited to traditional drawing techniques
relying on geometric primitives and basic mathematical models. Emerging tools and fabrication
techniques have changed the way designers conceive of architecture, opening new formal
trajectories. This paradigm-shift from pencils, squares and com passes to computer-based tools has
The computer or more specifically, 3D modeling software has pushed the boundaries of formal
exploration by digitizing manually iterated design. The next epochal transition - Algorithmic
Modeling - requires a robust knowledge of the principles behind form generation; specifically an
accurately describe any shape from a simple 2D line, circle, arc, or curve to the most complex 3D organic
• Degree: a positive, integer num ber. For exam ple, NURBS-lines and NURBS-polylines are
degree 1, NURBS-circles are degree 2, and most free-form curves are degree 3 or 5. The
• Control-points: A NURBS curve is conditioned by the position and wc/^/jt of control points
Weights regulate the attraction between the control-points and the curve; a weight >1
attracts the curve and a weight between 0 and 1 repels the curve. The num ber of control
• Knots: are a list of (degree+N-1) num bers, that control the sm oothness of a curve.
• Evaluation rule: is a form ula that inputs: degree, control points and knots and outputs a
point location.
dimensional plane. The image below is a planar NURBS-curve with a degree of 3 controlled by the
FIGURE 3.1
A NURBS curve with 7 control-points.
If the curve's degree changes different curves will be generated. A curve with the degree 1 coincides
The image below shows how the weight of control-points affects a NURBS curve.
W=5
W=5
FiGURE 3.3
A control-point with a weight > 1 attracts the curve, on the contrary a controi-point with a weight between 0 and
1 push off the curve.
3.2 Param etric rep resen tatio n of a curve
The Rhino environm ent is based on a World Coordinate System (WCS) and points on a NURBS
curve are defined by a triplet of coordinates (x,, y., z,). If z=0 for each point, the curve is a planar curve
FIGURE 3.4
Each point of a NURBS curve is defined by a triplet of coordinates.
Another way to find points on a curve is based on the Param etric representation. The coordinates of
an arbitrary point P are expressed as function of a variable f that ranges between 0 and 1. Fort=Oand
t=1 we get the curve's end points and for f ranging between 0 and 1 we describe the whole curve.
We can also say that a curve is parameterized between 0 and 1 or, in alternative, that its domain is
[0,1]. The parametric representation can be considered as a Local Coordinate System (LCS). Roughly
speaking, it is a system set "on" the curve which have great advantages since it requiresjust one parameter
to identify a point, which is still defined in the World Coordinate System (see images below).
Po t = 0
t = 1
t ^ 1
It's important to point out that t doesn't m easure distances. We can imagine t as the time that a
"particle" takes to go from t=0 to the instant position P(t). This time is affected by the position of
control-points and, in particular, the motion of the "particle" slows down when it passes through a
concentration of control points (see following image). For this reason t=0,5 is not the param eter that
t = 0,5
Even if the curve is rebu/Vf using Rliino, resulting in a uniform redistribution of control points, the mid
Parametric Representation enables users to find points along a curve. The component Evaluate Curve
(Curve > Analysis) requires a curve (C) to analyze and a param eter (t) on the curve domain to evaluate,
Parameter 0 0,4
The Parametric Representation assum es that a curve is parameterized between 0 and 1. However,
curves in Rhino typically have different domains. The domain of a curve can be set to [0,1] by
reparameterizing the curve. The R ep aram eterize option is available by right-clicking on the curve
component and selecting Reparameterize from the contextual menu. If multiple curves are set with
different domains, their local domain will be set to [0,1] by selecting the Reparameterize option.
FIGURE 3.5
The Reparam eterize option is available within
|||^ | Preview
the context menu of the Curve component.
Enabled
Bake.,,
< 0 Crv >
W ire Display
@) Reverse
® Flatten
® Graft
0 Sim plify
0 Reparanneterize
The Evaluate Curve output (P) expresses the points location in the World Coordinate System, the
T-output is the tangent vector at f. The Vector Display component can be used to visualize the tangent
vector (T). Tangent Vector (T) is a unit vector that can be amplified by scalar multiplication using the
Multiplication component.
3.3.2 Inverting direction: Flip Curve component
Parameterized curves are described by a start point (t=0), an end point (t=1) and a direction from
start point to the end point. Tine direction depends on Plow the curve w as drawn, i.e. on the order of
-li
2
tf
2
Reparameterizing a curve does not change the direction. The direction of a curve can be changed
using the component Flip Curve (Curve > Util). The following image displays 2 curves with opposite
directions: Curve 1 has left-to-right direction while Curve 2 has right-to-left direction. A is the start-
point of Curve 1 while B is the end-point of Curve 2. Our aim is to connect the points A and B by a
line. If we use an Evaluate Curve component to extract points, we must previously flip the direction of
either Curve 1 or Curve 2 by Flip Curve. In this way, the point B will become the start-point of Curve
curve 1
curve 2
The G-input of Flip specifies a reference curve used to unify the direction of set of curves. For
example, a set of curves with different directions - curves 1 and 2 are left-right oriented and the
remaining are right-left oriented - are set and merged (see following image).
The merged list is connected to the C-input o f a Flip component and Curve 4 is set as the guide curve
in input (G), resulting in a set of right-left oriented curves. The fi/o/uofe Curve component can be used
to specify points along the curves (it is im portant to reparam eterize the C-input).
[param ^ttr j » 0
p \ ^
m \
■D1
D2 01
D3 R
< |0 Curve 1 (Crv) j)
D4
< l@ Curve 2 (Crv) |)
D5
< |0 Curve 3 (Crv) b
By default, set points from Rhino are expressed in the World Coordinate System. The component
Curve CP (Curve > Analysis) is used to convert a point expressed in the WCS to the f local parameter
of a given curve. The t-output of Curve CP is the param eter on the curve's domain expressed in the
{0}
0 0.15 >
< (@ Cry |>
The component Curve CP enables users to find the closest point P' on a curve, given an external point
P. The displacement distance between points P and P' is provided by the D-output. When Curve CP is
As discussed in chapter 1 the component Poirit On Curve (Curve > Analysis) can operate sim ilarly to
the Object Snap comm ands of CAD packages. The component can be used to find points such as
start, quarter, mid etc., by right-clicking on the component and selecting a value from the contextual
4) Preview
11 Enabled
0.0 (start)
1/4 (quarter)
1/3 (third)
1/2 (m id)
1.0 (end)
Help...
The component Point On Curve is based on the curve's length not on the curve's domain. As follows,
a value of 0.5 expressed by the components slider corresponds to the mid point of a curve, unlike
the Evaluate Curve component. The Point On Curve component does not require the input curve to
be reparam eterized.
The component Evaluate Length (Curve > Analysis), finds a point (P) a distance m easured as an arc-
length (L) from the start point t=0. The input (L) is a num ber between 0 and the curve's length;
which can be calculated using the component Curve Length (Curve > Analysis). The Evaluate Length
component outputs coordinates in the WCS (P-output) as well as in the LCS (t-output).
{0}
(0}
0 {4 8 . 1 9 , 33.82, 0.0)
t Toggle {0 )
0 0.11
3.3.5 Dividing a curve: Divide Curve component
As discussed in chapter 1 (1.7.3), the component Divide Curve (Curve > Division) generates a set of
points (P) by dividing a curve into (N) equal length arcs. As a result, N+1 points are generated in
the case of open curves, and N in the case of closed curves. The component calculates the tangent
vectors (T) at division points as well as the LCS (t) param eters.
The component Divide Length (Curve > Division) divides a curve into segm ents specified by the arc-
length (L). If the curve's length is not a multiple of (L), a "leftover-arc" with a length different from (L)
will result.
leftover arc
<y A ^ C r v ] )- {0 ;0 )
0 0.0
1 0.15
1' Length 70 0
2 0. 4
3 0.69
4 0.92
3.3.8 Dividing a curve: Divide Distance component
The component Divide Distance (Curve > Division), divides a curve into segm ents by calculating
sequential intersections of circles and the curve. Depending on the value of the radial distance (D) a
{0;01
> 0 0.0
1 0.1116
600 2 0.3186
3 0.533
4 0.7645
5 0.9341
The component Contour (Curve > Division), creates a set of curve contours given a curve (C), a start
point (P), a vector (N) and a distance (D). The resulting intersections are output as point coordinates
L .
3.3.10 Splitting a curve: Shatter component
The component S/70ffe/-(Curve > Division) splits a curve into segments at (t) input parameters outputting
segments, instead of points. Tine parameters to split at (t) can be set by specifying a value within the
LCS domain [0,1] or supplied by the output of other components. For example, a curve set from Rhino
can be split into two parts using a splitting point (set from Rhino) by connecting the f-output of the
Cun/e CP to the f-input of the S/jotfer component, resulting in two curves as observed in a panel.
{0;0}
(|Q Cfv !>■
>=< 0 Planar Curve
1 Planar Curve
c
^ I;H I
The f parameter can also be satisfied by using a slider to specify a value within the numeric domain [0,1 ].
Similarly, the f-output of the Divide Curve component can be used as a splitting param eter.
{0;0;0)
b' Planar Curve
1 Planar Curve
2 Planar Curve
3 Planar Curve
4 Planar Curve
3 .4 Notion of C urvature fo r planar curves
The curvature of a planar curve c m easured at a point P calculates the deviation of c from its tangent-
line near P. The curvature of a generic curve varies from point to point. In order to mathematically
• The curvature of a circle is constant. In particular, curvature is equal to zero when the
radius approaches infinity (i.e. a straight line is a circle with an infinite radius).
As follows, the curvature (k) can be defined as the reciprocal of the radius (r):
k=1/rU]
In order to extend this concept to generic curves a geometric construction is used: the osculating
circle. Given a point P of a generic curve c, the circle which most closely approxim ates the curve
near P is defined as the osculating circle at P. The curvature's value k of curve c at point P is defined
Curvature can also be defined as the vector k with direction PO and a magnitude equal to the
reciprocal of the osculating circle's radius. Since curvature is the quotient of two positive numbers-
and by definition the radius is a positive num ber - the curvature of a planar curve is always a positive
number. However, sign ed cu rva tu re convention denotes a positive sign if the osculating circle lies to
the left according to the default direction and has negative sign if the osculating circle lies to the right
of the curve.
Q
The component Curvature (Curve > Analysis) graphically displays the cun/ature vector k and the
osculating circle at a generic point P expressed in the Local Coordinate System (LCS).
The curve's curvature value can be calculated in one of two ways: as the reciprocal of the radius
of osculating circle (C), which can be extracted using the R-output of the component Deconstruct
Arc-DArc (Curve > Analysis), or as the magnitude of the vector k which can be calculated using the
{0 }
The component C urvature Graph (Curve > Analysis) visually displays curvature as a graph.
and 1) operate sim ilarly for surfaces as the param eter t operates for curves.
For each value of {u }, points P(u1,v) can be found to constitute the "sectional curve" C l. As follows,
for each value of {v } points P (u ,v l) can be found to constitute the "sectional curve" C2. Curves Cl
and C2 are called Iso cu rves or Isoparametric Curves. In particular, C l and C2 are the isocurves of the
Isocurves create a rectangular grid generalizing the notion of the Cartesian Grid on a curved surface.
This concept is valid for every freeform surface since a NURBS-surface can alw ays be imagined as
the deformation of a flat-rectangular surface. Moreover, surfaces have bidim ensional domains
As shown below, we can get a complex, freeform surface starting from a rectangular flat surface. The
a surface from a circle or from an ellipse and activating the rectangular grid of control-points. Rhino
hides the trim med area, but the actual domain is always rectangular.
---------1
/ \ ^
t.V,)
1 •
\
I
1
1/
>
A surface that does not contain its domain is called a Trim m ed Surface. Conversely, surfaces that
t
1 : ;
i i i
, i
\
C
I---------- 1
N ,
j \
/
■ 11
FIGURE 3.6
Atrinnmed (above) and an untrimmed (below).
3.5 Surface creation
Grasshopper provides several components to create surfaces; they are hosted within the Freeform
• Extrude: is the easiest w ay to create a surface. The component Extrude (Freeform >
boundary edge curves. The component Boundary Surfaces (Freeform > Surfaces) requires
Loft: creates a surface through a set of ordered section curves. The component /.o^(Freeform
> Surfaces) requires at least two curves to generate a surface. The component Loft Options
(Freeform > Surfaces) controls the method of surface creation, or the default method will
operate. Loft Options specifies whether a surface is closed, if the seams should to be adjusted,
if surfaces should be rebuilt, a refit tolerance, as well as one of six loft types specified by an
from Points (Freeform > Surfaces) is useful for creating surfaces from other surfaces, eras
The component Surface from Points requires a grid of points and the num ber of points in
the u direction to be declared. For instance, a surface can be created from a 9 x 6 grid of
Edge surface creates a surface from two, three or four curves. The component Edge
Surface (Freeform > Surfaces) interpolates a surface from ordered edge curves.
E3
E4
Patch: fits a surface through a set of points, or curves that are open or closed. The
component Patch (Freeform > Surfaces) generates a series of perpendicular curves, called
spans, from input curves which compose a trim med or untrimmed surface. Span curves
are rarely parallel to any edge of the output surface so the Patch component is used when
Network surface operates on two sets of ordered curves to create a single surface. The
component Network Surface (Freeform > Surfaces) requires curves in the u direction and
the curves in the v direction. The C-input specifies the type of surface continuity (0=Loose,
T=Position, 2=Tangency, 3=Curvature. The Network Surface component allows for more
Sweep 1 and Sweep 2: generate a surface using a section curve S swept along one or two
rail curves R. Sw eepi (Freeform > Surfaces) should be used with one rail curve and Sweep2
Revolution
Parametric Representation is used to find points on a surface. The component Evaluate Surface (Surface
> Analysis) requires a surface (S) to analyze and two LCS coordinates (u and v). The component MD
The MD Slider (or multi dimensional slider) is a bidimensional extension of the Number Slider.
By default its values range between 0 and 1 in u and v directions, assum ing the input surface is
the input surface by right-clicking the Surface component or the S-input of Evaluate Surface and
selecting Reparameterize.
{0}
iM H 0 131.36, 11.52, 2.181
The Evaluate Surface component outputs: a point (P) expressed in the WCS, a normal vector (N) at
P and a tangent plane (F) at P. The displayed dimension of planes can be set from Display > Preview
Plane.
3.7.2 Finding points on a surface: World to Local conversion
The component Surface CP (analysis > surface) can be used to convert a point P on a surface
More specifically, the Surface CP component finds the closest point P' on a surface, given an external
point P. The displacem ent distance between points P' and P is provided by the output (D). When the
component Surface CP is used to convert between WCS and LCS: P=P' and D=0.
(0 )
(0)
0 {0.5, 0.2, 0. 0 }
3.7.3 Inverting direction: Reverse Surface Direction component
The component Surface Direction (LunchBox > Util) inverts tlie uv direction of a surface. The Tab
Lunch Box, developed by Nathan Miller'’ is available as a plug-in for Grasshopper and includes
The R-input o f Surface Direction specifies the reverse option: if R=0 the directions will not be inverted,
if R=1 the u direction will be inverted, if R=2 the \/ direction will be inverted and if R=3 both u and 1/
srf "]>
Heverse Option
The component Iso cu rve (Curve > Spline) extracts the isocurves of a surface at a specific point (P),
given its local coordinates (uv). Isocurves U (parallel to u direction) and V (parallel to 1/ direction) are
NOTE 9
Nathan Miller is an Associate Partner and Director of Architecture & Engineering Solutions at CASE where he is
responsible for leading the efforts on com putational design strategy and complex modeling and geom etric ratio
nalization. His expertise in 3D modeling program s and fluency in several scripting and programming languages
provides leading-edge solutions and capabilities for significant AECO clients. Explorations on computational design
are published on his blog: http://www.theprovingground.org/
3.7.5 Dividing a surface: Divide Surface component
The component Divide Surface (Surface > Util) generates a grid of points on a surface. The points (P)
are the intersection vertices of a grid of isocurves calculated by dividing the u and i/axes evenly by a
positive integer input. The Divide Surface component outputs: normal vectors (N) at points (P) as well
The component Isotrim-SubSrf {Surface > Util) splits a surface into a set of contiguous sub-surfaces
based on a grid of splitting isocurves. For exannple, the image below is a surface split into 50 sub
surfaces.
The Isotrim component is useci in conjunction with the component Divide Domain^ (Maths > Domain).
The Divide Domain^component sets the num ber of divisions in both u and ;/directions generating a
(0;0| 1
0 Untriiraned Surface
Srf :il>- 1 Untrimmed Surface
2 Untrimmed Surface
3 Untrimmed Surface
(■U Count i o o |k (
4 Untrimmed Surface
f v c o i ji r 5« |)- (
The Isotrim component outputs a set o f untrimmed surfaces param eterized according to the domain
of the parent-surface. For exam ple, the domain of the bottom-left sub-surface is [0;0.1] in the u
~ m 10 o f
I ii - a o ! * 50 )j
If 1 is set as the U-input or the V-input of Divide Domain^ component, a series of contiguous stripes
that follows the parent-surface will be generated. Patterns can be created using the component Cull
Pattern (Sets > Sequence) with a list, for example, of (True, True, False) Boolean inputs.
3.7.7 Strategy: uneven splitting
The cutting-grid generated by Divide Domain^ is evenly spaced because the u and i/axes are divided
into equal lengths by the U and V input values respectively. To generate an unevenly spaced grid the
FIGURE 3.7
To construct an unevenly spaced grid: first, the bidimensional domain m ust be divided into its mono
dimensional components U and V using the component Deconstruct Domain^ (Maths > Domain),
then the distribution of points within the two domains (U and V) are changed by the component
Graph Mopper (Param s> Input) set to Bezier, by right-clicking on the component and specifying Bezier
from the context menu; next, the component Construct Domair)^ (Maths > Domain) reassem bles the
mono-dimensional domains into a bidimensional domain, and finally the surface is split using the
Isotrim component. Acting on graph's grips will change the grid spacing.
100
CE=SB )►--< U >
Q
S i
5^ ]>--< V
• Four Edges (E^,, E,, E^, E3). Edges are bounded pieces of curves;
• Four Vertices (V^,, V,, V^, V 3). Vertices are points that lie at corners;
can be extracted.
The component Deconstruct Brep (Surface > Analysis) is used to extract faces, edges, or vertices from
a surface.
{0;0}
0 Untrimmed Surface
{0;0}
0 Planar Curve
Planar Curve
2 Planar Curve
3 Planar Curve
{0;0}
0 {26. 59 , -225.28, 6. 13 }
1 {77. 44 , -225.28, 4.2 1}
2 {77. 44 , -200.39, 2. 2 3 }
3 {26.59, -200.39, 0.1 4}
The term Brep (or boundary representation) describes a way of defining geometric form s using
boundaries. Primitives sucli as Boxes, Cylinders, Cones as well as other geometric solids are defined
edges and faces "stitched" together to form a solid object. For instance, a NURBS surface can be
For example, if the component Center Box (Surface > Primitive) is used to define a box with a specified
domain and the Surface component is connected to the box output (B) the Surface component will
The error occurs because the box is constituted by six surfaces joined together into a Brep. In order
to extract surfaces, the box or Brep has to be deconstructed into surfaces using the component
Deconstruct Brep.
{0;0)
0 Untrimmed Surface
1 Untrimmed Surface
2 Untrimmed Surface
3 Untrimmed Surface
4 Untrimmed Surface
5 Untrimmed Surface
A surface can be split by a set of curves that are coincident to the surface. For example, a geodesic
curve can be used as a cutting curve to split a surface into two parts. Given a surface (S) and two points
(S) and (E) placed on opposite edges, a geodesic (or a shortest path curve) can be constructed between
points (S) and (E) on the surface. A geodesic line can be considered a straight line in curved space.
I]il E
V
The component Surface Split (Intersect > Physical) splits a surface (S) at splitting curve (C) which in
The result of the Surface Split component is two trimmed surfaces. To create an uritrimmed surface
from a trimmed surface the Deconstruct Brep component can be used to extract the edges and create
a new surface using the component Edge Surface (Surface > Freeform).
i0f0;c;0}
0 Untrinmed Surface
3.7.10 Example: diagrid
A diagonal grid or a diagrid can be created on a target surface by using the decomposition logic of
Brep geometry.
A surface set from Rhino is evenly divided into a set of sub-surfaces using the Isotrim component.
To understand the logic of creating a diagrid, one surface item (0) will be examined as a case study,
A diagrid is created by connecting opposite vertices for each sub-surface. The vertices are extracted
using the Deconstruct Brep component and itemized separately by four List item components. A line
is created between the items (0 to 1) and (1 to 3), creating one module of the diagrid pattern.
To extend the diagrid logic to the overall surface the List Item component, placed after the SubSrf
component, is deleted. Then a direct connection is made between the S-output of SubSr/and the
In order to generate a diagrid that is coincident with the target surface, the component Project (Curve
> Util) is used to project the curves onto the target surface. The output of the Line component (L) is
connected to the C-input of the Proyecf component, and a receiver (wireless connection) of the original
surface is connected to the B-input of the Project component, projecting the diagrid onto the original
surface. Line segments will be replaced by curves as the output (C) of the Prq/ect component.
(((< Srf
The diagrid algorithm is not bound to a specific surface, the algorithm can be used as a diagrid
generator for any surface. The component Pipe (Surface > Freeform) will sweep a circle of a specified
radius along the diagrid curves (used as rail curves) creating a three dimensional diagrid.
3.7.11 Example: space frame
The diagrid-algorithm can be extended to create a sp ace fra m e . The F-output of the Deconstruct
Brep component is a set of sub-surfaces, so the approxim ate center point of each sub-surface can
be calculated using the Evaluate Surface component connected to an MD Slider set to (0.5;0.5). Since
the surfaces returned from the F-output of Deconstruct Brep are parameterized according to the
domain of the parent surface they must be re p a ra m e te riz e d . The P-output of the Evaluate Surface
component is a set of points approxim ating the centers, and N-output the vector normals to the
surfaces. The component Line SDL (Curve > Primitive) is used to create a set of line segments given:
the start points (S) declared by the P-output, the directions (D) declared by N-output and lengths (L)
specified by a slider. The component Endpoint is used to extract the end points of the lines which
are finally connected to the V-output of Deconstruct Brep, generating the remaining components of
Parametric Space can be imagined as a defornned Cartesian Grid which perfectly fits an arbitrary
freeform surface. The dim ensions of the grid are dependent on the initial domain as well as its
subdivision. As a consequence, edges do not have the sam e length unless the surface curvature
is equal to zero.
To generate a grid with equal-length edges, a grid of equidistant points on a surface is required
to be declared. The Russian m athem atician Pafnuty Lvovich Chebyshev (1821-1894) developed
a method called the Chebyshev-net to clothe curved surfaces by cutting and sewing flat pieces of
fabric. The method is published in the book On the cutting o f our clothes (1878).
FIGURE 3.8
Agrid of equal-length edges generated on an arb itrary freeform surface.
Given two arbitrary transverse curves u and i/ starting from an arbitrary point (P) of a surface, and a
specified edge-length (L) a unique Chebyshev-net can be found. The Chebyshev-net method can be
applied to the plane as well as any freeform surface. The geometric approach'” to the Chebyshev-net
can be imagined as a tridim ensional extension of the Divide Distance logic (see 3.3.8).
To find a grid of equidistant points in a bidimensional space a generic point 0 is used to draw two
orthogonal curves u and v. The desired edge-length (L) is defined by drawing a circle (circle 0) with
radius (L) originating from point 0 ; then intersecting the circle with the isocurves u and v to define
point 1 and point 2. At the intersection points circles {circle 1 and circle 2) are drawn with the same
NOTE 10
E.V. Popov, 2002, Geometric Approach to Chebyshev Net Generatiort Along an Arbitrary Surface Represented by NURBS,
radius as circle 0. The circles intersection defines p o in ts. The procedure is repeated for the remaining
/ circle 1
/
/
/
1
3' L 1
/■
s.
/
\
\
V \ L \
/ \
/ / \
1 V \
/
2 L 0 1
k 1
\ 1
circle 2 \
\
\. circle 0
^ ^ ^
The method of intersections can be extended to non-orthogonal curves u and v. Resulting in a grid
equidistant points calculated from tw/o isocurves with a degree of 3 on a flat surface originating from
an arbitrary point 0. An equidistant grid generates a leftover area. Leftover areas do not happen
in the case of domain-based grids since the segment length is dependent on equally dividing the
domain.
FIGURE 3.9
A net of equidistant points (Chebyshev-net) generated on a flat surface from two isocurves u and v. Usually a
Chebyshev-net cannot perfectly fit a surface. A "leftover" area is generated.
The tridimensional extension of the bidimensional method implies a tridim ensional geometric
construction. Meaning, a set of spheres are used instead of circles. To construct a tridim ensional net,
two generic curves g1 and g2 are defined on a surface S a n d their intersection (point 0) is found.
Then - expanding the bidimensional method - a sphere (sphere 0) with radius (L) is drawn and
intersected with curves g1 and g2 to define point 1 and point 2. Point 3 is found by intersecting two
spheres {sphere 1 and sphere 2) wih the sam e radius (L) with the surface, generating curves whicin are
intersected to define point 3. The procedure must be iterated and repeated for the remaining three
quadrants to generate the complete grid. G rasshopper does not provide a built-in component that
allows users to perform iterations and create a Chebyshev-net. Anyhow, as we will see in chapter?,
displayed below. This characteristic is crucial to form freeform structures (gridshells) starting from
P. In order to define the curvature of a surface the osculating circle needs to be defined following a
procedure sim ilar to the method used to define the osculating circle for planar curves.
For each point P belonging to an arbitrary freeform surface a normal vector n can be calculated.
A infinite num ber of planes or s h e a f o f p la n es {pa, pb,..., pi) containing the normal vector n can be
found. As follows, an infinite set of curves (co, cb,..., ci) can be found as the intersection between the
For each curve (co, cb,..., ci) the curvature can be calculated at P as the reciprocal of the radius of the
Curvature K^can be found. The curve in which curvature K, is calculated is named C,, Similarly cun/ature
The tangent vector to curve C, at P is called the Minimum Principal Curvature Direction Id . Similarly,
the tangent vector to curve C^at P is called the Maximum Principal Curvature Direction 1^.
The two primary methods of defining curvature, Gaussian Curvature and Mean Curvature, can be
Gaussian and Mean curvature are significant to the theory of surfaces. S u rfa ce s w ith n u ll Gaussian
C urvature a t all p o in ts a re D evelopable Surfaces; meaning the surfaces can be flattened onto a
plane without deformation. Developable surfaces are practical in manufacturing and fabrication
since form s can be constructed by bending flat sheets of flexible m aterials such as: metal, cardboard,
plywood etc. Additionally, these surfaces contain a set of straight lines which also simplify the
The condition G=0 is satisfied when k.,=0 or 1(^=0, since the product of zero is always zero.
• Maximum Principal Curvature corresponds to d'which is parallel to the directrix d. Since d'
is a circle its curvature k has a constant value equal to the reciprocal of cylinder's radius.
The product o f K,=0 and Kj=(1/r) is e q u al to zero . T h u s, th e c u rv a tu re o f a c y lin d ric a l s u rfa ce is
zero at each point m e an in g G aussian C urvature is n u ll. Similarly, the cone's Gaussian Curvature
The components Prirtcipal C urvature and Su rfa ce C urvature (Analysis > Surface) calculate cun/ature
forsurfaces. The Pr/>)c/po/Cu/-i/ofure component outputs: K' and m easuring the principal curvature
directions as vectors, as well as C' and which calculate principal curvature values by definition.
The Surface Curvature component calculates Gaussian Curvature as G-output and the Mean Curvature
as M-output. For instance, for each point of the cylinder the Gaussian Curvature is zero whereas the
Mean Curvature is the average of C' and C : resulting in a negative value since C - a circle - has a
' -f-t
k2
Developable surfaces include:
Planes;
Cylinders;
Generalized Cylinders: surfaces that have the cross-section of an ellipse, a parabola or, in
Cones;
Generalized Cones: surfaces created by the set of lines passing through a vertex and every
Tangent developable surfaces: surfaces formed by the union of the tangent lines of a
free-form curve.
Oloid
By definition developable surfaces are composed of linear cross sections in one prim ary direction.
motion of a straight line called the g e n e ra trix or ru lin g. A developable surface is always a ruled
A ruled surface is developable when unique tangent planes can be calculated along a ruling. In other
words, the tw is t angle (see following images) between tangents at rulings' end-points is null (in this
case a ruling is called a to rsa l ruling). For exam ple, to create a developable ruled surface starting from
an arbitrary curve {rail curve 1), the geometry of the second curve (rail curve 2) is dependent upon
A different strategy m ust be applied when aiming to get a developable ruled surface from two arbitrary
and fixed rail curves. Of course, it's not enough to divide both curves into equal parts and connect
the resulting points through "ruling" lines. In fact, it is not guaranteed that tw ist angle is null for each
ruling. In this case, specific algorithms (available as plug-in software) must be used in order to search
Gehry often studies geom etry using physical models composed of flexible sheet materials to |
FIGURE 3.10
F. Gehry, MARTa Flerford M useum , 2005. Image by Oliver S. Wittekind.
FIGURE 3.11
F. Gehry, Richard B, Fisher Center for the Perform ing Arts, Bard College, Annandale-on-Hudson, New York, USA.
Image by Daderot.
Gaussian Curvature is null for developable surfaces. Un-developable surfaces can have positive or negative
Gaussian Curvature. Gaussian Curvature is positive w/hen K, and are both negative or positive nneaning
cl and c2 have their osculating circles lying on the same side of the generatrix. Gaussian Curvature is
negative when K, and have different signs, meaning cl and c2 have their osculating circle lying on
Surfaces that have a null Mean Curvature at all points are called M inim al Surfaces. For Instance, a
ca ten oid minimal surface is form ed by the revolution of a catenary-curve g about its directrix d.
By definition a m inimal surface has M=0, meaning K^—K^. In other words, the Minimum Principal
Curvature and the Maximum Principal Curvature have the sam e value and opposite signs at each
point. For instance, the catenoids c u rv e s has its osculating circle on the positive side of generatrix
A soap film enclosing no volum e and form ed between boundary constraints is a minimal surface.
Soap film s have a vanishing mean curvature because the surface area is constantly approaching a
FIGURE 3.12
The m athem atical shape "the catenoid" made of a soap film . In every point of its surface the Mean Curvature is zero.
Image courtesy of soapbubbledk (w w w .soapbubble.dk).
3.8.4 Strategy: developable test
Developable primitives can be used to isolate developable sub-surfaces, however this method can
lead to false results if the geom etry is not trim m ed from a primitive.
FIGURE 3.13
In case of a developable surface S I, at least one of the osculating circles becomes a straight line and Grasshopper
draws a short segment. In a sim ilar {not developable) surface S2 both osculating circles are represented as curves.
To indentify developable surfaces the component Osculating Circles (Surface > Analysis) can be
used to draw the two osculating circles at a generic point P expressed in the LCS. If the surface is
developable at least one of the osculating circles will be a straight line at each point. In other words,
at least one of the Line components connected to C l and C2 will be in "correct" status.
To generalize the method we can generate a grid of points on an input surface by the Divide Surface
component and calculate the osculating circles at resulting points expressed in the LCS. | |
»<) Line |)
3.8.5 Example: curvature pattern
Mean Curvature analysis can be used to generate complex patterns on surfaces by using measured
A surface manipulated by adjusting points using the Gumball tool, is set from Rhino. In order to
To create the pattern the set surface is reparam eterized, and divided into a set of N sub-surfaces
using the Divide Domain and Isotrim-SubSrf com ponen ts. The Evaluate Surface is used in conjunction
with a MD Slider set to (0,5;0,5), to create a point approxim ating the center of each surface.
To generate the pattern of circles the C-input and the N-input of a Circle CNR component are
connected to the P-output and N-output of Evaluate Surface, respectively. The radius of circles (R) is
To generate a "curvature pattern" the R-input is set to be dependent on the mean surface
cun/ature. Mean Cun/ature is calculated by the M-output of the Surface Curvature component. Since
Mean Curvature can be negative, the list of values are filtered by the component Absolute (Math >
Operators) outputting positive \/a\ues. A Minimum component is used to set a m axim um value (0.150
in the example) for the Mean Curvature output which now feeds the R-input of Circle CNR, replacing
the initial Number Slider. Finally, a Ct///Poffe/-n component selects ju st the circles largerthan a specific
The component Surface Spilt can be used to split the initial surface using the circles as trimming-
curves. The split initial surface will be index item 0 in the Surface Split output list (F). The remaining
geometries (1 to N) are the "scrap surfaces" whose boundaries are the cutting curves. The split initial
surface can be visualized by using the List item component set to 0.
In order to visualize ju st the "scraps" index 0 - the split initial surface - can be removed from the list
(0;0;0) 0
0 Trinuned Surface holed surface
1 Trimmed Surface
2 Trimmed Surface
3 Trimmed Surface
4 Trimmed Surface
5 Triimned Surface
Initial surface ((«
L
I
Iw
©
.. ' . , V -
• . , ^ \ N x -
* *%%\\» '
• * * * \ %» » ' '
rf* -
4 transform ations
'Th e orthogonal features, w hen com bined, can
explode into complexity"
Y u k ih iro M a tsu m o to
Previous chapters have dem onstrated how m athem atics and logic are the basis of complex 3D
models. In this section a new layer of complexity will be introduced, geometric transformations. In
Euclidean transform ations preserve lengths or angle m easures. Euclidean transform ations
Affine transform ations do not preserve lengths or angle m easures. Affine transform ations
(D @ ©
1. Original geometry;
3. Affine: scale. Scale is an affine transformation which maintains shape in addition to parallelism; J
5. Morph.
A transform ation m easures the change between two points P(x,y) and P'(x',y').
P(X,Y)
x' = X + dx r Y-
dY P'(X’.Y')
y' = y + dy
Y’
X'
J
dX
An entire object can be translated performing the previous transform ation to all its points or, more |
specific direction and sense. These three characteristics define a "vector", that is a geometrical object
Therefore, a translation can be defined by specifying a start point P and a translation vector V.
Grasshopper provides several methods to create vectors and perform operations on vectors.
4.1 Vectors
The panel (Vector > Vector) hosts the components used to create and modify vectors.
• Vector 2Pt:
The component l/’e cfor2Pt(Vector > Vector) creates a vector between two described points:
A (start point) and B (end point). The L-output of the Vector 2Pt component returns the
magnitude of the vector and the V-output the vector. The l/ecforD/sp/oy component can be
Unit Vector:
Given a vector with a specified direction and magnitude (L) as described by two points, the
component Unit Vector (Vector > Vector) can be used to unitize the vector or change the
magnitude to 1 unit, without modifying the direction. The component Vector 2Pt can be used
to unitize an output vector by connecting a Boolean toggle set to True to the U-input.
Amplitude:
The component Amplitude (Vector > Vector) sets the length of a given vector to an input
value (A). For instance, a vector with an initial length equal to 5 is connected to the input
(V) ofthe/4mp//fucfecomponent, the component will return a new vector with a magnitude
(A) while maintaining the original direction and sense. Sense will change using a negative
Scalar multiplication:
Scalar multiplication refers to the multiplication of a vector by a scalar num ber N. If N>0
a vector in the sam e sense will result, if N<0 a vector in the opposite sense will result. The
vector's new length is equal to the product of the initial vector's length and N.
Unit X, Unit Y, Unit Z:
The components Unit X, Unit Y and Unit I (Vector > Vector) define unit vectors along
the X, y and z axes. The input (F) can be used to set a length through embedded scalar
multiplication.
mirror components.
The component Moi/c (Transform > Euclidean) translates a geometric entity (G) according to a vector
(T). For example, a box created using the component Center Box (Surface > Primitive) is translated in
vectors, these vectors can be used to perform multiple translations. For instance, a multistorey building
can be modeled by connecting a Series component to the F-input of UnitZ com ponent In this simplified
model the N-input of the of the Series component sets the distance between floors, the C-input sets the
total number of floors and the S-input defines the starting value of the numerical sequence. If (S) is set
jo » b —
lo o j)—
(
<
E
l>— ' E
N ht Ioo h - ( ■»
f* p i 0* l)— < N
C iO; 0}
M
0 0.0
1 4.0
2 8.0
3 12.0
4 16.0
5 20.0
4.2.2 Rotations: Rotate and Rotate Axis
The components Rotate and Rotate Axis (Transform > Euclidean) rotate a geometric entity (G) in a
plane or around an axis respectively. For instance, a prism can be rotated 45° with respect to its
original position on an arbitrary-oriented surface by using the component Rotate in conjunction with
component and then we can extract the lower face by List Item set to 6 . Evaluate Surface calculates the
normal vector of the lower face at its center; then Plane Normal (Vector > Plane) returns the plane to
rotate according with. Finally, R o tate is connected to the prism (G-input) and to the plane in (P). The
rotation angle is set through a Number Slider ranging between 0° and 360°. Since Rotate accepts angle
in radians, we have to convert degrees into radians by the Radians component (Maths > Trig).
In alternative, we can rely on the R o tate A xis component which needs a line (X-input) to perform a
« S >
The component Rotate Axis used in conjunction with the Series component, can create progressive
rotations.
With reference to the previous exam ple (see 4.2.1), it is possible to define the rotation axis as a vertical
line, starting from the gravity point of the initial box (by the Volume component). The progressive
rotation is made using different rotation angles (Series outputs) instead of ju st one value. The C-input
of Series must be set so that its value is equal to the num ber of objects to rotate.
To calculate the incremental rotations {relative angle between consecutive floors) as a function
of the twist angle (angle value between first and last floor), this latter is divided by the num ber of
floors minus one; the division's result is the relative angle. The following images display different
incremental rotations referred to the w irefram e model of a m ultistorey building: the angle between
FIGURE 4,2
The image illustrate different configurations of the model as the twist angle changes.
The Equation relative angle = twist angle / (number offloors-1) calculates incremental rotations for
each floor.
The component O rient (Transform > Euclidean) combines translations and rotations into a single
transformation. A geom etric entity (G) arbitrarily oriented in the space, can be oriented to new
position (G') by specifying an initial plane A and a Inal plane B. To orient geometry G to a new
position G' the Evaluate Surface component is used to find an initial plane defined as a tangent plane
output (F) at LCS point (0.5;0,5), and a final plane described by the component XY Plane (Plane >
Vector). The orient component adjusts the initial plane to be coincident with the final plane.
j>---(| o g p ]>
The orient component can also be used to orient a list of arbitrarily located ribs-surfaces to the
XY plane. The Evaluate Surface component is used define a plane on each of the ribs. The Evaluate
Surface normal vector output (N) is set as the z-axis direction (Z-input) of the Plane Normal component
(Vector > Plane) defining the initial planes. To define the final planes, an arbitrary point is translated
in the Y direction using the Series component as a scalar m ultiplier with: N-input set to the step
size (13) and the C-input value coincident with the num ber of surface-ribs (calculated through List
Length). At each point a XY Plane is defined. Lastly, the ribs-surfaces are oriented to the final planes.
4.3 Affine tran sfo rm atio n s
Affine transform ations (Transform > Affine) include scaling, shearing, projection and mapping
components.
The component Scale (Transform > Affine) is a geometric transform ation that enlarges or reduces
objects uniformly in x, y and z directions. The Scale component resizes an initial geometry (G) by a
scale factor (F) relative to a center of scaling point (C). The center of scaling (C) can be any point.
The scale factor is a positive num ber and cannot be 0 (a null scale factor is a mathematical error).
iTactorj 0.5 O
pt
A
Scaling can also be performed on several objects. For instance, if the same scale factor is applied
to the entire set of geom etries the entire set of geometry will be scaled by the sam e proportion.
Alternatively, different scale factors can be applied to each geometric entity.
For example, to progressively enlarge a set of six boxes the input (F) of the Scale component is
supplied with a list of increasing scaling factors by the Series component. The center of scaling input
{0;0}
0 1.2
1 1.35
2 1.5
3 1 .6 5
4 1.8
5 1.95
The Series component generates a list of increasing or decreasing lin e a r scaling values.
To generate more complex form s of scaling using mathematical functions the component Graph
is supplied to the input (F) of the Evaluate component, the output (r) will return a symmetrical
Of course it's not easy to m anipulate complex equations to get a specific objective, but fortunately
To more easily define m atliem atical functions the component Graph M app er (Param s > Input) can
Graph
m Enabled
□ None
9 Runtime warnings ^
m Bezier
Wire Display > Conic
0
Reverse Gaussian
e Flatten 0 Linear
Parabola
ffi Graft W
B Perlin
d) Simplify
0 Power
Locked &nc
m Sine
Default
Sine Summation
Graph types !►
m Square Root
Help...
The Graph Mapper component replaces the Evaluate component in the previous exam ple. Instead of
defining an equation, a desired function can be selected from the list provided by the Graph Mapper
As for the Evaluate component so for the Graph Mapper, a proper domain must be supplied for the!
function using the Construct Domain component In conjunction with Range. It's Important to point
out that the Graph Mapper must be feed by a num ber of values equal to the num ber of geometries
to scale. Since Range generates N+1 values (where N is the num ber of values defined In the N-lnput),
we must subtract 1 from the num ber of objects coming from the List Length component connected
Nevertheless, the num eric domain Is not the only thing to pay attention to. In fact, the graph has two
"Internal" domains to set. Double-cllcking the Graph Mapper, a window appears and, with reference
The domain A m ust be set according to the values used for the Construct Domain component (In our
Graph Editor
xw
A xm 9 ,0 0 0 0
YKS 1.0000
B Y|11 4^0 0 0 0
^ OaM
Deso^bon Parab^dstrAxjtion
Name Patatx^
4 Graph
IsVaid True
Hm m
Name of graph das«
The domain B can be arbitrarily defined. It controls the extrem es of the list of num bers. In other
words. If B Is set to [1,4] the lower scale factor will be 1 and the m axim um scale factor will be 4. The
two internal domains are displayed In the upper left and In the lower right corners of the Graph
geometric sets.
{0 ;0 )
/ \ 1.97
2.86
/ \ 3.49
/ \|
3.87
4.0
3.87
3.49
2.86
8 1.97
{0;0}
0 3.88
1 3.13
2 2.59
3 2.26
4 2.16
5 2.26
6 2.59
7 3.13
8 3.88
^46
Floor Perimeter
t i— w 1 1o ^
rM H W l io«bi
V
H
FIGURE 4.3
The image illustrate different configurations of a building model as the Graph Mapper changes, affecting the scale
factor for each floor.
4.3.3 Image Sampler component
The component Image Sampler (Param s > Input) is an input component w liicli converts chromatic
Every rectangular picture can be imagined as a bidimensional domain ranging by default between
0 and 1. If a rectangular grid is superim posed onto the image each grid point P - defined by its UV
point A
intensity: 1
point B
intensity: 0
etc., and outputs a value. For instance, the grayscale color model m easures the intensity of a pixel and
outputs values ranging from 0 (black) to 1 (white) with fractional grayscale values in between.
The image Sampler editor - accessed by double left clicking on the component - is used to load an
image, select a coior modei and specify whether to interpolate. The /mogeSomp/er component requires
a set of points with UV coordinates as input, and returns a list of numbers or /nfens/^ values.
Flepath { C:\UMra\Atuii\Defktop\%jK Q
I OK,
For example, a freeform surface and an array of points is set from Rhino. T lie component Surface CP
is used to convert points coordinates from WCS to LCS, allowing the surface is evaluated at the uv
resulting coordinates. The normal vectors (N) are connected to the N-input of Circle CNR. The radius
A geometrical pattern can be obtained by scaling the current circles using a scale factor that reduces
geometries, i.e. a scale factor between 0 and 1. Since the output of the Image Sampler component is a
list of intensity \/a\ues ranging between 0 and 1, the Image Sampler output can be used as scale factors.
To generate the scale factors the output (uvP) of the Surface CP component is connected to the input
of the Image Sampler. The Image Sam pler component outputs a list of values ranging between 0 and
1 according to the sampling of the set grayscale image. The Image Sampler output is connected to
the scale factor Input (F) of the scale component generating a pattern of circles. The initial surface
0*1 .
u .u
65 0,.0 Q
66 0,.0
67 0,.01
68 0,.04
69 0,.07
70 0,.09
71 0..12
Images with pure black areas return null in te n s ity values which are null scale factors. To cull null scale
factors the component Maximum is used to replace every 0 with a different value such as (0.1).
.... .
: : :
• ••
: : :
: : :
: : :
til
9 w w
Jiliniiiin
: : : : : : : : : : : :
: : : :
: : : :
: : : : : :
M ill ]:
:
inn
FIGURE 4.4
Different configurations corresponding to different grayscale images. Bright areas (close to w hite) return values
close to 1 {no scaling), w hile dark areas (close to black) give values close to 0 (m axim um reduction).
Below the results of the combination o f the Image Sampler w\th different transform ations. Each brick
moves and rotates according to a grayscale image. The bricks' gravity points (whose coordinates
were reparameterized between 0 and 1) were used as UV points for the Image Sampler.
JZ
J l X
The Image Sampler a\so works with colored images by using different color m odels. For example, The
RGB color model returns a list of RGB values - or a triplet of values (channels) - ranging between 0
and 255.
Image San^>ler Settings
aO Tol.O
OOTol.O &
™>s |Tfc -I
a™ i r^ fe ;9 i® |0 i0 ‘0 a
Rtepdh I l:NARTH)de^NARCH?V»MI Q
n AA>i<Kiate
I j Saven«fe
RGB values can be split into four channels using the component ARGB (Display > Colour). The
connponent returns the Alpha (A), Red (R), Green (G) and Blue (B) channels. By d e f a u l t o u t p u t s
values range between 0 and 1, the range can be set to [0,255] within the context menu by right-
{0;0} [
0 164,1 11,71
I 186,136,88
2 147,90,52
3 167,118,87
A 196,150,101
5 178,118,69
6 183,135,87
1 183,138,90
8 189,144,85
9 193,142,86
(O.-Oi C
0 164,0
1 186.0
2 147.0
3 167.0
4 196.0
i O,‘ Q3 (
0 0.64
1 0.73
2 0.5 8
3 0.65
4 0.77
n.7
The following exam ple dem onstrates how to generate a variable offset from a flat surface using a
colored image. In particular, the algorithm offsets parts of the surface that correspond to the red
FIGURE 4.5
Variable offset obtained through
the Image Sampler. The algorithm
performs the offset for those parts
of the surface corresponding to red
areas in the image.
4.4 Other transformations: Box Morph
The com ponent B ox M orph (Transform > Morph) uses a reference "pliable" box to deform geometry
to a target box. Box Morph Is likened to Rhino's Cage and CageEdit com m ands.
2. A referen ce b o x {R)
A box which encom passes the geometry to morph. The reference box can be defined by tiie
3. A ta rg et bo x (T)
The Box Morph component transform s the reference box (R) Into the target box (T) modifying the
contained geometry (G). In the following image, the component Center Box (Surface > Primitive) is
Multiple geometries can also be sim ultaneously morphed to primitive or non-primitive boxes. To
morph multiple objects the Bounding Box m ust be set to Union Box mode through the contextual
menu. The target box Is defined by the component Twisted Box (Transform > Morph) which generates
a twisted box from corner points. The bounding points can be defined in G rasshopper or set in
Rhino. In the following example, the points are set from Rhino using the Twisted Box local setting.
<j Geo
In this case, multiple geometries are set from Rhino using the Geometry component. The Bounding
Box component set to Union Box mode encom passes the geometries. The target box is created by
setting eight points drawn in Rhino using the local setting, if these points are adjusted the geometry
4.4.1 Paneling
Paneling extends the Box Morph logic to multiple target boxes. Given an arbitrary surface with a
set of twisted target boxes a surface-panelization can be defined using a single or a set of merged
geometries.
The paneling procedure consists of two steps:
Tlie component Surface Box (Transform > Morpli) generates twisted boxes on a surface
2. Morphing a geometry (G) - encompassed by a Bounding Box (R) - to twisted target boxes (T).
For example, a grid of 20 x 20 surface boxes - as specified by the bidimensional domain - with a
height of 0.5 units are created on the surface using the component Surface Box. The Surface Boxes
Geometry (G)
If random values are connected to the H-input o f Surface Box different heights for the target boxes
will result: yielding a panelization of random height base geom etries (see following images).
FIGURE 4.6
Interesting output can be achieved using a non constant value fo r the H-input o f Surface Box.
C /
1$
ff -
Herzog & De M euron, Beijing National Stadium (Bird's
Tridimensional sl<ins are defined by managing the structure of algorithnnic data; in Grasshopper,
The Data Tree enables complex relationships among objects to be form ed. Thus far, computational
logics have been straightforward and discussing data structure was unnecessary. This part of the
text will elaborate on the basic concepts of using data structure to control form.
The following exam ple will introduce the concept of how data structure controls output. To output
a polyline curve that connects twelve vertices, an algorithm is defined using four triangular surfaces
set from Rhino. The surfaces are deconstructed to extract each Brep's vertices using the Deconstruct
Brep component, then the Polyline component is used to draw a polyline connecting the vertices.
The result differs from the desired final output. The defined logic did not create a single polyline
through the twelve points. Instead as expected, the data structure defined four polylines each with
three vertices. ^
To understand the algorithms hierarchical data output structure, two Panel components can be
connected to the (V) and (PI) outputs of Deconstruct Brep and Polyline components respectively. Two
f0;0}
0 {40.0, 40.0, 0.0}
1 {50.0, 30.0, 0.0}
2 {30.0, 30.0, 0.0}
{0;11
0 {70.0, 4 * 0 . ^ . 0 )
1 (80.0, 30.0, O.OJ
2 {60.0, 30.0, 0.0}
{0;2}
T ilOO.O, 4o'."o, T.’oi
1 (HO.O, 30.0, 0.0}
2 {90.0, 30.0, 0.0}
{0;3}
0 {130.0, 40.0, " o y
1 {140.0, 30.0, 0.0}
2 (120.0, 30.0, 0.0}
Grasshopper stores data according to a Parent-Child logic, which creates a subset for each parent
data path. In the previous definition a subset was generated for each triangular parent surface, and
an item was created for each child vertex. Meaning, the vertices of the triangle 0 are hosted within
data path { 0 ; 0 }, the vertices of the triangle 1 are hosted within the datapath { 0 ; 1 }, etc.
The hierarchy of data structuring can be graphically visualized using a tree-chart, as shown below.
For this reason, subsets of the initial input trunk are referred to as branches.
® ® data items
data Items
vertices of triangle 1 ^ © vertices of triangle 2
@
As already pointed out, the Data Tree is "invisible" when components do not work simultaneously on
multiple data. In those cases the Tree is made by ju st one branch or by the only trunk.
• Branches are w atertight subsets, meaning connections between data hosted in different
branches cannot be established. Any operation performed on a Data Tree will affect
the data stored in every branch. For this reason, the Polyline component cannot create
a single polyline through the entire set of vertices, but four different polylines through the
• Data Tree can be m anipulated to generate specific results. For instance, to create
a polyline through the set of twelve points the Data Tree structure is required to be
information and storing all data inside the trunk {0}. W ires previously graphically displayed as dashed
are converted to continuous w ires after the data is flattened. Flattening is achieved by connecting an
output to theT-input o f the Flatten Tree component. For instance, if the V-output of the Deconstruct
Brep component is connected to Flatten (T-input) and the T-output of Flatten is connected to the
Every component provides the possibility to internally Flatten incoming or outgoing data, by right-
clicking on the specific input/output and selecting Flatten from the contextual menu. When an input
or output data stream is being Flattened a downwards arrow symbol will appear next to the input
or output.
0 {40.0, 40.0, 0.0)
1 iSO. O, 30.0, 0.0)
2 {30.0, 30.0, 0.0)
{ 0 ; 1}
0 {70.0, 40.0, 0.0}
1 {80.0, 30.0, 0.0)
2 {60.0, 30.0, 0.0}
{0 ; 2 )
0 { XOO. O, 40.0, 0.0}
1 {110.0, 30.0, 0.0}
2 {90.0, 30.0, 0.0}
{0;3}
0 {130.0, 40.0, 0.0} {0}
1 U40.0, 30.0, 0.0) o’ {40.0, 40.0, 0.0)
2 {120.0, 30.0, O. Ol 1 (50.0, 30.0, 0.0)
2 {30.0, 30.0, 0.0)
3 {70.0, 40.0, 0.0)
4 {80.0, 30.0, 0.0}
5 {60.0, 30.0, 0.0)
e {100.0, 40.0,, 0.0)
7 {110.0,. 30.0,, 0.0}
8 {90.0, 30.0, 0.0}
dashed wire 9 (130.0, 40.0;, 0.0}
10 { 1 4 0 . 0 , 30.0,, 0.0}
continuous wire 11 { 1 2 0 . 0 , . 3 0 . 0 , . 0 . 0 }
FIGURE 5.1
A " s t r u c t u r e d " f l o w o f d a t a c a n b e i d e n t i f i e d b y a d a s h e d w i r e , w h i l e a f l a t t e n e d f l o w b y a c o n t i n u o u s l i ne.
Bake...
I &
m
Reverw
Fiatt«i
Graft
Simplify
m Expression >
5.1.2 Unflatten Tree
Aflattened Data Tree can be restructured into branches using a guide data structure. Tlie component
Unflatten Tree (Sets > Tree) converts a flattened list input (T) according to a guide Data Tree input
(G), outputting data structured according to the guide Data Tree. The component Unflatten Tree only
operates if the flattened list has the sam e data as the guide list.
{0;0}
0 {40.0, 40.0, 0.0)
1 (50.0, 30.0, 0.0)
2 (30.0, 30.0, 0.0)
(0;1)
0 {70,0, 40.0, o.T)’
1 {80.0, 30.0, 0.0)
2 (60.0, 30.0, 0.0)
(0;2)
0 {ioT.”b, 4oT^,. 0.0)
1 {110.0,. 30.0,. 0.0)
2 {90.0, 30.0, 0.0) {0?0)
(0;3) 0 {4 0 ,o". 40.0, 'oToT'
0 {130.T, 40 .T,. 0.0) 1 (50,0, 30.0, 0.0)
1 {140.0,. 30.0,, 0.0) 2 (30,0, 30.0, 0,0)
2 {120.0, 30.0,. 0.0) 10;1)
0'{70,0, 40.0, O-O”)
1 {60.0, 30,0, 0.0)
2 {60.0, 30.0, 0.0)
(0;2)
o' {100.0,, 40.0, o.o')
1 {110.0,, 30.0, 0.0)
101 2 {90.0, 30.0, 0.0)
0 {40.0, 40.0, 0.0) (0;3)
1 {50.0, 30.0, 0.0) V ,
{iW.T, io’.T, o'.'o)
(30.0, 30.0, 0.0) 1 {140.0,, 30.0, 0.0)
{70.0, 40.0, 0.0) 2 {120.0,, 30.0,. 0.0)
{80.0, 30.0, 0.0)
{60.0, 30.0, 0.0)
{100.0, 40.0, 0.0)
7 {110.0, 30.0, 0.0)
8 {90.0, 30.0, O.Oj
9 {130.0, 40.0, 0.0)
10 {140.0, 30.0, 0,0)
11 {120.0, 30.0, 0.0)
The component Graft Tree (Sets > Tree) creates a branch for every item within an arbitrary list.
Accordingly, a flattened list with N items connected to the T-input of the Graft Tree component will
return a new list with N branches, one branch for each item.
Graft Tree can be used to match disconnected sets of corresponding objects. For example, two
surfaces set from Rhino are connected to the component Deconstruct Brep to access each surfaces
edges. To output four lofted surfaces through the corresponding edges (a-a', b-b', c-c', d-d'), the two
dataflows are required to be grafted, then merged. If the two data flows are m erged and notgrafted ,
Lofiing\N\W be performed through the entire set of curves according to the order: a'-b'-c'-d'-a-b-c-d.
{ Ot Q}
40.0, ¥.0}'
{ 0; 1}
*30.'O, 0 . 0?
10;21
0 (30.0, 30.0, 0.0}
{0;3}
40.0, O.OT
{0} (0;4)
30.0, £1.0}
If the data is grafted before merging, a branch will be formed for each corresponding edge. If the
appropriately structured data is connected to the loft component the desired results will be achieved.
(0;0;0)
0 Line-like Curve
1 Line-like Curve
is m i _ {0;0;0}
0 Line-lik« Curve 0 Line-like Curve 0 Line-like ^urve
1 Line-like Curve 1 Line-like Curve
2 Line-like Curve
0 Line-like Curve (0;0;2)
3 Line-like Curve
{0;0;2) T Line-like Curve
0 Line-like Curve 1 Line-like Curve
<0;0;3} (0;0;3)
TLine-like Curve o'Line-like Curve
1 Line-like Curve
• H H '------ '
01
X
02 ii: R
D3 s
>
“/ a' \"
c
’........................... ................................^
Every component provides the possibility to internally Graft incoming or outgoing data by right-clicl<ing
on the specific input/output and selecting Graft from the contextual menu. When an input or output
data stream is be'mg grafted an upwards arrow symbol will appear next to the input or output.
The component Flip M a trix (Sets > Tree) swaps rows and colum ns in the matrix-like Data Tree. Put
another way, the component Flip exchanges items with branches and branches with items.
For example, three circles set from Rhino are divided into ten parts using the component Divide
Curve. The output points (P) are connected to the PolyLine component V-input generating three
polylines that connect all points of each divided curve respectively. To generate the desired lines
<j Cry c m ip
PI )
tfa u n t I N HT
Initially the Divide Curve's Data Tree has: 3 b ran ch es corresponding to the 3 circles with 10 items
corresponding to the 10 points. The flipped matrix is composed of 10 b ran ches and 3 points for each
branch. The Data Tree can be visualized adding (and double-clicking) Param Viewer {Params> Util).
(0;0) (0;0}2
0 <30207.86, 9134.02, 0.0) 0 {30207.86, 9134.02, O.OJ
I
1 {26973.67, 8083.17, 0.0) 1 {30207.86, 7456.85, 2277.55) 1
2 <24974.83, 5332.0, 0.0} 2 (30207.86, 5683.96, 4640.72} 1
3 (24974.83, 1931.38, O.OJ
4 (26973.67, -819.79, 0.0) 0 (26973.67, 8083.17, 0.0) 1
5 (30207.86, -1870.64, 0.0) 1 (27959.49, 6726.31, 2277.55)
6 (33442.05, -819.79, 0.0) 2 (29001.57, 5292.01, 4640.72)
7 (35440.89, 1931.38, O.Q) {0/2}
8 (35440.89, 5332.0, 0.0) 0 (24974.83, 5332.0, 0.0)
9 (33442.05, 8083.17, 0.0) 1 (26569.92, 4813.73, 2277.55}
(0;if 2 (28256.04, 4265.88, 4640.72)
0 (30207.86, 7456.85, 2277.55} {0;3}
1 (27959,49, 6726.31, 2277.55) 0 (24974.83, 1931.38, 0.0}
2 126569.92, 4813.73, 2277.55) 1 (26569.92, 2449.65, 2277.55}
3 (26569.92, 2449.65, 2277.55) Of'__ ^ 77 1________
5.2 Skins
The following exercises Introduce methods to create s k in s and p a tte rn s on an input NURBS surface
surface. The final output will be a set o f deformed pyramidal fru stu m s" or, in the case of a flat surface,
pyramidal frustum s.
The tridim ensional pattern is created by joining three different surfaces: surface A, surface B and
NOTE 11
A prism atoid is a polyhedron w here all vertices lie In two parallel planes, A prism oid is a prism otoid where parallel
planes host the sam e num ber of vertices and lateral faces are trapezoids. An exam ple o f prism oid is the pyramidal
frustum.
The surfaces denoted as "A" fram e the pyramidal frustum s; the fram e's edges are displayed in the
following image.
The first step in the definition is to set and reparameterize a surface from Rhino using the Surface
"container" component. Then the Isotrim-SubSrf output is deconstructed using the Deconstruct Brep
component to extract the defined faces and edges. To easily identify the Deconstrua Brep output (F) and
(E)two box components are defined and renamed as SubSurfaces and Curves 01 respectively.
Curves 01 (Cre) |)
The four edges of each sub-surface are joined, forming a polyline which is offset coincident to the set
surface using the component 0/ysef on S r f {Cutve > Util). The C-input of the Offset on S//com ponent
requires curves to offset, the D-input the o ffse t d ista n ce , and the S-input the surface or surfaces
on which to perform the offset. In this instance, the sub-surfaces returned by the Deconstruct Brep
connponent are the surfaces on which to perform the offset. The C-output, stored in a container
The following image depicts the red offset curves and the blue sub-surface edges. To create the
Since the output (C) of the Offset on S rf component stored as Curves 02 are joined polylines, the
curves must be exploded to define a loft operation between corresponding curves. The component
Explode Curve (Curve > Util) explodes the polyline to define four edges. The output (S) of Explode
Curve component is stored in the container component Curves 03. To define the lofting sequence,
Curves 01 and Curves 03 are merged using the Merge component. As e xp la in e d in 5.1.3, the inputs
(D1) and (D2) are required to be g ra fted to correlate the data within the two corresponding sets,
The data is also required to be simplified. Meaning, the data tree structure is reduced by removing
overlapping branches. Data can be simplified using the component Simplify Tree (Sets > Tree) or
internally by right-clicking on a input/output and specifying Simplify from the context menu.
i0;0} 1
0 Planar Curve
gr af t m o d e — ^ 1 Planar Curve
(0;11
0 Planar Curve
1 Planar Curve
— ______________
Si mpl i f y m o d e —
The following image, visualizes the change in data structure resulting from the Simplify Tree
component.
||0;0;0;0;0j0!^
0 Planar Curve
1 Planar Curve
2 Planar Curve
3 Planar Curve |«.|i
(0f07l;0;0;0j 0 Planar Curve
f! PUnar C-irve 1 Planar Curve
2 Planar Curve
3 Planar Curve
_
,C,m,ye
_^ i±id 2 H r
|(0;0;0}^
0 Planar Curve 7 Planar Curve
1 Planar Curve
1 Planar Curve
2 Planar Curve
2 Planar Curve
3 Planar Curve 3 Planar Curve
{!)
Q Planar Curve
f! PUnrir ■f.u£ve.....
The properly formatted data is lofted returning the set of surfaces "A". If the offset distance input (D)
of the Offset component is modified the fram es width will param etrically change.
The surfaces denoted as "B" form the lateral faces of the pyramidal frustum s. The pyramidal frustums
faces are defined by a loft between data set Curves 03 and an additional data set Curves 04. The data
To define the data set Curves 04, the mid point of each sub-surface is calculated using the component
Evaluate Surface, with the input slot (S) set to reparam eterize, and the input (uv) defined by an WD
Slider set to (0.5;0.5). The Evaluate Surface component output (P) calculates a set of points that are
collected by the container component PointsOI. The data set Curves 03, is scaled usingthe component
Scale by an input factor (F) specified by a Number Slider. The result is illustrated in the following
picture.
Then the scaled Curves 03 are translated according to the surface norm als, defined by the output
(N) of Evaluate Surface component. Scalar multiplication Is performed to define the translation. The
FI
The pyramidal frustum s faces are defined by lofting Curves 03 and Curves 04. The curves are required
defined by the component Edge Surface (Surface > Freeform ). The four defining edges are extracted
from the data set Curves 04 using the List Item component, by zooming-in on the component and
adding four output param eters as shown below (alternative to the standard method based on
Cuives 04 (Cry)
The desired output can be manipulated param etrically by changing the input param eters, such as:
the offset distance, the scale factor, the translation factor or even the initial surface.
Input param eters are arbitrary data that can be defined manually or alternatively linked to other
param eters. For exam ple, an attractor point can be used to vary the offset distance that defines the
fram es width.
To create an attractor point, a point is set from Rhino using a Point container component. The distance
is measured between the centers of the sub-surfaces. Points 01, and the set point. Since the calculated
distances will be greater than the frame's width, the numbers are remapped such that the range of
numbers is within a defined domain; in tliis case tlie range is set between 0 .2 and 1 .2 units.
The distance output (D) is flattened, then connected to the N-input of the Bounds (iViaths > Domain)
component which calculates the source domain for the data set. The input (V) of the Remap Numbers
component (Maths > Domain) is connected to the flattened output (D) of the Distance component,
the S-input of Remap Numbers is connected to the l-output of Bounds, and the T-input to the target
domain (l-output of Construct Domain). The output (R) of the Remap Numbers component is grafted
and connected to the D-input of Offset Sr/com ponent, replacing the Number Slider previously set.
The resulting responsive fram e is controlled by an external point. As the distance between the
attractor point and the sub-surfaces decreases the fram es width will also decrease.
attractor point
5.2.2 Hexagonal based pattern
The second example will create a tridimensional pattern on a surface by m eans of a hexagonal subdivision.
The procedure is similar to the first example, however there are several pattern based differences.
The first difference is that initial surface has an uneven grid of isocurves. The uneven set of isocurves
will result in a non-regular hexagonal grid, with sm aller hexagons around the surfaces center and
component Hexagon Cells (LunchBox > Panels). The component requires a target surface and a
The Hexagon Cells component's output (Cells-output) returns single hexagonal cells, each defined as
a hexagonal closed polyline, while the Centers-output returns the centers of each closed polyline.
Since the grid is applied to a rectangular surface the border-cells are not hexagonal; instead the
T Line-iike curve
4 Line*like Curve C
0 Polyline Curve {0;0;6)
1 Polyline Curve "o’*L"ine-like Curve
2 Polyline Curve 1 Line-like Curve
\ P filvlin A Pnru^ 2 Line-like Curve
4 SurfaceM(Srtl 3 Line-like Curve
Cufves 01 (Cry) ioson)
HeeeEl leo )> - ^
M Points 02 lPt)~)> *
0
1
Line-like
Line-like
Curve
Curve
2 Line-like Curve
3 Line-like Curve
4 Line-like Curve
5 Line-like Curve
The first step in the definition is to cull the non-hexagonal cells (i.e. cells with less than six sides) from
the data set defined by the Hexagon Cells output stored in the container component Curves 01. To
remove the cells with less than six sides, a conditional Boolean statem ent is defined.
To count the num ber of sides comprising each cell, the cells are exploded using the component
Explode Curve. The list length is calculated for each branch of the Data Tree using the List Length
component. The resulting lengths: four, five or six, are tested against the condition X = 6 using the
Evaluate component. The resulting output (r) of the Evaluate component will be a list of Boolean
statem ents which define the P-input of the Cull Pattern component. The culling list input (L), or list
The data contained in the Curves 01 container component has no branches, only a trunk; this is
graphically visualized by the continuous wire. While the output of the Evaluate component is a Data
Tree with multiple braches, graphically visualized by the dashed wire. In order to match the data
structure, the P-input o f Cull Pattern component is required to be flattened. The output o f Cull Pattern
component, containing only hexagonal cells, is collected by the container component Curves 02.
1/
0 5 QH 0 False 1
|0;0;6} (I {Q; 0; 61
o ’ 4^ 0 False
{0;0;7} 1 '*>< f 0; 0; 7I
o'6 0 Tr ue
1
fO;0;8) {0;0;8} 1
T'e 0 Tr ue
Similarly, the centers of the non-hexagonal cells are culled by another Cull Pattern component; with
L-input connected to the Centers-output of the Hexagon Cell component collected as Points 01. The
The remaining procedure is sim ilar to the first exam ple. The hexagonal fram e is achieved by lofting
between Curves 02 and Curves 03. Curves 03 are obtained by scaling Curves 02. Also in this case the
Points 02 (Pt)
The next step is to generate the lateral faces of the hexagonal frustum s; by scaling Curves 03 and
then translating the scaled curves according to the surface norm als. The resulting curves, stored as
Curves 05, are the lower edges of the hexagonal frustum s. To create the lateral faces a loft operation
Curves0 5 (Crvjp
m
The result is illustrated below.
The caps are defined differently from the previous exam ple. The caps have six edges and for this
reason they cannot be created as a single surface without using the Patch component. To generate
the cap a loft operation is performed between curves 2-4 and 1-5 respectively (see image below).
Since the hexagon cells have an anticlockwise direction, curve 2 and curve 4 have opposite directions
as well as curve 1 and curve 5. If lofted, the resulting surface will be twisted.
:a ,
T*? C
For this reason, curves 1 and 2 m ust be flipped using the component Flip Curve. The following images
Curves 05 (C iv ) |m
Similar to the previous exam ple, the fram es width can be controlled by an attractor point. In this |j
h'
case, the remapped distance values are used as scale factors for the first Sco/e component. The two M
Domain values A and B are the minimum and m axim um fram e width respectively.
(0;0) C
0 2 4 .23
1 2 2.04
2 20.84
3 21.06
4 23.38
5 25.99
6 19.66
10;0} (
0 0.75
1 0.7
2 0.67
3 0.67
4 0.73
5 0.79
6 0.64
The Masharabiya shading system, based on a traditional Arabic shading lattice-worl<, is one of the
primary features of the competition winning entry for the ADiC headquarters towers in Abu-Dhabi
developed by Aedas'^.
FIGURE 5.2
Abu Dhabi investm ent Council H eadquarters - responsive facade by Aedas.
A sim p lified alg o rith m u sed to d e fin eth isre sp o n sive facad eisacce sib le
NOTE 12
http://www.aedas.com /Research/ADIC-Responsive-Facade
5,2.4 Weaving
Using strategies developed in previous sections a tridim ensional weaving "warp and weft" pattern
can be defined on a set surface with a specified thread count in both U and V directions.
In general, digital weavings are defined by translating a grid of points according to alternating positive
and negative surface normal vectors. The first step in the weaving definition, is to generate a grid of
points on a set reparam eterized surface using the Divide Surface component. The defined points are
then translated using a recurring list of scalar factors multiplied by surface normal unit vectors.
WARP
The output of the Divide Surface component is structured with U+1 branches gathering points in
columns according to the V direction (warp). Due to this structure, the translation repeats similarly
for each column: the start points of each thread are raised, differently from a weaving, where the
start points of each thread are alternated (the first raised, the second lowered and so on).
For this reason the P-output of Divide Surface is required to be flattened. The flattened list of points
Points 01) are then translated using the Move component. The translation vectors are defined by
multiplying a repetitious scalar list of alternating positive and negative values by a list of normal
The weaving warp is created by interpolating a line through the G-output of the Move component
using the Interpolate component. Since the points data structure has been flattened the Interpolated
curve is defined as a single curve tlirougli the entire set of points: an undesired result.
In order to interpolate a curve through each V direction column, the data must be unflattened using
the Unflatten Tree component. The Divide Surface output Points 01 is used as the guide Data Tree
structure input (G-input of Unflatten Tree). The resulting data is structured according to the initial
Data Tree, each thread is created by connecting the points in each (U+1) column in the V direction.
V c
D £
V L !
P c
K D
00.3
WEFT
Using a sim ilar logic the weft can be defined in the U direction. It is not necessary to repeat the entire
algorithm to define the we/it, instead flip the initial Points 01 matrix and copy the end of the algorithm
as shown below.
Since the warp and weft threads should never touch; the translation vectors of the weft must have
the opposite sense as compared to the translation vectors of the warp (Negative component).
If the Negative component is not used to define vectors with opposite sense; the warp and weft
interpolated curves will form a curve network. The curve network can be used to create a surface
components structure data to acliieve desired results. For exam ple, a series of 24 points randomly
distributed in a 3 x 5 grid can be ordered to define a surface using the component Surface From
20 21 22 23
16 17 18 19
15 13 12 11
14 2 10
t u c o u a ‘P 60
In order to get a correct surface using Surface from Points, points need to be organized in rows or
columns. If points are stored in a random way (as in our case) the resulting surface might look like
the following.
FIGURE 5.3
When points are not organized in row s or colum ns, Surface From Points com ponent could generate incorrect
results.
A strategy to reorganize the points into rows and colum ns is to define the sequence based on each
1. Sorting the points according to the x-axis, yielding 4 different colum ns of points;
STEP1
The component Sort List (Sets > List) sort points according to each points position on the x-axis
or by the x coordinate. A-input is the list of points to rearrange, the K-input, defined by using the
FIGURE 5.4
Sorting points according to the x-axis.
As result, the first set of points (0 - 5) are random ly hosted with respect to their y position within the
first column, the second set of points (6 -1 1 ) are randomly hosted with respect to their y position
18
12 19
16 22
15 23
11 14 20
10 13 21
The output (A) of the Sort List component is a flattened list of points hosted in a trunk. The data
is restructured into 4 branches with 6 index items per branch using the component Allocate N.
The component/\//ocofe N, part of the T re e 8 plug-in developed b y jis s i Choi, is available for free
download'^. The component ;4//ocof/on N splits a flattened list into branches. In the example below 6
(0;0)
0 Referenced Point
1 Referenced Point
2 Referenced Point
3 Referenced Point
4 Referenced Point
5 Referenced Point
{0;1}
>•=<
o' Referenced Point
1 Referenced Point
2 Referenced Point
3 Referenced Point
4 Referenced Point
5 Referenced Point
i0;2f
0 Referenced Point
FIGURE 5.5
Splitting data using the Allocate N com ponent. Each branch is related to a different colum n of the points grid.
branch {0;0}
NOTE 13
Trees can be download on Grasshopper's w ebsite. The com ponent is a small part of STRAUTO, a param etric struc
tural modeling tool based on G rasshopper, SAP2000, MIDAS. W ebsite: http://tree8.chang-soft.co.kr/
STEP 2
The points returned by the Data-output of the/4//ocofe A/component is structured into 4 columns of
six points randomly organized with respect to they-axis. The final step is to sort the points according
to t h e y coordinate.
FIGURE 5.6
Points sorted according to the y-axis.
The points organized sequentially with respect to the x and y coordinates can be used to define a
surface by means of the component Surface From Points. The input (P) of the Surface From Points
If we change the point's z coordinate position, the algorithm will return a surface through the
adjusted points.
6 smoothness
"...there are enough indications right now that
subdivision softw are pacl<ages are going to be
relevant in the next ten years''.'"^
Greg Lynn
NURBS modeling is based on structuring m athematical curves or points to build surfaces. This
method of surface creation is not always the best procedure, especially for freeform geometries.
For example, the coffee table and the centerpiece shown on the following pages could be defined by
NURBS surfaces; however, because of the surface complexity, another method relying on polygon
meshes can be employed: the Subdivision Surface Modeling (SubD). This is a technique developed
in the late 1970's and used extensively within the animation industry for character animation. The
SubD method is based on the defining a schem atic polygon mesh which is iteratively refined using
specific algorithms. This technique allows users to model low-polygon m eshes and generate smooth
(high face count) m eshes. The SubD method enables a level of sm oothness which is quite difficult to
obtain using NURBS techniques. Though NURBS are the dominant standard for CAD and engineering
applications, SubD is becoming increasingly im portant In several fields such as industrial design.
NOTE 14
5. Converse, II progetto digitale per la costruzione. Cronache di un mutamento professionale (Maggioli, 2010), 148-153.
FIGURE 6.1
Blossom Table, Arturo Tedeschi (2011).
FIGURE 6.2
Centerpiece, Arturo Tedeschi (2011).
6.1 NURBS and Polygon M eshes
Polygon modeling is conceptualy different from NURBS modeling. Each method has strengths and
Each curve, surface or freeform geometry discussed so far, w hether created in Rhino or by
Grasshopper components, are NURBS geometries (see chapter 3). NURBS are defined by a
mathematical form ulation which connects degree, control points, weights and knots in order to
accurately represent any geometric object. Moreover, NURBS geometry is a single geometric entity.
NURBS geometry can be modified by manipulating the object's control points. When control points
are displaced or their relative weight is changed, a local deformation will result. The computation
of coordinates is based on one or more param eters: f for curves and u and v for surfaces. NURBS
surfaces, since they are based on mathematical form ulations, define flexible and accurate freeform
meshes are not single geometric entities, but they are made through a set of adjacent polygons
wliich determines the global shape. A mesh is not actually smooth, the greater the num ber of
Figure 6.3
A polygon mesh is not actually a smooth geometry: the sm aller are the polygons (below) the smoother is the mesh.
6.2 Polygon m eshes
The elements of a polygon nnesh are:
Vertices: are points defined in the World Coordinate System by relative coordinates (x,
y, z). The vertices provide positional information and affect the shape of the polygonal
geometry;
Faces: are constituted by a set of vertices and edges and, in general, they are formed by
triangular or quadrangular polygons. It's im portant to point out that faces are usually
non-planar polygons. Only triangular meshes can be guaranteed to have planar faces
(three points are always coplanar) while quadrangular m eshes are not guaranteed to be
planar. Q uadrangular m eshes with p lan arfacesare called PQ M eshes (Planar Quadrilateral
The connection-order of the vertices determ ines the orientation of the face, distinguishing the front
face from the back face. Edges that connect vertices in the counterclockwise direction are front
facing. Adjacent faces are defined as com patible if they have the sam e orientation. A mesh is called
V3
For each face a norm al vector can be defined. A front-facing mesh lias an outgoing normal vector,
while a back-facing mesh has an ingoing normal vector. As follows, an orientable mesh has normal
FIGURE 6.4
Two orientable m eshes: the norm als are oriented according to the sam e direction.
FIGURE 6.5
Anon-orientable m esh.
6.2.1 Geometry and topology
A mesh is basically a geometric entity defined by a collection of points that determ ine its geometry,
as well by the connection-logic that determine its topology. For instance, in figure 6.5, two mesh-
boxes having the sam e vertices but a different connection-logic (topology). Conversely, image 5.6
illustrates two mesh-boxes with the sam e topology, but different geometry.
FIGURE 6.6
Two mesh-boxes with the sam e geom etry but different topology.
FIGURE 6.7
Two mesh-boxes with the sam e topology but different geom etry.
6.3 Creating m esh es in G ra ssh o p p e r
Several Grasshopper components are used to create m eshes. Excluding mesh primitives (plane,
box, sphere, ect.) which can be defined using a single component, there are three main strategies to
topology. The most basic mesh is a single triangular face with edges defined by three vertices: 0 ,1 ,
2.The component Consfrucf/Wes/? (Mesh > Primitive) is used to build a mesh. The component has two
main inputs: (V) and (F). The V-input is defined by a set of three vertices, and F-input is defined by
the component Mesh Triangle (Mesh > Primitive) which specifies the connection order i.e. the mesh
topology. A is the first vertex specifying point index 0, B is the second vertex specifying point index 1
The above definition describes a three vertex triangular mesh with an anticlockwise direction. To
visualize the mesh edges the Preview IVIesh Edges option must be activated from the Display menu. If a
fourth vertex is added to the list of set points, a new face will be generated by properly defining the mesh
topology. In order to create two compatible faces the connection-order has to be set as follows:
Face 1 : 0 , 1 , 2
Face 2: 2 , 1 , 3
In this case the A-input, B-input and C-input are all fed by two values as shown in the following
algorithm:
If the second face vertices are connected in the clockwise direction a non-orientable polygon mesh
will result. Meaning, if the connection-order is set as follows, the face will be oriented in the opposite
direction:
Face 1: 0 ,1 , 2
Face 2: 1 ,2 , 3
Grasshopper displays a non-compatibility warning by chrom atically differentiating that two adjacent
faces. The shading graphically represents the orientation: front (clear face) and back (dark face).
As follows, a triangular mesh with three faces can be created by setting five vertices topologically
defined as follows.
Face 1 :0 ,1 ,2
Face 2 :2 ,1 ,3
Face 2 :3 ,1 ,4
Since the three faces have anticlockwise-orientation an orientable mesh made up of three triangular
faces results.
To create a quadrangular mesh face, the input (F) of the Construct Mesh component must be satisfied by
the component Mesh Quad (Mesh > Primitive). The Mesh Quad component has four inputs to specify face
topology and operates similar to the Mesh Triangle component. For example, to create a quadrangular
mesh face, four vertices are set and connected according to the anticlockwise topology rule.
< rir>
Im n r jo o rA f— ^
1Corner 10 )>— < B x»
to F
t'e S ffiif'C l 2^ t> ^ C <y
D
fC orner DJ —
By adding two additional vertices to the set list of points, two mesh faces can define an orientable
Face 1 :0 ,1 ,2 ,3
Face 2: 1 ,4 , 5, 2
< CZ3
[fc fn e rn | oo
1U W * I »1
1❖
tm m rl 4 O
15212314^ 1 2 0
5 0
['Corner 0 | 3 0
[i 'i M 2 0
Mesh topology specifies the connection order of vertices to define a mesh face. This method can be
applied to small num ber of points or repeating logics. However, applying this technique to a large
Alternatively, triangulation algorithms are used to define triangulated m eshes for arbitrary sets of
points. Triangulation algorithm s m inim ize differences between triangles in order to get a
pseudo-regular mesh, avoiding skinny triangles. In fact, skinny triangles can lead to inaccurate
results if the mesh is used to calculate sim ulations or conduct analysis such as particle-spring
systems (see chapter 9) or finite elem ent method (FEM) analysis.
FIGURE 6.8
The image show s a m esh form ed by skinny triangles. This l<ind of m esh is usually considered "bad" for sim ulations
or analysis.
Several algorithms can be used to compute triangulations. The D elaunay algorithm , named after the
mathematician Boris Delaunay, also known as D elaunay triangu lation is one of the most popular
The Delaunay triangulation connects an arbitrary set of points by a geometric procedure that
maximizes the minimum angle of triangulation, so that the resulting mesh tends to avoid "thin"
triangles. The following figure com pares the Delaunay triangulation logic to an arbitrary triangulation,
Po Po
Pa P3
The Delaunay algorithm creates the triangulation "choosing" triplets of points that meet the following
rule: once defined the circumscribed circle {Delaunay drc\e) through three vertices of the same face
(P„, P,, Pj) the Delaunay circle through P^, P,, cannot contains other points inside.
P3 P3
The component Delaunay Mesh (Mesh > Triangulation) generates a triangular mesh according to
the Delaunay algorithm for a series of defined points (P). The component's input (PI) is the plane or
Pt !> = = <
:i- |
FIGURE 6,9
The Delaunay M esh algorithm applied to a planar set of points.
In the following page you can see a tridim ensional pattern get from a freeform surface using a
Delaunay algorithm. As first step a triangular grid is created using the Triangle panels B / TriB
component provided by the Lunch Box plug-in. For each triangle the centroid is calculated and
subsequently moved according to the surface's normal vectors. The Delaunay algorithm is performed
on the three vertices of each triangle merged with the translated centroids. The Delaunay Mesh
component composes the vertices using the defined planes into a collection of meshes with 3 faces.
6.3.3 Creating m eshes by a NURBS to m esh conversion
Meshes can also be defined from a base NURBS surfaces. The component Mesh Surface /Mesh UV
(Mesh > Util) converts a NURBS surface into a Quadrangular Mesh by specifying the num ber of
quads in U and V directions. To display the mesh edges enable the Mesh Edges option (Display >
Util) available after installing the Mesh Edit plug-in, developed by [uto] (Ursula Frick and Thomas
Grabner).
Pvw i 10«]
Iw j 10«|
As discussed in section 6.2, triangular meshes are always planar, while Quadrangular meshes are
planar only under certain circumstances. For instance, rotational and translational NURBS surfaces
return planar quadrilateral meshes (or PQ Meshes) when converted using the component Mesh UV.
sealon curve
translational surface
To test for planarity the meshes edges are extracted using the component Foce Boundaries (Mesh>
Analysis) returning a boundary polyline for each face. Each boundary polyline is tested for planarity
using the component P/onor (Analysis > Curve). Alternatively, the Boundary Surfaces component can
be used to test for planarity, since by definition the component will draw a surface only if the input
[uCountj 0 6
> S ■1
M )—<
H U
{0;0} Q
o' True
1 True
2 True
3 True
4 True
The NURBS to Mesh conversion can also be performed by specifying topology, as the definition
below illustrates.
{0 j0 ;0 }( ]
0 {- 6 5 .8 , - 3 3 . S2,. 0 . 0 }
1 { 1 5 .6 6 , - 3 3 .5 2 ,- 0 . 0 )
2 { I S .66, -1 -9 4 , 0 .0 }
3 { - 6 5 .S, -1 -9 4 , 0 .0 }
[V Count-j {OiOfl}
0 f - 6 5 .8 . - 1 .9 4 . 0 .0 >
{Oi
, tesh (V:40Q
An initial A set surface is divided into sub-surfaces using the Isotrim component. The Deconstruct
Brep component extracts the four vertices from each sub-surface, to define (in conjunction with a
specified topological order) the Construct Mesh component, as discussed in 6.3.1. The result is set
of quad meshes which can be joined into a single mesh by the component Mesh Join (Mesh > Util).
Alternatively, Jo/n Meshes and Weld (Wb > Extract) can be used to join m eshes and weld coincident
vertices, as specified by a Boolean togg\e. Join Meshes and Weld is a part of the Weaverbird plug-in,
NURBS to mesh conversion is compatible with u n trim m e d surfaces (see 3.5), since untrimmed
surfaces contain a rectangular isogrid that can be converted into a set of quad meshes. Unlike
untrimmed surfaces, trim m e d surfaces are not compatible with the NURBS to mesh conversion
method. Trimmed surfaces converted using the Mes^ Surface component will return a polygon mesh
that approxim ates the original boundary geometry. Trim m ed surfaces converted using the Mes/iS/'ep
(IVIesh > Util) component will return a polygon mesh that preserves the original boundary geometry
but allows for thin triangles. The NURBS to mesh conversion method for atrim m ed surface must
be considered on case by case basis; a possible strategy to convert a trim m ed surface into a mesh
is summarized as follows:
4. Dividing the lines into equal parts and connecting the resulting points with a set of
polylines;
5. Splitting the initial surface using the network of lines obtained in step 3 and step 4, to
6. Extract the sub-surfaces' vertices and create the mesh relying on topology method.
surface) associated with any given input mesh. SubD algorithms process an input mesh and generate
^ an output mesh that is closer to the limit surface. Depending on the type of the input mesh (triangular,
quadrilateral etc.) we must use a different SubD algorithm. We will particularly focus on two method:
meshes are generally subdivided using the Catmull-Clark algorithm. Both algorithms are part of the
( plug-in W eaverb ird developed by Giulio Piacentino'^ The plug-in is available for free download
from the following website: www.giuliopiacentino.com . After installation a new tab (Wb) will be
accessible. Weaverbird's toolbar allows users to access components to perform subdivisions and
transformations as well as define polygonal primitives and extract main elements from a mesh.
A ^ A A
FIGURE 6.10
Weaverbird com ponents toolbar.
NOTE 15
Giulio Piacentino, architect, graduated from Politecnico di Torino, continued his education at the University of
Technology of Delft, Holland, then began a co-operation with NIO Archltecten. He currently develops for McNeel
and teaches at geom etrydepth.com . He has trained students In geometry all around Europe.
6.5 Subdivision of trian g u lar m esh es: Loop algorithm
The Loop algorithm is an iterative subdivision method for tria n g u la r m eshes, developed by Charles
Loop'*’ in 1987. For every edge in the source mesh, the algorithm adds a new vertex at the mid
point. The mid points are connected and every triangle Is replaced by 4 sub-triangles. Each iteration
of the Loop algorithm approaches the limit surface, i.e. the surface defined by Infinite iterations.
The num ber of iterations is counter proportional to the change in geometry. As a result, only a few
FIGURE 6.11
Loop subdivision scheme. Each triangle is divided into 4 sub-triangles, adding new vertices in the middle of each edge.
The Loop algorithm is performed by the component wbLoop (Wb > SubD). The M-input is the mesh to
subdivide, the L-input the num ber of subdividing iterations and the S-input specifies how to treat the
naked edges of the input m esh. The num ber of iterations can vary from 1 to 3. Generally, a simple
and schematic input mesh will yield a more refined and polished output mesh.
NOTE 16
C. Loop, "Smooth Subdivision Surfaces Based on Triangle", M.S. Mathematics thesis. University of Utah, 1987.
For example, a triangular mesh set from Rhino (previous image) can be subdivided using the
following definition. The L-input varies from 1 to 3 illustrating the iterative refinem ent of the mesh,
5-input is set to 1 {Smooth) and as a result the naked edges tend towards a spline.
input mesh
Loop subdivision.level 2
M
lH o
Loop subdivisionjevel 3
If the S-input of Loop component is set to 0 (Fixed) the naked edges will be fixed and do not move
from the original position, 1 {Smooth) the naked edges tend towards a spline, or 2 (Corner Fixed) the
naked edges tend towards a spline and two vertices are fixed. The three types of naked edge options
As we previously discussed a refined mesh can be generated from a simple input mesh using the
Loop subdivision algorithm. The Loop SubD algorithm also works for meshes with holes. Once the
mesh is subdivided the hole, as dem onstrate below, will become pseudo rounded.
6.5 Subdivision of quadrangular meshes: Catmull-Clark algorithm
The Catmull-Clark is an iterative subdivision algorithm for quadrangular and triangular meshes,
developed by Edwin Catmull and Jim C lark'' in 1978. The algorithm iteratively adds new vertices for
FIGURE 6.12
Catmull-Clark subdivision scheme.
The following image, displays the final result of converting the tridim ensional NURBS skin - created
inthechapter 5 - in t o a smooth and continuous polygon mesh using the Catmull-Clark algorithm. As
explained in 5.2.1 the final skin is composed of three sets of surfaces: the fram e (sur/ocessef 07), the
lateral faces {surfaces set 02] and the lower faces (surfaces set 03). Before subdividing the surfaces,
each of these surfaces must be converted into a mesh using the component Mesh Surface.
FIGURE 5.13
Smoothing a tridim ensional skin by a subdivision strategy based on the Catmull-Clark algorithm.
NOTE 17
E. Catmull and J. Clark, Recursively generated B-Spline surfaces on arbitrary topological meshes, Computer Aided Design, 1978.
The component Mesh Surface requires a specified num ber of quads in U and V direction. When
converting a single surface the num ber of U and V subdivisions is arbitrary. Conversely, for multiple
merged surfaces, the num ber of quads in U and V direction should be set so that edges always
qH
When a set of contiguous m eshes have T-nodes (image below), they cannot be w elded correctly.
Under this condition, the subdivision algorithm operates on each individual disconnected mesh.
If the U and V count is consistent such that the nodes can be welded, the subdivision algorithm will
operate as expected.
If the three mesh nodes align and can be welded, the component Join Meshes and Weld (Weaverbird
>Extract) can be used to create a single mesh that can be smoothed by the component Weaverbird
set 03. Mesh Surfaces m ust be compatible in order to be joined and welded, as discussed in section
(6.2). If the surfaces are not compatible a shadow will appear along the mutual edge, graphically
displaying an error.
By flipping the faces created from surfaces set 03, the faces will be compatible and can be joined, welded
and then smoothed. Similar to the Loop component the M-input of the Cofmu//-C/ort component is the
mesh to subdivide, the L-input the number of subdividing iterations and the S-input specifies howto
FIGURE 6.14
The final mesh resulting from the subdivision operated by the Catm ull-Clark com ponent.
The subdivision strategy developed in the previous exam ple can be applied to the hexagonal skin
discussed in 5.2.2. The following image displays the hexagonal skin before and after subdividing
The Voronoi diagram , named after the mathematician Georgii Voronoi, is a decomposition of a
metric space according to proxim ity criteria. Given a specified set of n points S (S,, S^, ..., S„), the
Voronoi diagram for S is the decomposition of the bidimensional space which associates a region
V(S.) called Voronoi cell, to each point of S, so that all the points of V(Sj) are closer to S, than any
other point of S. The Voronoi diagram has practical applications in different fields, from physics to
city planning (territorial division based on distances from a specific center). Such a diagram has also
The component Voronoi (Mesh > Triangulation) creates a planar Voronoi diagram given a set of
Similar to previous exam ples a Voronoi skin can be created from a planar Voronoi diagram. The
procedure is to define a set of pyramids to smooth by a subdivision algorithm. Each pyramid has a
to return the discontinuity points or the vertices that define each Voronoi cell. The discontinuity
component creates a branch for each cell with n items depending on the num ber of discontinuity
points for each cell. Next, the centroid of every cell Is translated in the negative Z direction. The
discontinuity points and the translated centroid points are merged into a single list, with input (D1)
The polygon mesh defined after triangulation is not a single joined and welded mesh, instead it is
sE
[rievail 03
To create continuity between the unique meshes the M-output of the Delaunay triangulation
component must be joined and welded using the component Weaverbirdjoin Meshes and Weld, with
input (M+) set to flatten. The final result is shown in the following images.
Such a strategy can be also applied to non-planar Voronoi diagrams which can be achieved using
plug-in software or relying on several strategies. One of thenn is based on remapping (see 2.5). As
first step we create the Voronoi on the plan and then we remap Voronoi's discontinuity points
(D/scont/nu/^component) in a range between 0 and 1 (Remap Numbers component). Since the points
of a reparameterized target surface range between the same domain, we can use Evaluate Surface
and Polyline to reproduce the Voronoi diagram onto a freeform surface. The complete algorithm is
shown below.
5.6.2 Fading pattern
The final example combines a subdivision algorithm with the Im age S am p le r component (4.3.3),to
Similar to previous exercises, a bi-dimensional grid is generated from a NURBS surface. The Lunch
Box plug-in component Diamond Panels (LunchBox > Panels) outputs quadrangular and triangular
surfaces; the first step in creating a fading tridim ensional pattern is to extract the surface vertices
❖ 23
rwiwionri ❖ 11
Next, the centroid of each surface is translated according to a scalar factor multiplied by the surface
normal unit vector. The four bounding vertices and the translated centroid for each face are merged into
a single Data Tree branch. The component Delaunay Mesh creates a mesh pyramid from each branch,
To create a fading tridim ensional pattern a non-constant centroid translation is required. As
displayed below the Image Sampler component can be used to provide non-constant scalar factors.
35 0.2549
36 0.5647
37 0.6353
0
38 0.3804
39 0.0314
40 0.1059
41 0.4706
The resulting pyramids display an error because of the different orientations of each pyramid. To
correct this fault a plane m ust be defined for each diamond-surface using the component Plane
Wormo/(Vector > Plane); with input (Z) defined by the output (N) of the fi/o/t/ofe St/r/oce component.
The calculated plane for each surface output (P) is connected to the grafted input (PI) of the Delaunay
Mesh component. Grafting is required to match the outgoing data of the Merge component.
35 0.2549
36 0.5647
37 0.6353
Q
38 0.3604
39 0.0314
AO 0.1059
41 0.4706
After properly structuring the pyramid data to triangulate, the output of Delaunay Mesh component
is merged with the second output (Triangles) of the Diamond Panels component, to define regular
edges. The final step is to smooth the flattened list of joined and welded m eshes using the Catmull-
L 0
S
V Count i
y # # # #
# # # # y
* ^ ^ S
>
6.6.3 Strategy: cull adjacent faces
Complex shapes are often composed of an aggregation of mesh-boxes, as shown in the image
below. Once the boxes are joined together, internal overlapping faces can be removed according to
FIGURE 6.15
Often we need to remove the internal faces of a joined mesh made up of mesh-boxes.
® L-
F
w
1
25 36
26 37 Q
27 -1
28 -1
29 42
FIGURE 6.16
Cull Duplicates com ponent culls points that are coincident and gives us the Index of non-overlapped faces.
Digital informing creativity
Ludovico Lombardi
Le a d A rc h ite c t a t Z a h a H adid A rc h ite c ts
The relationship between the tools used to investigate space and the way we understand space,
and therefore the way our mind engages the creative process of designing, is a constant dialectic
and dynamic process. The influence of the tools, understood both as theoretical researches and,
in this case, as computational platform s, is marking the avant-garde experim entations in today's
Throughout history theoretical and technological research has influenced the creative mind of
architects and artists, and the technical progress informed in a broader way in a mental set up
that informed and reconfigured artist and architect's creativity. The theorizations of the perspective
system triggered a visual and spatial revolution that defined the Renaissance period spatially both in
its physical and intellectual spatial articulation and organization. In the same way the parallel rules
defined the modernist w ay of understanding and designing spaces. The sam e influence is visible
The great advantage of computational design is not cad based system s, but the possibility to engage
with generative system s, understood as generic code based system, able to m anifest them selves in a
dynamic and adaptive w ay based on the basic codes and param eters that define them . If generative
systems allow designer's creativity to redefine shapes, form s, configurations and organization
systems as relational, it is also reflects in a new aesthetic register, the aesthetic of relations or the
The sublime is derived by an aesthetic that is the result of forces applied into a generative system,
which are legible in the configurations and variations resulting by the system itself. Examples of this
aesthetic are present in different fields and different domains, from the sublim e aesthetic of a flock
of birds in the sky constantly reconfiguring and morphing in new form ations, to the gothic constant
morphing of the sam e elem ent from column to vault nodes or ornam ent in a continuous way, or the
While none of the exam ples described above necessitate computational design to manifest
themselves, the legibility of their sublim e aesthetic remain true to what I was trying to define as the
new aesthetic informed by computation design. Today's avant-garde designers use computational
tools to manage the complexity present in natural system , as in the gothic or as in Ruskin paintings. It
is also the tool that allows to negotiate the complexity of contem porary heterogeneous and dynamic
society of multitude.
On the other hand there is a superficial and Manneristic overproduction of computational based
designs that are not relevant to the above discourse, but that can be defined as a simplistic
experim entations triggered by the easy access of the new code based computational platforms.
This is probably the most pertinent way to explicitate the need and the role of a designer, with
its sensibility and its rational. The creative process is enriched and informed by computational
tools, but those do not substitute the role of the creative mind. The misinterpretation of generative
system, as not driven by the designer creativity, but in the specific ju st by computational tools, is
the triggering factor of most of today's criticism to computational based design. Understanding tinat
design is relational first than even its physical m anifestation, is the paradigm that brings back the
role itself of the designer creativity while coding the relations that generates the outcomes of those
complex system.
The repositioning of the role of the designer in the above statem ent hints also to the counterpart of
the new design approach, which is the distinction between designer and technical virtuoso. While
both have different merits, one does not implies the other and the distinction is still valid as it always
was. There is the need of a common understanding and knowledge sharing, but the two roles are
not always or don't always to coincide. The specificity and technicality of code based design is still
something that necessitates a strong logic and m athematical background, while the understanding
of its set up and rules is what a designer today needs to be exposed and engage with. Variations,
inflection, self-sim ilarity and integrations become param eters of evaluation of computational design
aesthetic, and their definitions is an a-priori from the their formal representation, embedded in
the set-up of generative system s and the relations within the system itself. The creative process is
readable at different stages, from the moment when the designer is establishing those relations
within the set-up of the system , to the mom ent when the m anifestation in the physical domain
gets informed by m ateriality, engineering and production methods. All of those factors are now
integrated in what can be defined as a complete creative moment. Today's designers are borrowing
tools and referring to a vast num ber of fields tangent to design, allowing for a re-definition of both
aesthetic and logic of space and form s. There is a strong common research manifesting in parallel
in different fields, from architecture to design to fashion, and in the most progressive courses in
universities and design schools. This legible academic direction is something that will shape the
future generation of designers and will define a new type of creativity and aesthetic, which will
Ludovico Lombardi (LDVC) prom otes design by research through computational and m aterial processes. The
avant-garde design research operates on multiple scale, from urban design, landscape design, architecture and
industrial design. The articulation of com plexity and organization through elegance and sophistication become the
paradigm to negotiate contem porary heterogeneous and dynam ic society of multitude.
Ludovico's w ork experience in Spain, Italy and England includes Carlos Ferrater, Arata Isozaki and Zaha
Hadid architects, w here he currently w orks. In 2008 he graduated with a Master's degree in Architecture
and Urbanism from the DRL Design Research Lab of the Architectural Association in London after having
previously studied in Italy at the Politecnico of Milan and in England at the Bartlett. His work has been featured
on a series of international m agazines, such as AD, AJ, Abitare am ong others. His works have been presented
and exhibited at the Architecture Foundation in London and in touring exhibitions in Italy and in the US.
Ludovico has appeared as guest critic at the Architectural Association, at the Bartlett UCL and for the DRL and
has been invited to lead w orkshop and lecture in Turin, Bologna, Florence and internationally at the Tate Britain
in London and at RISD Rhode Island School of design. Ludovico w as recently invited to collaborate with Abitare
magazine and w as appointed unit m aster fo r the M .arch in Urban Design program at the Bartlett UCL for the
academic year 2009/10. He w as recently appointed Faculty Professor at RISD architecture departm ent.
http://www.ldvc.net/
’ 1^ ■
■•
'sr^ *
''•iJ
*~T ^
■V. A
7 looDS
"...this is a curious state of affairs and a reflection
that ordinary rules break down at infinity”.
Cecil Balmond
Recursive algorithms define earlier input values by later output values, which are determined by
the algorithms execution. The procedure can repeat itself N tim es, generating an output at the
end of each iteration or step. The first iteration starts with an edge condition, i.e. one or more
elements (numbers, geometries, data) defined not recursively: later iterations are defined by data
loops. Recursive algorithms are very powerful because they can be used to generate a multitude of
input
pro cedure
N times
FIGURE 7.1
A recursion starts with an edge condition (first input) that generates, by a specific procedure, the first output. The
procedure repeats itself N tim es and, at every step, it generates an output that becom es a new input.
Several numerical sequences can be calculated recursively. For instance, the Fibonacci sequence is
defined recursively by the procedure: , + F^ Once the start values or edge conditions F^= 0 and
0, 1 ,1 ,2 , 3, 5, 8 ,1 3 ,2 1 ,3 4 , 55, 89...
Recursions can be used to achieve ruled complexity, a condition of natural geometries at all scales.
lineO
A recursive procedure that repeats itself three tim es to divide a line is as follows:
• Step 2: divide the line into 3 segm ents: segment 0, segment 1, segm ent 2;
linel
lineO
segment 0 segment 1 segment 2
C O —<
( fa c to r ]| 30 >-----
Then again, the converted recursive definition is able to perform ju st one iteration, outputting the
line 1 as returned from the G-output of the Move component. In order for the definition to execute
three times a data loop is required. However, a data loop conflicts with Grasshoppers linear-flow
logic (cfr. 1 . 6 ).
FIGURE 7.2
Loops are not allowed in Grasshopper because of the "left-to-right" connection logic.
According to G rasshoppers left-to-right connection logic, the only way to execute the procedure
three times would be to repeat the algorithm. Fortunately, the plug-in components HoopSnake and
IlneO
7.1 Loops in G rassh o p p er: H oopSnake com po nent
HoopSnake is a plug-in for G rasshopper developed by Yannis Chatzikonstantinou. The plug-in
is available for free download on his website'®; after installation a new component will appear in
the Extra tab. HoopSnake enables users to defy the left-to-right connection logic and perform loop
operations. With reference to the previous exam ple and to the next image we can easily understand
) 1. The linear curve (line 0) set from Rhino by a Curve container component is the edge
condition. The curve is connected to the S-input of HoopSnake and passes through
the component without any change, meaning the output (F) is equal to the input (S),
2. All the inputs that in previous exam ple w ere connected to Curve (C-input of D/V/de
4. The input (B*) specifies the num ber of loops to perform, and is best supplied by a
Number Slider.
5. The output (C) returns the cumulative output of all Iterations, each as a branch of
a Data Tree.
NOTE 18
http://yconst.com /software/hoopsnake/.
In alternative, you can download HoopSnake at: http://www.food4rhino.com /project/hoopsnake
HoopSnake operates as an engine and, in order to perform iterations, the component must be
started. To start the engine double-clicl< the component to recall the control panel. Clicking the
control panel's Step button perform s a single loop while clicking the Auto Loop All button performs
The output (1) provides the iteration count, when/At/fo i.oop/\//button is run the recursion term inates
<1^ Ctv
7.2 Fractals
Fractals are patterns that are self-sim ilar across scales. They are generated by repeating a simple
procedure using feedback loops. Fractals repeat at increasingly sm aller scales producing complex
shapes.
Awell known exam ple of a fractal pattern is the Koch s n o w fla k e c u rv e . The snowflake curve studied
by the Swedish m athematician Helge von Koch (1870 - 1924) is one of the earliest fractal curves to
step 1
step 2
step 3
step 4
The Koch curve is found as the limit of an infinite sequence of approxim ations. The first approximation
is a straight line segment (step 0). The middle third of this segm ent is then replaced by two segments
(whose length is equal to the middle third) which are joined like two sides of an equilateral triangle
(step 1). In the step 3 each line segm ent has its middle third replaced by two segm ents which form
an equilateral triangle. 'We can regard the limit o f this infinite process as being a curve that actual exists,
NOTE 19
R. Rucker, Infinity and the Mind: The Science and Philosophy o f the Infinite, Princeton University Press, 2004.
rc '1
D S c
9
o
C
(x/2)*sqrt(3) :
CE>
FIGURE 7.3
Koch curve algorithm developed using HoopSnake.
7.2.1 Further Study: Practical Fractals
In this example, Toyo Ito's and Cecil Balmond's 2002 Serpentine Pavilion will be reproduced. Despite
the complexity of the final structure, the apparently random pattern was in fact derived from an
"I propose an algorithm: half to a third of adjacent sides of the square. The
1/2 to 1/3 rule traces four lines in the original square that do not meet [...].
The half to a third rule forces one to go out of the original square to create a
new square so that the rule, the algorithm, may continue [...] and a prim ary
structure is obtained. Then if these lines are all extended, a pattern of many
crossings results. Some are prim ary for load bearing, some will serve as
bracings to secondary and the rest will be a binding m otif of the random
Tridimensional fractals follow the sam e logic as bidimensional fractals. In the following example a
3D fractal is created from three points and performing three iterations. The procedure to create
the tridimensional fractal is as follows; first, a triangular mesh is defined through three points by
Delaunay Triangulation, second, each face's centroid is translated, and finally, three new faces are
defined using Delaunay Triangulation. This process can be repeated through n iterations.
FIGURE 7 .5
Loop method uses three components: Rnd, Store and Loop. The first two components, Rnd and Stare,
represent the explorative part o f Generation^', an add-on which provides additional tools to explore,
animate and fabricate generative shapes with Grasshopper. /?nc/generates a list of pseudo random
num bers updated by a Timer {Param s > Util) or by the Recompute command (Solution > Recompute).
The component /.oop“ is used to iterate a procedure by replacing an input parameter of the
procedure's initial component with an output param eter of the procedure's final component.
In the following definition, the Rnd component generates three interpolated random values within a
domain. Two o fth ese three values correspond to the param etric coordinates of a point P(u,v) placed
on an initial sphere. The third value corresponds to the radius of a new sphere (stored in the Store
component) which is tangent to the initial sphere at point P(u,v). The Loop component (connected to
a Timer) updates the Rnd component and replaces the reparam eterized S-input of Evaluate Surface,
with the G-output of l^ove. Following this logic, in each iteration a new sphere is created and stored,
exploring different compositions of dark-colored spheres with sm aller radii combined with light-
NOTE 20
Antonio Turiello is a Generative Designer, Independent Researcher and Authorized Rhinoceros Trainer.
http://antonioturiello.blogspot,com /
NOTE 21
http://www.food4rhino.com /project/generation
NOTE 22
http://www.food4rhino.com /project/loop
Danecia Sibingo (under the supervision of C. Walker and
The link between design and fabrication has always been crucial for architecture and industrial design.
New manufacturing techniques, assem bly processes, and m aterials, often prompt paradigm shifts
in design. For instance, the introduction of structural steel fabrication to the design of structures
enabled new form al am bitions; but required new expertise in detailing and pre-fabrication. This new
approach, based on the design of component, progressively marginalized handcraft and made the
Before the digital revolution, the designer managed the com plexity of building projects by breaking
down components into individual parts, and studying part to whole assem bly strategies through
scale models and drawings. The scale models and subsequent construction drawings were then
transferred to suppliers and contractors to interpret and fabricate the assem bly components. This
process was limited to orthogonal structures, and lacked the capacity to respond to complex shapes,
with few notable exceptions such as Jorn Utzon, Heinz Isler, Antoni Gaudi etc.. The digital revolution
tridimensional nnodels. The digital model was then interpreted by the com puter to generate bi-
dimensional plans, sections, elevations and details. Informed digital fabrication, and in particular
CNC ^3 processes, directly link 3D geom etry to the final components bypassing the production of
and makes complexity ordinary; since a complex operation will have the sam e level of machining
Since building processes are directly interpreted from 3D geometry, designers produce traditional
drawings to merely aid in the assem bly of components. Drawings can also be omitted by printing
assem bly instructions directly on components, or more futuristically by providing robots or drones
with coded instructions. The ambition to directly translate an idea into reality is already possible
for small scale objects or components. In other words, it is possible to create a physical object
from a 3D virtual model using Rapid Prototyping (RP). Rapid Prototyping is an additive fabrication
technique in which material is deposited in layers to print a component. This technique will likely
Bi-dimensional fabrications transform planar sheets of: alum inum , steel, plywood, acrylic etc. of
varying thicknesses into components for tridim ensional assem blies. Planar sheets can be used to
form geometries using techniques such as: stacking, faceting etc.. Flat sheets can also be bent to
NOTE 23
The acronym "Com puter Numerical Control" identifies the use of com puter in driving and controlling a machine
m ovem ent. The m achine can be a milling cutter, a lathe, a laser or w aterjet cutter.
ABOVE. The NU:S installation (2012) designed by Arturo Tedeschi and M aurizio Degni w as made by overlapping
planar sheets of alum inum cut by a w aterjet m achine. BELOW. A sculpture by Carlo Borer (2011) created by bending
and connecting shaped metallic plates. The sculpure's geom etry is a set of zero Gaussian Curvature surfaces.
Image courtesy of Galerie Frank Pages.
Cutting-based processes include:
Laser cutters burn or melt material using a focused laser set to a specified power and
cutting speed. The cutting speed and power are set based upon the m aterials dimensional
and physical properties. Laser cutting cannot be used for every m aterial; for example,
Plasma cutters cut material using a focused stream of super heated gas or plasma.
Waterjet cutters cut m aterials using a focused je t of w ater combined with an abrasive
substance. The m ajor advantage of the W aterjet is that it does not create heat-affected
zones were the molecular structure is modified. The W aterjet can be used for a wide
FIGURE 8.1
A w aterjet m achine in action while is cutting a 5 mm alum inum sheet. Image courtesy of Lam berti Design,
NOTE 24
The word LASER is an acronym that stands fo r "light am plification by stim ulated em ission of radiation".
8.1.2 Subtractive techniques
Subtractive techniques, such as CNC milling, create objects by removing material. Subtractive
methods can achieve the sam e output of cutting machines with the added ability to specify the Z
depth of a cut.
FIGURE 8.2
The Driftwood Pavilion was created using 3-Axis mill from large-scale wooden planks.
Solid blocks of materials from wood to polystyrene can be milled to carve described geometry. Not
all geometry can be achieved using 3 axis milling; and in m any cases objects m ust be decomposed
FIGURE 8.3
The Illinois School of Architecture, Rhectomic
Farm; Mock-Up Milling Gaelan Finney-Day,
Przemek Swlatek, Brian Vesely.
FIGURE 8.4
The Illinois School o f Architecture, Kiva; Mock-Up Milling, Arch 576 Post Digital Strategies, Critic: Brian Vesely.
Milling is a tooling process that uses a cutter head to remove m aterial from a sheet or
block of m aterial. Mills vary in their size and depth capacity as well as the number of
axis that the cutter head can be m anipulated. The most comm ons machines are 2D,
2.5D, and 3D machines: 2D mills cut at a specified Z depth sim ilar to cutting machines,
2.5D (two and a half) mills operate in 3 axes but only perform operations in two axes
sim ultaneously, and 3D mills perform operations in all three axes simultaneously. More
advanced 5 axis mills move in four or more axes to create custom parts with limited
tooling restrictions. Milling machines are informed by digital geometry which is used to
FIGURE 8.5
Aura, by Zaha Hadid Architects
(design team F. Wirz and M. Lanza),
exhibited at Villa Foscari "La
M alcontenta" in Mira, Italy (2008).
The sculpture w as created relying
on a 6 axis CNC machine using
polyurethan foam as m aterial to
mill.
Image courtesy of Zaha Hadid
Architects. Image copyright by
Luke Hayes.
Hot-wire cutters use an electronically heated wire to cut polystyrene foam or sim ilar
m aterials. Several different types of hot-wire cutters exist from w ires able to cut on a
single plane to cutters able to cut on multiple planes. This method is used to quickly
Robotic arm s
Robotic arm s can be used to facilitate other fabrication techniques, such as: holding a
milling cutter head or heated wires, grasping and folding, forming etc.. Recent research in
layers. Term s such as, Rapid Prototyping or 3D printing are increasingly used to describe additive
manufacturing. Additive m anufacturing enables designers to fabricate objects that are impossible
to make using subtractive techniques. Objects such as branching shapes, complex twisting, moving
Additive manufacturing is defined by describing deposition paths. Deposition paths are created by
slicing a digital model, developed in Rhino or another modeling software, into layers with a
defined slice thickness or resolution. The contours describe how material is deposited, layer
by layer.
1. Creation of a digital 3D model. A printable model is required to meet the criteria discussed in 8.2.
developed by 3D Systems®. An STL conversion triangulates an initial tridim ensional model and
outputs the coordinates of each vertex according to the right-hand rule. The num ber of triangulation
iterations can be equated to the sm oothness of the final model, meaning the more triangles the
smoother the model. The output can be described in ASCII and Binary. Binary is the more common
language because of the sm aller file dim ension. The most common 3D printing techniques are:
stereolithography (SLA), selective laser sintering (SLS) and fuse deposition modeling (FDM).
• Stereolithgraphy (SLA)
SLA printing was developed in 1983 by Charles Hull. A SLA printer consists of four main
a UV beam, and a computer that controls both the beam and the platform. The platform
is initially positioned on the top of the vat, just below a thin layer of resin. As the UV beam
strikes the resin, the resin selectively solidifies and a layer is formed; as defined by one
layer of the sliced digital model. The platform is then lowered the distance of one layer to
print the next slice, this process continues until all the sections are created. After the object
is completed, it is rinsed with a liquid solvent and baked in a UV oven to cure the plastic.
Resin that is not solidified remains in the initial liquid form. Un-solidified liquid is unable to
support overlying parts; for this reason, it is often necessary to create support structures.
SLA printers can produce very-high-resolution objects, but are slow and expensive.
SLS printing was developed in 1986 by Carl Deckard at The University of Texas Department
of Mechanical Engineering. SLS printers (see figure 8.7) use a high-power laser to selectively
fuse powdered particles of plastic, metals, ceramic, glass etc.. An SLS printer consists of
four main elements: a laser, a powder cartridge, a roller, and a fabrication platform. A thin
layer of powdered material is spread by a roller across the fabrication platform where
the laser traces a bidimensional section of the object, sintering the material together. The
platform is then lowered the distance of one layer thickness and subsequently the roller
deposits new material from the powder cartridge to be sintered forming the next layer.
This process continues until the part is completed. SLS does not require support structures
since the sintered parts are surrounded and supported by the non-fused powder.
FIG U R ES .? LASER
!
The Selective Laser Sintering (SLS) process is
based on a filgh-power laser beam, a levelling
roller, a powder cartridge and a fabrication
ROLLER
platform
P O W D E R D E L IV E R Y FABRIC ATIO N
P ISTO N PISTON
FIGURE 8.8
NU:S param etric shoes (2012) designed by Maurizio Degni, Alessio Spinelli and Arturo Tedeschi were made by a
SLS process using nylon powder. Image courtesy of SOLIDO 3D.
FDM printing was developed in 1988 by Scott Crump. FDM printers form geometry by
melting plastic filam ent and depositing thin layers additively on a platform. The FDM
printers, sim ilar to SLA printers, require support structures for overhanging parts.
Some FDM printers can print multiple m aterials, in this w ay supports can be printed in
a material that is easy to remove; such as w ater soluble filam ent. FDM printers use two
Other innovative techniques have been tested recently; such as the MX3D-Metal printer developed
byjo ris Laarm an in collaboration with the software company Autodesl<. MX3D-Metal printing utilizes
a robotic arm to deposits molten metal onto an existing metal surface. Autodesk notes of this
innovation: 'The arm is controlled by new software Autodesk created that can give the robot more fluid
instructions fo r where the metal should go. Because o f how quickly the metal hardens, the new object
Conceptually, additive techniques revolutionize the topic ofoptim ization. Traditionally, optimization
has been linked to simplifying fabrication techniques such as: cutting operations, complexity
through similarity, describing developable surfaces or planar panels etc.. Optimization of additive
techniques involves finding the optimal shape which meets a prescribed set of perform ance targets;
such as minimally using m aterial. Additionally, advanced form-finding strategies such as topology
optimization (chapter 10), are becoming increasingly im portant in architecture and product
design.
FIGURE 8.9
Topology optimization drives material distribution within the volum e of the truss.
8.2 M odeling Printable O bjects
Translating digital ideas to physical objects using 3D printing is currently viable for small scale
objects. The definition of a small scale object is constantly changing; since advances in 3D printing
technologies are enabling Increasingly larger objects to be printed. Currently the single printing-
session dimensional limits of high end comm ercial printers are 10OOL x 10OOW x 500H mm.
Producing digital models for 3D printing is not technically different from producing conventional
3D models. Sim ilar to all form s of fabrication, when using additive fabrication consideration should
be given to the constraints of the selected printing technology as well as real world characteristics.
Figure 8.10
Pandora | AL, Arturo TedeschI (2011), made by a SLS process using nylon powder.
Printable 3D models differ from 3D models developed for visualization and rendering. Printable
objects must consider: geometric digital modeling criteria, the specifics of the machine that will
"read" and print the generated code, and the characteristics of the materials used for printing.
Each surface or mesh has an inside face (colored in red in the image) and an outside lace
(colored in gray). A 3D object is watertight and printable if no inner faces are visible.
open open watertight watertight
Only manifold models will be printed correctly. A geometry is called manifold if does not
contain edges shared by more than two faces. Non-manifold geometries can be the result of
inconsistent models (image B) or overlapped objects (image C), issues that are problematic
when printing. Paragraph 6.6.3 explained how to remove overlapped faces from a mesh.
C . non-manifold
The geometry must be an orientable m esh. In other words, the 3D model must be
composed of face norm als which follow the sam e directional logic.
• G.4. No self-intersections
Objects cannot be larger than a m axim um size of the b u ild volum e or tra y size. These
values are m easured in XYZ dim ensions and are specific to each printer. Models that are
larger than build volume can be divided into sm aller parts which can be assembled into the
larger component.
• C2. Minimum w all-thickness
Is defined as the minimum tliicl<ness that can be printed by a printer. The minimum wall
thickness varies based on the specific technology and m aterial. For instance, SLS prints can
• C3. Resolution
The horizontal (XY) and vertical (I) resolutions are based on: the specific technology, the
material, and the overall quality of the desired print. The horizontal resolution is the smallest
movement that the extruder or print head can make horizontally and is expressed in microns
(100 micron = 0.1 mm). The vertical resolution is the thickness of a 3D printed layer. As
follow/s, details sm aller than the horizontal or vertical resolutions cannot be printed.
• C4. Gravity
The printed 3D model is a physical object that must obey natural laws when printing. Basic
gravity-point tests and sim ulations can be performed using external software to check
The following exam ple is based on the Pandora |A L vase designed by the author in 2011, using
a common desktop printer with a build volume of 200 x 200 x 200 mm; and will demonstrate a
the curve is translated vertically according to scalar multiplication. Scalar factors generated by the Series
component are multiplied by the Unit Z-Vector, generating a set of translated curves with a step size of 10
mm. The {Z}fiu//cf\/o/ume constraint is 200mm, as a result the C-input of Series component is set to 18. The
resulting object will have a {Z} dimension equal to 180 mm. The translated curves are then scaled using
the component Scaie with: center of scaling (C-input) defined as the centroid of each translated curve
using the Area component, and the scaling factor (F-input) defined using the Graph Mapper component
set to Bezier. Since the {X} and {Y} Build Volume constraints are 200mm the Y domain is set between (0,2)
such that the maximum scale factor (2) will yield geometry within the build volume.
The following image displays the resulting geometry. The initial curve is colored in red.
The second step is to perform a rotation for each translated and scaled curve around a central axis
using the component Rotate Axis (Transform > Euclidean). The angle of rotation in radians (A-input)
for each curve is defined using the Series component. Lastly, the rotated curves are lofted using the
s - 'I
0.09 0 .2
H S
Count Slider ■'< C
Surface Ol(Srf) J)
lA i)
Curve 01 <
The untrimmed surface is not a printable object since it contains no thickness and is not watertight.
Since the desired output is a vase, a lower cap can be created by the component Boundary Surfaces.
If the cap and the loft surfaces are joined, then assigned a wall thickness using the component Mes/i
Thicken (Weaverbird > Transform ) a printable object will result with sharp edges.
To create a smooth edge an alternative strategy is used. A vertical isocurve is extracted from the
lofted geometry at a point defined on curve (0) using the component Evaluate Curve with t=1. The
extracted isocurve is joined with a curve defined from the centroid of curve (0) and the start point
of the isocurve.
The defined curve is then divided using the component Divide Curve. Outputting, in this case 28
points, which are used to generate a smooth, freeform (non-planar) curve using the component
Nurbs Curve.
The Nurbs Curve is then revolved using the component Rail Revolution (Surface > Freeform) along rail
curve (R-input) defined by Curve 02 and a revolution axis defined by Line 07.
>=<
■ -o M
> (
K B jlt > (
The output of the rail revolution, displayed in the following image, is a NURBS surface with smooth
edges.
The Resulting NURBS surface is tlien morphed using the component Box Morph.
The Box Morph component requires a reference box input (R) and a target box input (T) to perform
a morphing operation. The R-input is satisfied as the bounding box of the NURBS surface using the
component Soi7Aic//ng Box (Surface > Primitive). The target box is a deformation of tine bounding box,
achieved by extracting and subsequently translating vertices. The manipulated vertices are then
rebuilt into a target box using the component Twisted Box (Transform > Morph).
The resulting twisted output is then converted into a mesh using the component Mesh Surface and
is subsequently smoothed using the Wb Catmull Clark subdivision method. The resulting smoothed
geometry is then assigned a wall thickness of 2.0 mm using the component Mesh Thicken (Weaverbird
02.0
ABOVE. The final mesh is sm oothed by the Catm ull-Clark com ponent and the watertightness is achievd through a
proper thicl<ness.
BELOW. Different vertical sections show the absence of intersections and the perfect w atertightness.
The final mesh can be baked into Rhino, checked through the command check which is a tool for
diagnosing potential geometry errors. If no errors occur, the mesh can be exported and converted
into a STL file (File > Save As or Export > STL) to be transferred to a 3D printer or other software.
8.3 Modeling objects for cutting based operations
Medium-scale objects, or objects that are currently outside of the m eans of additive processes, can
be fabricated using cutting based operations. Medium scale fabrications can be assembled from
Sectioning or contouring a model in one direction is a common technique used to build complex
shapes by defining planar developable surfaces. For instance, a freeform surface can be sliced into
a set of parallel and planar sections based on an interval equal to the thickness of the material to
be milled. Upon gluing the sections together in sequence, the original surface can be approximated.
The surface could also be milled from a single block of m aterial; however undercuts require the use
of a 3D milling machines.
Sectioning creates continuity parallel to the cut section and limited continuity in the direction normal
To define an unidirectional sectioning algorithm, a surface created in Grasshopper or set from Rhino
is required. The subsequent steps are to define: a slicing direction, a series of planes, and finally
intersect the planes with the model; defining the sections. In this instance, the surface's boundary
forms a rectangle and one edge can be used to define the origin points for sectioning planes.
The component Divide Distance divides a curve w itli a preset distance equal to tiie tliicl<ness of the
material to mill. At each division point a plane is defined using the component Plane Normal (Vector
> Plane). Each plane is then intersected with the initial Brep using the component Sec (Intersect >
Next, each curve is offset with respect to the defined plane, using the component Offset (Curve >
Util). Offsetting may yield discontinuities which can be eliminated by dividing the curve into N-parts
Lastly, each section curve is joined with its smooth offset by defining two segm ents that connect the
cun/es' end points. The fo ur curves are merged into a single branch using the Merge component set
tosim plifym ode.The merged branches are joined using the componentjo/n, returning a list o f closed
planar curves. These curves can then be oriented to a plane for milling (see 4.2.3).
>
Once the curves are oriented, such that that all parts of every curve are coincident with the XY plane,
they can be transferred to a cutting or milling m achine. Most CNC machines cannot read NURBS
curves. As a result the NURBS curves must be converted into a rc s and seg m en ts. The conversion
is based on two main strategies: the first strategy is to divide the curves into a large number of
points and then define a polyline through the resulting points, the second strategy is to use Rhino's
Convert command to convert curves into arcs or polylines with set tolerances. After conversion, the
resulting geom etries are nested in order to minimize tlie material waste either manually, by a third
Another technique to build freeform objects by planar sections is based on a bi-directional strategy
usually referred to as waffling. Waffling perform s the section contouring procedure in two orthogonal
directions. There are several G rasshopper plug-ins available to automate the process.
The following image shows different waffling alternatives, which are based on the initial shape and
FIGURE 8.12
Different kinds of waffling. Image courtesy of Hassan Ragab.
Waffling requires intersections on which to perform a standard set of operations:
• Every possible intersection between every rib (or planar surface) is calculated and a list of
At each intersection-segment two domain boxes (A' and B') are created. The boxes are
subsequently subtracted using the Solid Difference operation: A-A' and B-B'.
this methodology is both creative and attainable, and is an example o f one o f the directions artists In Italy
are taking. "NU:S Fashion clothes Architecture" is an art installation exhibited firs t at Bramante Cloister,
and later at The Museum o f Contemporary Art o f Rome. The project came from a cross-fertilization
within different artistic fields and fascination fo r technology, computational design, and the Renaissance
philosophies.
FIGURE 8.11
The NU:S installation. Photo by G. Catani and L. Sorrentino.
The work had no preconceived result or over-arching direction, only interaction. It wos a herculean
experiment, where the goal was the study o f the Interplay between creative forces, not the result This is
fundamentally different from any other event because what was created was imagined and made within
andfo r the project. The NU:S installation, designed by Arturo Tedeschi and Maurizio Degni, was inspired by
the ascessional flow o f the cloister as well as its symbolic strength, these contaminating the mathematical
intrinsic logic o f Renaissance architecture, reinterpreting it through the new parametric paradigm.
The sculpture was also inspired by tailoring expertise since the introduction o f digital techniques and
fabrication processes in architecture allowed a concept o f personalization only similar to haute couture.
[...] The interesting aspect about this project is that new media led to artistic innovation, the very same
phenomenon that characterized the Renaissance. In the 15th century artists applied perspective to
FIGURE 8.12
The NU:S installation. Photo by E. Lucci.
There are different levels o f possibilities in the new digital instrum ents and technical planning
methods, and NU:S tried to explore these. Sometimes there was a one directional process, sometimes
bi-directional, sometimes even multi-directional. The revolutionary fa cto r in the work was how each
designer maintained his own identity, even while adopting software and hardware foreign to their
specific field".
Antonella Buono
Antonella Buono graduated as a Fashion Designer and Product Responsible. A fterward, she focused on costume
design and during the last eleven years she has worked in the advertising and movie industry as a stylist and a
costum e designer. Beyond her worl< as a stylist, she teaches Fashion Design at UARC for the Philadelphia University
as well as courses in Rome. She is interested in cross-fertilization within different artistic fields, which she examines
as an independent researcher, w w w .glam nicism .com
FIGURE 8.13
NU:S param etric shoes (2012) designed by IVIaurizio Degni, Alessio Spinelli and Arturo Tedeschi (sinterized nylon
powder). The particular aesthetic of param etric structures - predom inantly found in architectural design - has been
expressed in this project through the creation of a "w earable object". Photo by G. Catani and L. Sorrentino.
8.5 Large-scale objects
Large-scale fabrications, or objects tliat in their articulation require technical, structural and
functional issues to be considered, such as pavilions, canopies, shells, houses, and buildings;
require additional techniques. The fabrication of large-scale objects usually involves the assem bly of
individually fabricated parts to transfer loads. Two im portant trajectories for fabricating large scale
objects are currently being researched in academia and in the architecture profession. The first
approach aims to reduce com plexity and differentiation of components while the second aims to
1. Computational approach.
The main challenge of building a freeform facade has traditionally been to approxim ate a surface
using planar panels of the sam e dim ensions. This strategy is used to reduce manufacturing
costs and optimize the reuse of molds. This process of surface discretization was often achieved
through the triangulation of a surface. This technique has several disadvantages including: the
weight of the support-structure, the complexity of each structural node etc. Nowadays cutting-
edge computational techniques have been developed in order to achieve planar quad panels
(PQ Meshes) from an arbitrary freeform surface and, under certain conditions, to get planar
hexagonal panels (P-Hex Meshes). P-Hex Meshes sim plifies the fabrication of the underlying
FIGURE 8.14
Several algorithms have been developed in order to find developable surfaces or sets of surfaces
to approxim ate a freeform geometry. Since every developable surface is a ruled surface, a set of
straight lines can always be found. These lines can become the axis of linear beams, ultimately
2. Innovative fabrication.
innovative fabrications focus on developing new fabrication strategies. For instance, pioneer
companies like D-Shape, guided by the Italian engineer and inventor Enrico Dini, are successfully
testing additive techniques to print large-scale objects. The D-Shape procedure compels
FIGURE 8.15
The 5m x 6m D-Shape printer, built by the Italian engineer Enrico Dini. This is the first large-scaie 3D printer.
Image courtesy of D-Shape (w w w .d-shape.com ).
Over the material, Past the
Digital; Back to Cities
Stefano Andreani
L e c tu re r in A rc h ite c tu ra l T e ch n o lo g y & R e se a rc h A sso cia te
H a rv a rd U n iv e rsity - G ra d u a te Scho o l o f D esign
The history of architecture features a combination of different technological tim elines. As Mario
Carpo points out in his The Alphabet and the Algorithm book,' we can identify three technical ages -
the age of hand-making, the age of m echanical-making, and the age of digital-making.
design: on the one hand, the built environm ent is based on the production of material objects,
which in turn depend on the evolution of m anufacturing technologies; whereas on the other hand,
architectural design translates into abstract operations that are very much influenced by cultural
environments and medium of representation. The world of hand-making that preceded the machine-
made environm ent w as characterized by unique pieces, m ainly conceived and produced through a
process of imitation rather than replication. The first break, the transition - as Carpo defines it -
"from artisanal variability to mechanical identicality", occurred with the industrial revolution. But the
second break in this sequence, the passage from mechanically-made identical copies to digitally-
generated differential variations, is happening now. Hand-making creates variations, as does digital
making; but the capacity to design and mass-produce serial variations (or differentiality) is specific to
the present digital environm ent. Unlimited variability, however, may result in a loss of relevance and
Back to the nineties, the digital revolution began to narrow down the gap between design and
fabrication. Computers, in fact, not only could easily deliver tools for the ideation and manipulation
of complex mathematical form s; these new tools could also be directly applied to the conception,
Back then Bernard Cache stated that ‘‘mathematics has effectively become an object o f manufacture,"^
and Greg Lynn rem arked that computer-aided design had "allowed architects to explore caiculus-
1. Mario Carpo, The Alphabet and the Algorithm (Cambridge, MA: MIT Press, 2011).
2. Bernard Cache, "Objectile; The Pursuit of Philosophy by O ther M eans," in Stephen Perrella, ed.. Hypersurface
Architecture II, special issue (AD Profile '\4^), Architectural Design 59, nos. 9-10, 1999.
based form s fo r the first time."^ The concept of multiple variations then emerged to define this new
idea of the digitally-made object, what Deleuze would refer to as objectile - a function that contains
The objectile is not an object but an algorithm - a param etric function which may determirte
an infinite variety o f objects, all different (one fo r each set o f parameters) yet all similar (as the
underlying function is the same fo r all). Instead o f focusing on one instance from a virtual series
o f many, the new technological paradigm is increasingly dealing with variations that can all be
designed and fabricated sequentially: mathematical continuity in this case is set in a manufacturing
series, not in a diachronic sequence, and used to mass produce the infinite variants o f the same
This technological shift defines the basic principles of a nonstandard series - i.e., a set in which each
item has some features in common with all others. It thus follows the notion of mass-customization,
which was born as a marketing strategy well before the rise of CAD-CAM technologies.^ The term first
appeared in 1987, with Stanley M. Davis' Future Perfect book, supplying both a name and a conceptual
fram ework for processes initially from the clothing industry and recognizing that mass customization
simply extended the capabilities latent in CAD/CAM processes.^ In 1993, B. Joseph Pine II expanded
on Davis' ideas articulating the production system s Into three main categories: craft production, mass
production, and mass customization - which combined elements of the first two.®
However, in the realm of architecture, the increasing power of today's computational tools might
lead to discrepancies, rather than proxim ities, between the digital and physical worlds. As John
Frazer argues when referring to the evolution of computational design, "We went to all this effort in
order to solve real social, environmental and technical problem s where we believed a computer could
significantly assist. But now that there is a massive computer power and software cheaply available, most
scripting has become nothing more than an onanistic self indulgence in a cozy graphic environment
Endless repetition and variation on elaborate geometrical schema with no apparent social, environmental
3. Greg Lynn, Animate Form (New York, NY: Princeton Architectural Press, 1999).
4. Gilles Deleuze, Le pli: Leibniz et le baroque (Paris: Editions de m inuit, 1988).
5. Mario Carpo, The Alphabet and the Algorithm.
6. Stanley M. Davis, Future Pe//ecf (Reading, MA: Addison-W esley, 1987).
7. Dan Willis Todd and W oodward, "Dim inishing Difficulty: M ass Customization and the Digital Production of Ar
chitecture," in Fabricating architecture: Selected readings in digital design and manufacturing (New York: Princeton
Architectural Press, 2010).
8. B. Joseph Pine II, Mass Customization: The New Frontier in Business Competition (Boston, MA: Harvard Business
School Press, 1993).
and technical purpose whatsoever."^ A true paradigmatic shift in architectural design and fabrication
may lie instead on the role of, and push for, innovation - In the sense of "an activity that generates
vitality" as proposed by Mark B u rry.'“ A conceptual approach to innovation that highlights the role of
the environm ent in affecting an idea, supporting its developm ent, and eventually its implementation
Innovation is what actually drives the research activities pursued by the Design Robotics Group (DRG)
at the Graduate School of Design of Harvard University. The research unit, led by Professor Martin
Bechthold, promotes the understanding, developm ent and deployment of innovative technologies
in the use of design as an agent of change in the quest for a better future. DRG looks at the role
of nnaterial processes and system s in the built environm ent, with a special interest in robotic
computation, m aterials and assem bly processes, the projects result in speculative prototypes as
well as applied research geared towards industry integration. DRG work in material system s is best
An example of the implem entation of the design-oriented research pursued by the Harvard DRG is the
'Ceramics 2.0' Workshop Cluster at the 2012 Sm artGeom etry, w here ceramic material system s w ere
explored through a combination of computational design methods and a six-axis robotic manipulator
equipped with a wire-cutting tool. Run by Prof. Martin Bechthold, Jose Luis Garcia del Castillo, Aurgho
Jyoti, Nathan King and the author, the workshop built upon the 'Flowing Matter' project developed
at Harvard G SD ." Going back and forth between manual and robotic clay manipulation, workshop
participants developed design intuitions that expanded beyond what would have been feasible when
limited to either physical or computational methods. Exploring a material system in this open-ended
manner generated a host of powerful ideas and much discussion. The workshop demonstrated that
design robotics has matured to a point that brainstorm ing and sketching are now possible in newly
This line of research on ceram ic building system s eventually resulted in the articulation o f the
9. John Frazer, in M. B urry (ed.), Scripting Cultures: Architectural design and program ming (Chichester: John
Wiley&Sons, 2011),
10. Mark Burry, 'Th e Innovation Im perative; Architectures of Vitality,"/AD The Innovation Imperative: Architectures o f
Vitality 22^ (2013): 8-17,
11. Stefano Andreani, et al., "Flowing Matter: Robotic fabrication of complex ceram ic system s," in Proceedings o f
ISARC 2012: The 29th International Symposium on Automation and Robotics in Construction (Eindhoven, 2012).
12. Martin Bechthold, "Design Robotics: New Strategies for Material System Research," in Brady Peters et al., eds.
Inside Smartgeometry: Expanding the Architectural Possibilities o f Computational Design (London: John Wiley & Sons,
2013): 254-265.
'[R]evolving Brick' p ro je ct.D e v e lo p e d at Harvard GSD by Prof. Martin Bechthold and the author, the
on-going study introduces the concept of strategic customization in the industrial fabrication context.
[ [> c IIC>C!l C-B II i | B-A II A-A jj A-A|j A-B || B-B || f r C |! C-C 'iF C - D ' T ' " 6 ^ b _ ! i D-E_ || E-C || E-€ FIGURE 1
^ !i oc II c-B ii B-8 ir~ Bxnr a-a II A-A B-B h 'b^irc ^ n r'c - 'o 'ir'p ^ r '^ ^ r E'-e'~ir ^ r * .
ir'BSnr^Bi.nrA-A^irAX ir a-b" i r M rc-c-■)i“-c:D"1[■m ' I fD^nr'F-E" ® Stefano Andream.
[>o If p ^ r c - c ~ i r 1 ~ b'-a~i r~ a-a i r a-a i r ~ A : B ' ' i 1 r w ir c ^ ~ n r i p-e ic
g-o IIM) II D-C II C-C II C-§ni II 6^ il A-A |j A-A |[ A-B || B-B jj BC |j C-C || C-b"ll IM? || D-E
'p-d '] i ck: i r c ^ i r~c^nr B-AirA-Air A-AifA^Bnr B-BirB^cni c-c irc^oni d-d ir
E-oir p-D ir p ^ r c ^ n i c V if^ 'n r'^ iA irX-^ nrA ^ ir A-B"irVB~ii bc h c-c ~ii c-p~it d^
Mil E-E Ii E-D II D-D II &c' II C-C || C-B ii '^ " ]r &A~ir~A^'"n^^( A-6 ] | B-8 || BC [| C-C ir^DHf
II E-E H' E-D II" D-D'H oc ' ll C-C i r C ^ r T B A-A i r A-A"ir A-B~1| &-8 II BC II c-c II C-D
I g r x ^ ir i^ r w i r 'D f ]r'i^nrc-cnr~c:inf a.b irw~]rB::^i c-c ir
irT F ~ ji E-E ir E-D ir cM3'irb-c"ii c-c ii c-b i r b^ ir& ^ 'H 'A -A ir A -xn r a-b " !! b^ cbc ii c-c
TTI I r y i .^ i^ L ^ L ^ l
I ''rT^i q
^
The project in fact integrates robotic technology on the production side, so that the age-old
rectangular fornn of the brick can be successfully overcome, while maintaining the efficiency of tried
and true mass-production methods. The resulting mass-customization of brick form s opens up a
new design space in brick construction. In order to combine ornam ental effects with sustainable
design in architectural ceram ic system s, this work also developed strategies to improve the energy
param eters, the research shows that it is possible to optimize the material configuration to generate
solar-selective therm al m ass system s that include self-shading. Exploiting the advantages of the
geometric complexity available through the proposed shaping process, the new material system
merges aesthetics and environm ental perform ance by creating design pattern articulations that
respond to variable climatic and diurnal cycles. The resulting integrated w orkflow would eventually
let both architects and m anufacturers re-think the way brick building system s can be used, and let
designers re-create novel and unexpected relationships with this traditional m aterial.
13. Stefano Andreani and Martin Bechthold, "[R]evolving Brick: Geom etry and Perform ance Innovation in Ceramic
Building System s through Design Robotics," in Fabio Gram azio et al., eds. Fabricate: Negotiating Design and Making
(Zurich: Gta Publishers, 2014).
FIGURE 2
©Stefano Andreani.
Concepts such as complex geom etry optimization, material structural efficiency, and advanced
fabrication methods find unique expression in the design and fabrication of the 'Floating Ceramic
Shell' - a structural ceram ic and concrete shell system being developed as a collaboration between
tlie Harvard Graduate School of Design and the Institute for Structural Design at TU Graz, Austria.
Sponsored by the Valencia Trade Fair Association and by ASCER, the mock-up of the ceramic shell
system was exhibited at the 2014 Cevisam a in Valencia, Spain as the centerpiece of this year's
international show. Floating overhead like a giant pair of wings, the installation consisted of a
ceramic deck m easuring about 7.8 by 4.5 meters in a plan view, suspended from the centre columns
of the fair building. This shell has a double-curvature surface, which is composed of ju st a single
type of ceramic piece - whereas double-curvature surfaces usually need several types of pieces. In
order to achieve this simplification, the ceramic units overlap each other, thus accommodating the
The large ceramic stoneware elem ents are designed to enclose channels that form a perpendicular
network of connecting ultra-high strength fiber concrete ribs. Ribs and tiles form a composite
structural surface. Structural tests will be eventually performed on various-scale prototypes before
Material system research pursued at Harvard GSD thus em braces a variety of m aterialsand techniques.
A fu rth e r investigation is the 'Robotic Casting' workshop at the 2012 Robotics in Architecture in Vienna,
run by Prof. Martin Bechthold, Nathan Kin g an d th eau th o r.Th e w o rksh o p e xp lo re d novel approaciies
to serially customized casting processes enabled through the strategic deployment of 6-axis robotic
m anipulators. Traditional casting techniques currently limit designers to repetitive use of identical
elements in order to distribute the cost of the molds. Serialized customization, mass-customization
or related techniques that produce highly variable, individualized design expressions are rarely
possible, yet increasingly demanded in pursuit of contem porary architectural form s. Robotic casting
is a new casting method developed by the Design Robotics Group that uses strategically designed
molds that are oriented robotically and, when filled with variable material volum es, produce families
of varied yet sim ilar shapes. Studies performed during the w orkshop proposed modular assemblies
driven by acoustic, lighting, views, or assem bly techniques of interlocking and staggering. Robotic
code was created with a DRG Grasshopper component that outputs angle rotations and volume
measurements for each piece. Following the digital design process, the workshop team produced,
PROKmD^Al.MGlO(L ;PIAM
FIGURE 4
0 Stefano Andreani.
The projects described above, particularly the ones developed in workshop contexts as collective
experience, can be seen as m anifestations of a fundam ental objective at Harvard GSD: design and
manufacturing can really perm eate each other, blurring the boundaries between the digital and
physical worlds. The widespread m ovem ent of fab-labs, the increasing use of 3d printing techniques,
and the creation of ecosystem s or hubs of innovation in cities reinforce the idea that the em ployment
of digital-fabrication technologies is rapidly becoming ubiquitous. Digital design, the use of big data,
and nanotechnology can play a valuable role in creating new m anufacturing methods, processes and
systems, and not just products. Looking at econom ies as product space, Harvard economist Ricardo
Hausmann argues that "developments around information technology, 3-D printing, and networl<s will
FIG U RES
® Stefano Andreani.
In this context, the Responsive Environnnents and Artifacts Lab (REAL) at the Harvard Graduate
School of Design, led by Professor Allen Sayegh, looks at how new technologies can impact the built
environm ents in which we live, work, and play. Pursuing the design of digital, virtual and physical
worlds as an indivisible whole, REAL investigates the all-pervasive nature of digital information
and interaction at scales ranging from our bodies to the larger urban contexts we occupy and the
infrastructures that support them . Through multi-disciplinary projects in the U.S., Europe and China,
REAL is developing novel theoretical fram ew orks for tackling pressing problems of contemporary
cities, from the redefinition of local manufacturing activities for bringing factories back to cities,
through the developm ent of new digital and physical tools for Improving health and wellbeing of
urban environm ents, to the deployment of advanced technologies in high-rise, high-density cities
15. Antonio Regalado, "You Must Make the New M achines," in The Next Wave of M anufacturing, MIT Technology
Review, 2013.
that mediate that scale of the body with the scale of the tall building.
The future dynam ics of contem porary cities will likely encom pass a seam less integration of
smart objects, interactive environm ents, and digitally-augmented fabrication m achines with the
everyday life of citizens. As designers, it is then our responsibility to develop ecological models of
implementation for ensuring the creation of high-quality environm ents In our cities.
Stefano Andreani
Stefano A n d re a n i is a licensed architectural engineer and educator interested in the strategic im plem entation of
advanced technologies in architecture fo r innovative design solutions. As Research Associate at the G raduate School
of Design of Harvard University, he pursues research on perform ative m aterial system s within the Design Robotics
Group (DRG) and on the future of learning and healthcare practices and environm ents within the Responsive
Environments and Artifacts Lab (REAL). Andreani received a M aster in Design Technology degree from Harvard
GSD and a M aster in A rchitectural Engineering from the University of Perugia, w here he w as Assistant Professor
of Architectural Technology. His professional w ork m ainly focuses on high-rise design, as Project Designer at RBA
Studio and as Design Technology Consultant for the South China University of Technology.
(Digital) Form-finding
Alberto Pugnale
L e c tu re r in A rc h ite c tu ra l desig n at th e U n iv e rsity o f M e lb o u rn e
In architecture and structural engineering, 'form-finding' identifies the process of designing optimal
structural shapes by using experim ental tools and strategies, i.e. physical m odels', to simulate
a specific mechanical behavior. The reverse hanging method is the oldest and probably most
diffused form-finding technique for arches, vaults and shells - a physical model, made with elastic
cables or m em branes with no rotational stiffness, is first subject to gravitational forces to obtain a
structural state of pure tension; such a form , which is called "funicular", is then inverted to identify
the mechanical compression-only situation. This principle was first mentioned in a publication by
Robert Hooke in 1675^ With a Latin anagram , only solved in 1701, he proposed to reverse the curve
which was generated by a hanging chain, under self-weight and supported only at its ends, in order
to define the optimal structural form of an arch (figure 1). Such a curve is called "catenary" when the
chain presents a constant distribution of weight^ Initially confused with a parabola by Galileo Galilei,
the catenary was then mathem atically described by David Gregory in 1697“.
1. A detailed description on the use of sm all-scale physical m odels fo r structural design can be found in: Addis
B„ Toys that save millions' - A history o f using physical models in structural design, in 'Th e Structural Engineer", April
2013, pp.12-27.
2. See: Hooke R., "A description of helioscopes and som e other instrum ents made by Robert Hooke, Fellow of the
Royal Society", London: T.R . for John M artyn, 1676, p.31,
3. See: Adriaenssens S., Block P., Veenendaal D., W illiams C. (Eds.), "Shell Structures for Architecture", Routledge,
2014, pp. 7-8.
4. See: Kurrer K., 'T h e history of the theory of structures: from arch analysis to computational mechanics", Berlin:
Ernst &Sohn, 2008, pp. 213-216.
FIGURE 1
A catenary arch and its inverted shape.
Infinite ideal form s o fa compression-only arch can be generated by varying two boundary conditions:
(1) the applied loading; and (2) the span/rise ratio. Figure 2 shows how these param eters affect the
FIGURE 2
Variations of the boundary conditions and respective hanging chains.
The same principle can be extended to the three-dim ensions in order to find structural form of
Reinforced Concrete or m asonry vaults and shells, as well as of steel or tim ber gridshells. Roughly,
three model constructing methods can be distinguished. The first is based on the use of strings,
with the function of discretizing either barrel vaults, if placed in parallel, or domes, when disposed
in a radial way. Bags of sand are then added to control the distribution of weight. Antoni Gaudi
designed several buildings with the aid of this procedure. Rather known is the model he realized for
the Church of Colonia Guell, in which two hierarchical orders of strings w ere used - the first defined
the geometry of colum ns, main arches and supported the second, which established, indeed, the
form of walls and vaults. In 1982/83, the Institute for Lightweight Structures in Stuttgart performed
a reconstruction of the original Gaudi's model, dem onstrating that its preparation is highly time-
consuming and precision becomes a key aspect of the simulation in order to get accurate results^
The second model making technique takes advantage of non-rigid nets, realized either with chains
or elements, in order to find structural form for gridshells®. The Multihalle in Mannheim (1973-74)
is the biggest and probably most relevant building which was designed with this method. A 1:300
wire-mesh model was initially built by Frei Otto and his research group in Stuttgart to establish the
basic geometry - two main halls connected by a tunnel, of which the larger spans about 60 meters. A
1:98.9 scale model was then prepared to refine the shape o fth e gridshell and determ ine the precise
position o fth e boundary supports (Figure 3). A rather sophisticated design phase that followed was
the survey o fth e model through photogram metry - geometrical data were then transferred into
F IG U R ES
Schemes o fth e second form-finding model o fth e M ultihalle in M annheim, which represents every third lath of
the real structure.
5. See: Tomlow J, (Ed.), "IL 34. The model: Antoni Gaudi's hanging model and its reconstruction - New light on the
design o fth e church of Colonia Guell", Stuttgart: Institute fo r Lightweight Structures (I L), 1989.
6. See: Hennicke J. et al., "II 10. Grid Shells", Stuttgart: Institute for Lightweight Structures (IL), 1974.
7. See: Burkhardt B. et al., "IL 13. Multihalle Mannheim", Stuttgart: Institute for Lightweight Structures (IL), 1978, pp.
33-55.
The third method of making hanging models was developed by Heinz Isler in 1955, and it was specific
for the form-finding of RC shells which are a continuous type of structures. Such a characteristic was
simulated through suspension of wet pieces of fabric or m em brane - the derived form s were then
frozen and finally inverted®. Very different results can be obtained by varying the type of fabric used,
i.e. the properties of the model material play an im portant role in the process.
Amongst the shells Isler designed throughout his career, the ones of the Deitingen service station,
built in 1968 on the Bern-Zurich motorway, and the roof of the open-air theatre in Grotzingen, dated
1977 and with a thickness of only 11 cm, are the most representative of the structural lightness this
FIGURE 4
Sinnulation of a hanging m em brane model and its corresponding cable net one.
Apart from the reverse hanging method, a few other experim ental ways of finding structural form
through physical models have been developed. The first is based on stretching cables or elastic
m embranes across different edge fram es - this sim ulates the pre-stress state typical of cable
nets or tensile structures and generates, consequently, their geometry. The shape of small scale
tensile structures can also be found dipping closed fram es, made for instance of thin wire, into a
membrane-forming liquid®. This procedure form s soap film s, which are m athematically defined as
"minimal surfaces"'". Frei Otto has been a pioneer in this field. Together with his research group
of the Institute for Lightweight Structures in Stuttgart, he defined an extensive set of rules for the
generation of soap film s. They classified such minimal surfaces according to the number of closed
fram es they needed to generate them . For instance, saddle shapes can be obtained from a single
8. See: Isler H., New Shapes fo r Shells - Twenty Years After, in "Bulletin of the International Association for Shell Struc
tures", no,71/72,1980, pp. 9-26. See also: Isler H., New Shapes fo r Shells, in"Bullettin of the IASS, n o .8 ,1961; and: Isler H.,
Concrete Shells Derived from Experimental Shapes, in "Structural Engineering International, V o i.3 ,1994, pp. 142-147.
9. See: Otto F., Rasch B., "Finding Form: Tow ards an Architecture of the Minimal", Axel Menges, 1996, pp. 58-59.
10. Several exam ples of m inimal surfaces can be found in: Gray A., Abbena E., Salam on S., "Modern Differential
Geom etry of Curves and Surfaces with M athematica", 3rd ed., Boca Raton: CRC, 2006 (1993).
closed edge. Two ring fram es are necessary to form a catenoid, which is the surface of revolution
ofthe catenary curve, and infinite other different soap film s can then be found if further two-
FIGURE 5
Generation of soap film s from one (left), two (m iddle) and several closed fram es (right).
Two projects by Frei Otto are worth to be m entioned: the Tanzbrunnen tensile structure in Cologne,
dated 1957, and the large roofs built in 1972 for the Olympic Gam es in Munich. Minimal surfaces have
also been used for the form-finding of compression-only structures. A rather interesting example is
provided by the RC bridge designed by Sergio Musmeci over the Basento River in Italy (1967-69)'^.
FIGURE 6
Bridge over the Basento River, Potenza (Italy).
11. See: Bach K., "IL 18. Forming bubbles”, Stuttgart: Institute fo r Lightweight Structures (IL), 1988, pp.73-219.
12. No English sources have been published on the w ork by M usmeci. However, the Italian books are: Nicoletti M.,
Sergio Musmeci: Organicita di form e eforze neilo spazio, Torino: Testo & Immagine, 1999, and Guccione M., liponte e
la citta. Sergio Musmeci a Potenza, Roma: Gangem i, 2003.
A second alternative to the use of hanging nnodeis is called "pneumatic or inflated hill method". The
concept is rather intuitive: structural form is obtained through inflation of m em branes and can be
applied for the design of RC shells, as well as air-supported mem brane halls. During the 60ies, Italian
architect Dante Bini developed and patented a curious construction technique called "Binishell",
which took advantage of this form-finding process in order to erect RC domes in a rapid way - concrete
pouring was initially performed overa flat pneumatic preformed form w ork, and then inflation allowed
rising and roof completion within a couple of weeks'^ Other alternative form-finding methods are
such experim ental strategies can be found in the book: "Finding Form: Towards an Architecture of
the Minimal" by Frei Otto and Bodo Rasch'''. Analytical methods have been developed too. In this
case, structural form is defined using analytically well-known geometries, such as cylinders, spheres,
ellipsoids, or form s obtained through operations on them . Felix Candela designed several examples
of this kind. The Church of Our Lady of the Miraculous Medal, completed in 1955 in Mexico City, and
Los M anantiales Restaurant in Xochimilco, dated 1958, are two outstanding buildings resulting from
towards structural optimum. From the conceptual point of view, this cannot result in free-forms,
which are 'fre e l/g e n e ra te d apart from any structural and construction principle. In other words, the
representative component of architecture cannot be separated from its conformative core. Digital
technologies are radically modifying this aspect. Numerical calculation techniques are replacing
entirely experim ental structural design and analysis methods - the way now is to use mathennatical
optimization which, on the basis of one or m ore chosen criteria, takes advantage of the computation
power of the com puter to interactively search for optimal solutions to a problem from among a
series of possible candidates. This change is relevant, from the architectural design point of view, for
at least three reasons. Unlike in classical form-finding, the topology of a structural system no longer
needs to be fixed. It can therefore become the object itself of the optimization process, as in the
case of the design of the new TAV station in Florence, which was developed by Isozaki and Sasaki on
Compared to the projects by Heinz Isler and Frei Otto, optimization also allows the original form-
finding concept, literally aimed at the search of the optimal form , to be changed into what can be
13. Bini D., "Building with air", London: Bibliotheque M cLean, 2014.
14. See: Otto F., Rasch B., "Finding Form : Tow ards an Architecture of the Minimal", Axel Menges, 1996.
15. See: Cui C., Ohm ori H., Sasaki M„ Com putational M orphogenesis of 3D Structures by Extended ESO Method, in
"Journal of the International Association for Shell and Spatial Structures, Vol. 44, no. 141, 2003, pp. 51-61. The com
petition project for the new TAV station in Florence is also described in: Sasaki M„ Flux Structure, TOTO, 2005.
defined as "form-improvement"'*’ - this new process is instead aimed at improving the performances
of an already existing spatial configuration, which does not necessarily mean reaching the structural
optimum. For example, as far as the Kagamigahara crem atorium is concerned, no physical model
used to obtain the inverse of the tension-only hanging m em brane would have been able to translate
the idea of the architect Toyo Ito into a structure. Instead, through optimization, the floating RC
roof, figuratively inspired by a cloud, was first freely modeled as if it were a sculpture and was then
The last fundam ental aspect of optimization is that it is not ju st limited to resolving questions of a
static nature, which instead is an intrinsic characteristic of form-finding based on physical models.
Techniques like GAs can be used in all those cases in which an architectural perform ance can be
formulated through a m athematical function, such as in the case of acoustics or light, and, technically
From being a simple resolution instrum ent, optimization is becoming an efficient "form-exploration"
tool to support conceptual design. It is forcing the limits of classical form-finding and defining
several new research directions that redefine entirely the relationship between architecture and
engineering.
Alberto Pugnale is a lecturer in Architectural design at the University of M elbourne, A ustralia. In 2007, he won
the fifth edition of the IASS HANGAI Prize, related to the study of com plex architectural/structural bodies. He
has been an assistant professor at Aalborg University, Denm ark (2010-2012), and an invited lecturer in France
and Italy. At present, he is m em ber of the International Association fo r Shell and Spatial Structures (IASS) and
is a licensed architect in Europe. His research interests are in the com putational morphogenesis of free-form
structures, reciprocal structures and history of construction.
http://albertopugnale.wordpress.com/
15. The term "form -im provem ent" w as coined by the author in March 2007 for a short online article.
17. The Sensitivity Analysis is explained briefly in: Sasaki M., Flux Structures, TOTO, 2005.
Only-compression vault obtained through digital form-
author.
9 digital simulation
Darticle-spring systems
Structures that transm it forces through axial compression or tension have an increased capacity
to withstand loads with sm aller cross sectional areas. Traditional form-finding strategies for axially
loaded structures include: complex physical models, hanging chain networl<s, stretched fabrics, soap
films etc.. These techniques are difficult and time consuming. As a result, few designers investigated
these form-finding potentials. Traditional form-finding techniques can now be digitally found
using particle-spring systems that simulated the physical behavior of deform able bodies. Originally
developed for character animation and cloth sim ulation, particle-spring systems have emerged as a
powerful technique for form-finding. W hereas traditional techniques were difficult to apply, digital
simulations allow designers to investigate form , in real time, by updating forces, supports and
physical properties.
A particle-spring system is a discretization of a continuous model into a finite num ber of masses,
called particles, connected by perfectly elastic springs. The main components of a particle-spring
system are:
• Particles: each particle in the system is a lumped m ass, that changes position and velocity
• Springs: a spring is an elastic linear connection between two particles that behaves
according to the Hooke's law: a spring has an initial resting length and a stiffness value (k).
• Forces: weights and external loads are simulated by vectors that are applied exclusively
to particles.
• Anchor Points: particles that do not change position during the simulation.
FIGURE 9.1
A particle-spring system that sim ulates a square m em brane anchored at its corners. Force vectors are applied to
the particles.
Once the simulation has started, the particles move from their initial position until they reach an
equilibrium state which is dependent on the initial geometry, the force vectors, and the springs'
defined properties. In accordance with Hooke's law, the lower the stiffness or k value the greater the
spring elongation. Since particles in this system behave like spherical hinges without the capacity to
resist moment forces, equilibrium solutions carry defined loads exclusively through axial forces.
Solvers operate iteratively within a main engine, meaning every subsequent iteration narrows the
position and velocity of particles from the previous step towards an equilibrium solution. This process,
similar to a key-frame anim ation, creates the illusion of movem ent when fram es are calculated in
a continuous sequence. Several particle-spring software packages have been developed recently
including: CADenary^^ written by Axel Kilian, Dan Chak and Megan Galbraith in 2002. Most particle-
spring software packages are standalone and do not fully integrated into a CAD or other modeling
software. Furtherm ore, many of these standalone products are difficult to m aster. In contrast.
Kangaroo a physics based particle-spring system engine developed by Daniel Piker^® (development
team: Robert Cervellione, Giulio Piacentino, Daniel Piker), is easy-to-use, designer-oriented, and is
Param Ma^s Sets Vector Curve Surbos Mesh tnlersect Trartsfcrm Oi^itay TreeS Wb K^ipede i ' LundiBcct E^a
FIGURE 9,2
The Kangaroo toolbar.
Kangaroo enables designers to interact with form through particle-spring system sim ulations in real
• Direct Interaction: includes the manipulation of anchor points, forces and spring properties;
• Param etric or Associative Interaction: anchor points, forces and spring properties can
be param etrically linked to other parts of the 3D model. For example, the anchor points
can be defined as the end points of a set of lines whose position is defined by another part
of the algorithm,
NOTE 25
http://designexplorer.net/newscreens/cadenarytool/cadenarytool.htm l
NOTA 26
Daniel Piker is a researcher at the frontier of the use of computation In the design and realization of complex form s and
structures. After studying architecture at the AA, he worked as part of the Advanced Geometry Unit at Arup, and later
the Specialist Modelling Group at Foster+Partners. He has taught num erous studios and workshops and presented his
work at conferences around the world, and consults and collaborates with a wide range of practices and researchers.
9.2 Kangaroo w orkflow
The workflow of Kangaroo relies on the sam e set of rules and operations for low nodal models, such
as single digital chains, as high nodal models such as multi-supported m em branes. The Kangaroo
particles ----
lines springs ----
particle-sphng Kangaroo
I — discretization
system
points forces ---- engine
FIGURE 9.3
The Kangaroo workflow.
Discretization: a deform able body, e.g. a fabric m em brane or a flexible cable, is created
and NURBS-surfaces are converted to m eshes (i.e. points and lines). Kangaroo cannot
process NURBS-surfaces and NURBS-curves. The main components used for discretization
are hosted within the Extract panel of W eaverbird. We can also find useful components
Particie-spring system : after a geometry has been discretized, lines are converted into
springs and points into particles using specific components hosted within the Kangaroo
toolbar. Vectors representing forces are applied to particles, and the anchor points are
assigned.
Kangaroo Engine; particles, springs, forces and anchor points are connected to the
Kangaroo Engine in their respective slots. Toggling between True and False statements,
using the component Booiean Toggle (Param s > Input), starts and stops the simulation,
While the simulation is running, particles move until an equilibrium state is reached. For
FIGURE 9.4
Representation of a particle-spring system that sim ulates a flexible cable.
• D iscre tiza tio n : the initial geometry is discretized by splitting the set line at division points -
calculated by the component Divide Curve - using the component Shatter (Curve > Division).
The N-input of Divide Curve sets the num ber of divisions: the greater the number of division
points the greater the final deformation. The Divide Curve points are the particles in the
system where force is applied or restraints are set. In the following example, N is set to 10.
P article -sp rin g syste m : the component Shatter outputs a series of unique lines that
are converted into springs using the component Springs From Line (Kangaroo > Forces),
The output (S) of the Shatter component stored in the container component Line^^ is
connected to the Connection-input and to the Rest Length-input of the Springs From Line
component. The output (P) o f Divide Curve is connected to the Point-input of the component
Unary Force (Kangaroo > Forces) which applies a force-vector to every Input point or particle.
In this case, a force vector acting In the negative Z direction w/ith a magnitude of 10 is set.
Force vectors can be set in any desired direction. Lastly, the anchor points are defined as
FIGURE 9.5
Particle-spring settings.
• Kangaroo Engine: the KangarooPhysics engine (Kangaroo > Kangaroo) collects the
outputs of Springs From Line and Unary Force in the Force objects slot, w h ich m u st be
s e t to " fla tte n ". The AnchorPoints input is satisfied by the end points of the initial curve.
By default the simulation influences only the particles, w/hich change velocity while the
NOTE 27
The Line container is useful to spot any Inputs different from llne-geometries {Springs From Line can process Just
line-geometrles). If other types of geom etries, e.g. curves, come in the Line container. It will turn red.
simulation is attempting to reach equilibrium. To visualize the simulation of the cable
seeking equilibrium , the output of the Shatter component is connected to the Geometry
To start or stop the simulation a Boolean Toggle and a Timer (Param s > Util) are connected
to the KangarooPhysics component; which starts (False) and stops (True) the simulation
and defines the num ber of fram es per second respectively. Alternatively, if the component
is double clicked a contextual panel will appear with a set of buttons: stop, play, pause.
In the example, the Timer is set to 5 milliseconds (right-click > Interval > 5). The simulation
can be started by double-clicking the toggle and changing the Boolean statement to False.
Once the simulation is started the particles move in the direction of the force vectors which
are restrained by the elastic-linear springs properties. The cable's geometry changes several
The frontal view show s the sequence of positions taken by a cable while the Kangaroo sim ulation is running. The
cable bounces several tim es until it reaches an equilibrium state (dark polyline).
If changes are made to the initial geom etry or to the discretization process the simulation is required
to be reset and then started again, to visualize the influence of the changes. Other param eters, such
as the Unary Force direction and magnitude, and the location of the anchor points can be changed
The position of the constraints can be changed manually by setting the anchor points from Rhino
instead of relying on the End Points component. Once the simulation has started the position of the
anchor points can be cchanged "manually": the simulation will react to the change and, once again,
seek equilibrium.
FIGURE 9.7
The anchor points set from Rhino are collected in Grasshopper by the container com ponent Point.
FIGURE 9.8
We can m anually move the anchor points set from Rhino: the cable will react as if it w ere in the physical world.
Manual interaction with the model can lead to errors if the points are not returned to their original
position before stopping and starting a new simulation. If the simulation is run without returning the
anchor points to their original position the physics engine will not recognize how to restrain the model.
To add additional or new anchor points, points can be set from Rhino or calculated within
Grasshopper. Anchor points m ust be always positioned at particles. For instance, an anchor point
FIGURE 9.9
A cable simulation with three anchor points.
Kangaroo's inputs are defined as points, lines or meshes. Kangaroo's output is similarly defined as the
same kind of geometries. An elastic cable can be simulated by connecting the ParticlesOut-output to
the V-input of the component NURBS Curve, defining an interpolated curve through the points. This
strategy can be useful to achieve continuity; however, it can lead to physically incorrect results since
the Nurbs-curve acts rigidly around point B, which is impossible since particles act as spherical hinges,
Force objects
' AnchorPoints
Settings
Geometry
SimulationReset
FIGURE 9.10
How to get continuity using an Interpolate Curve com ponent connected to Particles Out.
9.4 Elastic behavior: Hooke's law
When the cable reaches an equilibrium state induced by influence of the external forces, and resisted
by the elasticity of the springs, the length of each segment increases. For example, the cable illustrated
below has a start length of 10 units. The curve is discretized into 5 parts each 2 units in length. Six
identical unary forces with a magnitude -20 units in the Unit I direction, are applied to the particles;
yielding a final curve with an overall length of 10.46 units, hence a deformation of 0.46 units. This
deformation distance is not split evenly among the segments, instead the springs closer to the
reactions elongate further. This is because, they bear the weight of the other springs.
10
(5 ) Force objects I
AnchorPoints j
Settings I
0 Line(L:2.097829 cm)
Geometry I 1 Line(L:2.09149 cm)
SimulationReset I GeometryOut 2 Line(L:2.089277 cm)
3 Line(L:2.09149 cm)
4 Line(L:2.097829 cm)
{0; 0; 0 ; 0 }
0 10.467915
X
FIGURE 9.11
The deform ation causes an uneven extension of the springs with a higher extension of anchored springs.
Kangaroo's elastic behavior follows Hooke's law which states: displacements or size o f the deformation
o f a body (treated as a spring) is directly proportional to the deformingforce or load. Under these conditions
the body returns to its original shape and size when the loads are removed. Mathematically, Hooke's
F=k x m
where:
k: is a positive constant called the Stiffness. The value of/c depends on material and cross
sectional geometric properties of the elastic body. The constant k is comm only expressed
in N/cm;
X is the change in length or deformation of the body (spring), commonly expressed in cm.
X
2X
FIGURE 9.12
To illustrate how the component Springs From Line operates a 100 N weight is applied to an anchored
cable with an initial length of 80 cm and a stiffness of 2 N/cm. In accordance with Hooke's law, the
X= F / k X = 1 0 0 /2 = 50 cm
FIGURE 9.13
E
o
o
CO
II
1-1
o
ro
- c F =100N
E
o
m
II
X
B'
If the load Is removed, the cable will return to its start length (80 cm). The length a cable reaches
when loads are removed is called the R e st Length, which not always coincides with the start length
(as explained later). The tim e the cable takes to reach an equilibrium state depends on the Stiffness
as well as the Damping Constant which is related to friction caused by drag. The greater the Damping
Constant the lower the deformation velocity. The Damping Constant does not affect the change in
( 0}
0 130.0
The relative algorithm in G rasshopper considers the cable as a single spring; the calculated results of
the spring's deformation match Hooke's law. The Springs From Line component em beds the physical
characteristics discussed in the previous exam ple, as well as other im portant param eters including:
• C on nectio n: springs are linear elastic connections. The Connection-input requires lines,
any other geometry will yield null results. Every line’s initial length is called the Start
Length.
• S tiffn e ss: according to the Hooke's law, the Stiffness-input, sets the springs' stiffness or
k value. The higher the k value, the lower the deform ation. Stiffness is determined by
• R est Len g th : the length that a spring endeavors to reach once the loads are removed. The
Rest length-input is essential to sim ulate behaviors of different m aterials. Three cases can
be distinguished:
7. Rest Length = Start Length. This condition mimics perfectly elastic behavior
and is achieved by connecting the springs (Lines) to the Rest length-input. All
—<
1 Une
2. Rest Length < Start Length. This condition im itates the effect of pre-tensioning the
springs which s lio rte n s their length. Rest Lengths which are less than the Start
Length sim ulates tensile materials that attem pt to minimize their length or area.
m easure the initial springs' length then multiplying it by a R est Length Facto r
5. Rest Length > Start Length. This condition replicates tine relaxation or lengthening
Length to m easure the initial springs' length then multiplying it by a Rest Length
U p p e r/Lo w e r cu to ff: sets limits for the springs to operate, below or above respectively.
P la stic ity : the m axim um elastic deform ation, as compared to the rest length.
9.5 Catenary sim ulation
Acatenary curve is formed by a perfectly flexible, uniform ly dense, and inextensible cable suspended
y = a-cosh(x/a) [2]
The distance from the x-axis to the point on the curve with a tangent line slope equal to 0 is expressed
as variable a.
FIGURE 9.14
Catenary graph fo r different values of o.
The curve can be calculated by the Evaluate (Fx) component, as showed below, with a set to 2.
shortest list
FIGURE 9.15
Algorithm based on the catenary equation.
A catenary curve can also be drawn by the component Catenary (Curve > Spline), which embeds the
equation of a catenary curve [2]. The Catenary component requires as inputs: start (A) and end (B)
points of the catenary curve, the length (L) of the curve, and the gravity direction (G).
10 units
FIGURE 9.16
The catenary algorithm and generated curve.
Catenary curves can also be simulated using particle-spring systems. The catenary definition is: "a
curve form ed by a perfectly flexible, uniformly dense, and Inextensible cable suspended from its endpoint;/'.
2. To be perfectly flexible;
3. To be uniform ly dense;
4. To be inextensible.
These conditions are not entirely met by the deform able linear-curve discussed previously (9.3). In
fact, even if a high stiffness value is set, the springs will not be inextensible, so the fourth condition
is not met. As a result the simulation will generate a curve that is slightly different from a catenary
length = 20 units
FIGURE 9.17
Aline with applied gravity loads at the particles, will output a curve that is slightly different from an catenary curve.
To more closely approxim ate a catenary curve an arc can be used as the starting geometry, described
using the component/Arc 3Pt, through a set of three points. Then the m easured arc-length is set
10 units
length = 20 units
FIGURE 9.18
A close approxim ation of a catenary curve can be obtained starting from an arc.
Initial geometry: is an arc with a length 20 units drawn through three points: A, B and C.
Discretization: the arc is then divided using the component Divide Curve with the N-input
set to 50, yielding 51 equidistant points. A polyline is created through the resulting points
and exploded into segm ents by the component Shatter in order to return 50 lines. The
lines are then converted into springs, each initially m easuring 20/50 = 0.4 units.
• Particle-spring system : the output of the Explode component is connected to the
Connection-input of the Springs From Line component, after passing through a Line
container component. To achieve inextensibility of the cable: the rest length is set such
that the rest length < start length using a m ultiplier factor of 0.995, and a Stiffness-input set
to 7000 units. Gravity loads are applied to each particle using the component Unary Force
(Forces > Kangaroo) in the Z direction with a magnitude of -1, the resulting vectors are
connected to the Force objects-input of the component Kangaroo. Set points A and B, are
combined into a single list using the Merge component and connected to the AnchorPoints-
AnchofPoiitts
Settings
G e o m « ry
SimuiationR»set H G«<m)«tryOut
When the simulation is initiated the segmented arc moves in the negative Z direction taking the
form of a catenary cable. The calculated polyline complies with the four conditions of the catenary
definition. The segm ents change m inim ally in length from their start length (0.4 units) after the
simulation.
FIGURE 9.19
The segmented arc sim ulating a cable m oves in the negative Z direction taking the form of a catenary cable.
t 0 ; 0 ; 0 ) []
0 0 .4 0 1 5
1 0 .4 0 1 3 6 1
2 0 .4 0 1 2 2 2
3 0 .4 0 1 0 8 4
4 0 .4 0 0 9 4 6
5 0 .4 0 0 8 0 9
6 0 .4 0 0 6 7 2
fO;O fO;O I
0 1 9 .9 9 7 1 2 5
FIGURE 9.20
The segm ents m inimal change in length from their start length (0.4 units) after the sim ulation.
. B
FIGURE 9.21
The image show s the sequence of positions taken by the arc-shape cable, from the initial configuration to the final
catenary form .
So far the Unary Force value (representing self weight) has been set arbitrarily. More accurately,
the Unary Force should be set by dividing the cable's total weight by the num ber of particles. If
the catenary has a weight of ION and is divided by 51 particles each unary force vector will have a
FIGURE 9.22
The image shows a set of catenaries w hose start-points lie on two freeform fram es.
9.6 M em brane sim ulation
To simulate m em branes or other sheet materials such as fabrics, a grid of springs is defined. Grids
can be established using num erous strategies; the most comm only used technique is to convert
a NURBS surface to a mesh, then extract the edges and vertices that will become the springs and
FIGURE 9.23
A grid of springs can be obtained by extracting vertices and edges from a m esh.
• Discretization: The behavior of a rectangular flat mem brane anchored at four corners
points and subjected to gravity loads can be simulated using particle-spring systems. To
construct the discretized model: first, a set NURBS surface is converted into a mesh using
the component Mesh Surface (Mesh > Util), then the components wbEdges (Weaverbird
> Extract) and wbVertices (Weaverbird > Extract) are used to extract the mesh edges and
vertices respectively.
I DISCRETIZATION |
/ «
Y
/
u
h n m ri io « l> - ^
V A
MA
N w ii H
( Q (
__
P article-Sp ring s y ste m : after the model has been discretized, the edges are connected to
the Connection-input. The Rest length-input is defined as a multiple of the start length using
a slider, enabling the springs to be conditionally varied. The output (P) of the component
wbVertices is connected to the input (point) of the component Unary Force; a force vector
with a magnitude o f -20 acting in the Z direction is applied to each particle. Next, the four
corner-points are extracted using the component MeshCorners (Kangaroo > Utility) and
PARTICLE-SPRING SYSTEM
AngleToJerance
Lastly the output (springs) of the component Springs From Line and the output (U) of the component
Unary Force are connected to the Force objects-input of Kangaroo, in flatten mode. The wbEdges
component output (L) is connected to the Geometry-input of the Kangaroo component to define
the geometry for the simulation to output. Double-clicking the Boolean toggle switching from True
to False initiates the m em brane sim ulation. The m embrane, anchored at its corners, is deformed by
the Unary Force vectors and resisted by the springs stiffness value.
■i=5SS-
1 Stfftvess
Damping
c
Rest length
CL.
UpperCutoff (O
LowerCutoff
Plasticiiy
@ Force objects
fSmSi
Out
AnchorPoints X
Iterations
Settings D)
C ParticlesOut
Geometry
SimulationReset GeometryOut
To visualize the m esli faces instead of edges the Mesh Surface component output (IVl) is connected
AK
/V /
FIGURE 9,24
The m em brane, anchored at its corners, is deform ed by the Unary Force vectors and resisted by the springs
stiffness value.
FIGURE 9.25
Mesh faces can be visualized instead of edges by connecting the Mesh Surface output to the Kangaroo engine.
Similar to cables, m em branes anchor points can be set from Rhino then adjusted with respect to
their XYZ position after the simulation is started. Manual interaction with the model can lead to
errors if the points are not returned to their original position before stopping and starting a new
simulation. If the simulation is run without returning the anchor points to their original position the
-dL,
FIGURE 9.26
Membranes anchor points can be m anually m anipulated in Rhino.
Of course a m em brane can be "multi-anchored" provided that anchor points are positioned on
particles. Membranes can also be anchored along their edges, by setting the anchor points as the
meshes naked vertices. The component Naked Vertices (Kangaroo > Utility) extracts the naked edge
a Force objects
AnchorPoints
Settings
Geometry
SimulationReset GeometryOut
Nakedr
M >
Z CiothedPts
NakwJPts
FIGURE 9.27
Top: m em b ran e w ith naked ve rtice s as a n ch o r points. Bottom : m e m b ran e w ith co rn e r and internal a n ch o r points.
The membrane's area can be minimized by setting tlie rest length factor to 0. With a rest length set
FIGURE 9.28
A membrane with Rest Length Factor equal to 0,
The membrane so far studied behaves like a cable net. To sim ulate a more rigid membrane,
diagonals can be added w hich prevent the m esh-faces from deforming into diamond shapes.
To computationally mimic the behavior of sheet materials two Springs from Line components are
FIGURE 9.29
Diagonals prevent the nnesh-faces from deform ing into diamond shapes.
FIGURE 9.30
Two Springs from Line com ponents are used to separate the mesh-edges and the diagonals.
Force objects | | j | | ( xa j)
A n cN >rP o ints® J„ .. I
K f l fteratiors (I
Settings !
SimulationResetl ■ •SeometryOut j)
Once the simulation is started the more rigid configuration no longer behaves like a cable-net, but
instead like a sheet m aterial. If the Rest Length Factor\s reduced the m em brane will form origami-like
creases.
' 'y
Additionally, different diagonals configurations can be tested which yield varying results. For
example, if one diagonal is set per quad (image A), asym m etrical behavior can be achieved by setting
different Rest Length values for the edges. The component WarpWeft (Kangaroo > Mesh) can also be
used to separate the edges of a mesh according to warp and weft directions (C).
\\ \ \ \ \ \ \ \ \ / \ / \ / \ / \ / \
\\ \ \ \ \ \ \ \ \ \ / \ / \ / \ / \ /
\\ \ \ \ \ \ \ \ \ / \ / \ / \ / \ / \
\\ \ \ \ \ \ \ \ \ \ / \ / \ / \ / \ /
\\ \ \ \ \ \ \ \ \ / \ / \ / \ / \ / \
\\ \ \ \ \ \ \ \ \ \ / \ / \ / \ / \ /
\\\ \ \ \ \ \ \ \ / \ / \ / \ / \ / \
\\ \ \ \ \ \ \ \ \ \ / \ / \ / \ / \ /
\\ \ \ \ \ \ V \ \ / \ / N/ \ / \ / \
\\ \ \ \ \ \ \ \ \ / \ / \ / \ / \ /
B
FIGURE 9.31
Different mesh configurations can be set to sim ulate specific behaviors.
9.5.1 Practical Exercise: m ulti-supported m em brane
The Bach Chamber Music Hall by Zaha Hadid Architects, composed of a continuous ribbon of
stretched fabric that intertwines to envelop the perform ers and the audience, is the focus of the
FIGURE 9.32
Luke Hayes.
Instead of studying the entire ribbon, a section is extracted and studied in a simplified model.
Specifically, the model investigates the behavior of a m em brane stretched on a truss support-
structure composed of 2 horizontal free-form beams and 11 vertical variable profile arc-shape
beams.
The com plete exercise can be found using the following QR code.
9.7 Shell behavior
Since particles behave like spherical hinges, without moment capacity, a discretized model cannot
act rigidly without additional restraint. For exam ple, a simulated mesh-sphere moving in the negative
Zdirection under the action of gravity will crum ple (even with reinforcing mesh diagonals and a high
stiffness value) when the sphere reaches the XY plane or the simulated floor. To prevent crumpling
Discretization: The mesh edges and vertices are extracted from a mesh sphere set
from Rhino. The points (or particles) are connected to the Unary Force component, and
the lines (edges and diagonals) are converted into springs. The diagonals are defined by
connecting the opposite vertices of each face using the Mesh Explode and Deconstruct Mesh
components.
mesh-sphere
Particle-spring system : The edges and diagonals are merged into a single list using the
Merge component. Since the mesh-sphere has triangular faces around the poles, the
edges and diagonals overlap. This condition would impact the sim ulation. The component
removeDuplicateLines (Kangaroo > Utility) removes coincident lines within a tolerance. The
Input and Rest length-input of the Springs component, with the stiffness set to 5000 units.
Lastly, the Shell component returns a shell force from the input mesh with an input strength
' P o in t ^ J
^ fa c to T j -18.000 0 '
\>--------- —u AngleFactor
)~ ~ < | Mesh
Mesh ....................
Sftength o> ShellForce
5
AngleFactor Tolerance o jllw
1
Subiterations
h t Floor
r ^
D ra g E
Restitution K
Settings
StaticFriction K
KineticFriction K
Settle K
Tumble
Sound
Solver
The Shell component is useful when simulating m aterials with bending resistance, such as steel or
rubber sheets.
'Synopsis' by Faisal A! Barazi, Michela Falcone,
Myrto Grigori and Vittorio Paris, one of the
projects of the AA Rome Visiting School "Form
As Unknown (X)".
Form as Unknown
Computational Methodology and Material Form Generation in the
AA Rome Visiting School Workshops.
(L ig h tn e s s . B e u k e rs , V a n H in te)
assembly of material system employs a series of characteristics of affections that relate one to
another through a system of events to behave in a particular way. The built world around us is
composed of relational system s that m aterially respond to the environm ent from which architects
and designers seek to rationalize and interpret in form . Evolving over centuries, the organization
and structure of our built environm ent is explicit in the urbanized development.
Cities that have resulted in the slow migration and flow of people in response to changes in technology
and economies of social organization are generated as a system of relational material events and
experiences. The rationalization of these experiences constructs an ordered and predictable form
that is recognizable as the built environm ent; it Is generated from a system of economies, and needs
social, and linguistic constructions that are nothing but accumulations o f materials
shaped and hardened by history (Manual De Landa. A Thousand Years o f Non Linear
In architecture we are concerned about material that defines space and inform s experience. The
form of any structure is the result and negotiation of material constraints and the forces that
act upon it to produce form . The form making properties are part of the component of behavior
embedded in m aterial. Behavior, material and architecture have the expressed relation to predict
Unl<nown - the exploration of material through behavior affects the way we see the development
of form and structures. Behavior generating form from the relationship of material performance
as exemplified in the work most fam ously of Antoni Gaudi, Frei Otto, Sergio Musmeci and many
others, is revealed through the interpretation of m aterial to become a related system of derivation.
Working through the experim entation with m aterials and utilizing the observations and discussions
from the fam ous trio, the Rome workshops sought ways to use this form making methodology
to experim ent with the translation of a material events to active agents in param etric terms. The
material properties them selves are an indication of form making potential, but are indicative inform
making and require a translation in scale and properties. The event in form generating becomes a
material guide to the understanding a method of interpretation that is material based. The material
experim entation indicates a specific effect of shape making that is translatable and predictable
based on interpretation. Form generation indicates the clues that can be computed to reveal a way
of seeing or understanding the form potential, but through a force generation rather than a purist
geometric topology.
Form finding as the method of developing the rational concept of form and structure is predicated on
the understanding of material as information. Otto's research in the perform ance of fabric and soap
film m aterials in the context of the developm ent of the methodology of light weight structures were
crafted from observable qualities in natural structures and material behavior. Understanding the
natural material organization has bred a new understanding of material for the development of new
architectural form . The structures that have been built in response to that exploration are many. The
knowledge of these structures has influenced the methods of construction, the use of materials and
the way we fabricate. With the more recent advent of param etric design strategies, originally with
MAYA and GC and now with Grasshopper, designers have been responsive to the understanding of
a new language of form . Although initially providing carefully ordered interpretation of geometries
that are artfully formed, they often were void of information that would reflect the making or indeed
the environm ent in which it w as placed. They appeared as unbuildable objects that had no relation
m aterially or dynamically to the forces that would engage m aterial in form and structure is often left
The wealth of algorithmic tools that have directly interfaced with the software, in particular
Grasshopper for its open sourced approach to developm ent, is now playing a larger role in the
development of architecture that is informed from the environm ent and by building strategies,
there is now a greater potential of interpreting the building information and environm ental data in
a series of code driven formalizing strategies. If we consider the vastness of data that is collected
today from the sources of research and raw data from the num ber of sensors that register behavior,
like mobile phones, personal devices, card data readers and other devices, there is an enorm ous
wealth of data that may influence the way we see and understand cities in which we live, and provide
a system of information based support to affect the way make architecture informed by data and
responsive to change.
Generative design methods and scripting strategies provide architecture the capacity of dealing with
large amounts of data and information affecting the composition of urban design and architecture. It
also holds a trem endous methodology for the understanding of responsive and mapping capability
In traditional form s of design points of analysis are fixed in the developm ent of a design strategy.
The information and decisions that make up the process are viewed as a snapshot in time or as an
aggregation of m om ents to a fixed picture while still in the information generation stage of design
development. Changes or fluctuations in time are flattened or discarded, subtleties and variation
An algorithmic approach leaves open the fixed point to be variable and responsive, creating a higher
process o f development to enrich form al information in the metric diagram. The metric
diagram Is constrained, and defined by limits without variable quantities. Bringing an order
Luigi Moretti first discusses the concept of the param etric diagram in architecture when he adopts
the mathematical term Param etric into an architectural lexicon in the 1940's and explores the
relational system s that are prevalent in the form of stadia built up of param eters affecting form.
Forms become defined by the "forces" acting on them . These forces are observable quantities that
formal system . This was of course a highly mathematical approach that was accomplished before
the use of com puters and software to aid in the data managem ent to control variables, but the form
What happens when we design through a process that utilizes information to affect a system to
become generative? A system that is reflective of the material forces that define form, generates
a computational methodology to engage the otherwise 'happy accident' and gives over the form
making to the computation of events in space. This methodology employs system s to control the
condition and context of an event but allows form to be driven from the event. This performative
approach to material form-making, driven from events and forces, offers a further dimension in the
direction of computational design strategies. Responsive components and building interfaces may
relate the environm ental data to reflect the potential of structures changing qualities or transforming
uses, allowing for a greater study of effectiveness utilization of spaces to enrich urban spaces.
The idea that our world is linked m aterially in a system of relations is well discussed in Manuel
de Landa’s book One Thousand Years of Non-Linear History. In computation the effects that drive
the forming of architecture is the understanding of data to inform human scale, movement and
The potential of architectural space to be derived through computation techniques through the
arrangem ent and organization of m aterial, offers an opportunity for new language of space to arise.
Often though new form s continue to emerge, but are all too close to the original typology from
rejecting the influence of material (De Landa). The material computation drives the principles of
making and understanding the responses and the structural diagram. IVIaterial computation has
long been used in engineering and m athem atics as models of behavior. Hooke' in 1675, used the
hanging chain model to decipher the form ula for the curvature of a catenary and was used on
the unique triple dome structure of St Paul's Cathedral, London and of course Antoni Gaudi with
his lengths of strings and lead weights, fam ously set out the agenda for understanding the way a
form will perform in space. Their interpretation of form then translated to the material form. That
translation clearly defined by the interaction of material in space. Architecture was once dependent
1. Robert Hooke's hanging chain. Robert Hooke (1635-1703) described the relationship between a hanging chain,
which form s a catenary in tension under its own weight, and an arch, which stands in com pression.
Form as Unknown / AA Rome Visiting Scliool Worksliops
Computation and Making
The premise of the research of the AA Rome Visiting School Worl<shops was the investigation of
computational form through material and perform ance. Basing the program on Musmeci's definition
of form as unknown was part of a larger discussion that outlines that actual form as part of a
development through behavior. Indeed computational design strategies are applied not just to
structures, but to the order and organization of architecture through the understanding of material
and behavior. In the study exam ple o fthe Basento River Viaduct, in Potenza, the design was envisaged
asthe result of a stressed skin stretching between support points and the bridge deck. The undulating
surface creates a unique spatial quality in the bridge that could be seen as a secondary route. The
material exploration that developed this concept was of an elastic surface stretching between points
to the degree of force to realize this form . Each of the anchors and fix points represents the force
through the surface to find the equilibrium in the form . The final form is translated to a compressive
system when it is constructed in concrete. The geometry however Is sim ilar and follows the material
computation o fth e material stretched in the model. In this computation approach the form is the
unknown of an equation w here only the conditions and behavior are given.
M aterial/Im m aterial
Computational m aterial inform s all aspects of the developm ent of material formation from
environment to behavior. Suspending the idea that a specific material has a particular presence
to investigate the relative essence of material in the area of affecting geometry. Deleuze wrote of
Spinoza in describing the unique formation o fth e material world as composed of a single substance
delineated by essences and affections (Deleuze on Spinoza). Through this simplicity it is conceived
as one substance in many form s. Forms are realized through forces and interactions and ruptures
through the substance. This represents an analogy of m aterial in computation. Materials respond
to forces and are characteristic by their nature 'pushing' back or resistance to those forces. In these
investigations it is conceiving of material not as a specific composition, but by its behavior. A behavior
of responses that can be decoded or represented computationally in a model. The decoding Informs
a process of computationally assem bling a strategy in code that follows, mimics, or resembles the
material responses.
C om putation/Param etric Strategies (Unm aking, IVlal<ing, Synthesis)
The workshop were set out as an investigation of a material phenomena w here the particular
responses are recorded and analyzed into the specific event in the material property. The process of
2) Making assembling a code of responses which mimic the force lead responses
the system of logic that records the force as a form generator. Unmaking refers to the decoding of
a material phenomena, a way of transcribing the observable changes of form from forces acting
through the m aterial. In the case of Musmeci and the material based experim ents relating to the
bridge, the decoding is related to the understanding of the minimal surface geometry and the
catenary surfaces which mimic the form of the stretched m aterial. The reference material describes
a specific geometry through an event. The event in this case is the forces that pull the material into
a state of equilibrium negotiating the forces through the surface geometry. The decoding of the
geometric response becomes the tool to investigate responses in a developable model geometry
that is translatable.
Making - developing a code that mimics the forces and begins to identify specific form generating
system s that will affect a design strategy. Making refers to the computation or parametric strategy
in design for understanding the assessm ent and analysis, and making a proposition based on the
observable quality to guide or inform the design process. Investigating the information available
to make a proposal defining the constraints of the form generating strategy. In this sense it is
interesting to draw a comparison to the mimetic strategies through observation that informed Da
Vinci's research in physical phenomena, guiding the design of machines and devices, learned from
the environm ent, observation of forces and defining form s. The design of machines were based on
the observation and decoding of the affecting elem ents. The design proposal utilizes the coding
strategy interpreted from the observable elements of the dynam ic of form to m anipulate form and
Synthesis - is a translation of the observed to form the param etric and perform ative components
of the design strategy. In shaping the design through information, forces become active elements
informing design decisions in a synthesis of form . The design agenda becomes dynamic and
responsive to data forces and the potential of shaping of a new architecture. This system is an
approach that may employ the same tools that are traditionally the hold of engineers to verify a
static design, to one that is used to inform. A system that gives architects and form makers the
power to make architecture that perform s and is responsive and is founded on the dynamics of
form mal<ing. Dynamic analysis inform s design strategy w here the understanding of forces worl<s
interactively to bring the form making potential to designers to inform the making of architecture,
Recent trends in Architecture have moved aw ay from the understanding of form and performance
and the connection to material in design and making. The preoccupation of architects to reference
and image design strategy has pushed the study of architecture to the realm of ideological false
hood that is removed from material and m ateriality. An image is not form and is removed from the
material sources that inform the design decision. M ateriality has to be more than a reference for a
mapping code to produce renders in hyper reality. Architects must move beyond the image making
and engaging with m ateriality and the informing of material from our data rich world if it is to be
relevant in the world that is reshaping at the rate It is currently. Architecture must respond to the
development of technology that inform s, and design m ust respond and be dynamically engaged
with the information that shapes our world. In a world of increased urbanization at unprecedented
rates, cities will increase at levels unlike ever before. Over the next half century, the world will add
Dynamic responsive technique informing design w here forces are informing the shape of our
built environm ent and playing a more active role in the shaping of cities and urban form , offers
the potential to design a more appropriate level of urbanization that is informed in design from
behavioral and environm ental data making changes to form through generated responses. IVIaterial
changes and perception of spaces and developm ent of new form that is responsive to dynamic
forces and social forces that shape our material cities and environm ent. Not simply buildings but
entire cities giving a design agenda that architects m ust employ a responsive technique to design
methods to inform the design and to build responsibly to meet the challenges of the changing
natural and urban environm ent. Through the investigation and analysis of behavior, a performative
agenda of real time informing material strategies and responsive environm ents, architects may
gain a skill that is perceptibly lost. As technology in parallel industry grows and techniques that are
employed in manufacturing that engage robotics and responsive m aterials, optimization of form,
to create change while responding to changing environm ental data, the building design industry
must learn from these approaches to use techniques that inform the unknown. The investigation
of material and m ateriality is key to the forming of a behavioral responsive architecture as form
Web references:
P. Block, M. Dejong, J. O chsendorf, As Hangs the Flexible Line: Equilibrium of M asonry Arches,
http://web.m it.edu/m asonry/papers/block_deJong_ochs_NNJ.pdf
Building Technology Program MIT, Cam bridge MA 02139 USA.
Law rence Friesen studied Architecture and Environm ental design at Dalhousie University, Canada, and worked
at a num ber of architectural practices before beginning the Design Geom etry modeling group at Buro Happold
Engineers in London. In the past 15 years he has been involved in a num ber of com plex projects whose innovative
realization entailed digital method of building and fabrication. At the GenGeo, architectural structures are designed,
optimized structurally and realized through a digital design process to engage with sim ulation software. Forms are
translated into a material design process that is true to the intent of the design but have a spatial and material that
enhances the design realization.
Form erly he w as a studio technical tutor at the AA graduate m asters program Design Research Lab (DRL) and
technical tutor to AA interm ediate Unit 10. Currently teaching at the AA Visiting Schools in Rome, Italy, and is
Associate Lecturer Unit lead at Oxford Brookes University, he is also a practice principle for GenGeo consulting for
architects and designers and is a design lead for design projects.
Lorenzo Vianello graduated in architecture in Italy in 2005. From 2005 to 2009 and from 2011 to 2013 he
collaborated with several firm s, including OMA, Studio Fuksas, UNStudio and Foster+Partners. From 2009 to 2011
he deepened his research, attending the Design Research Laboratory program at the Architectural Association.
Here he w as guided by tutor Patrik Schum acher, partner at Zaha Hadid Architects, during the development of
his final thesis. The them e of the thesis w as a proto-tower, system of algorithm s that generates projects of high-
rises with optimized properties for different environm ents and functional program s. Lorenzo currently is based
in London and w orks as a Design Tutor at the Oxford Brookes University, as an AA Rome Visiting School program
co-director at the Architectural Association and as a freelance architect.
The Protohouse project w as developed by Softkill
http://wv™.softl<illdesign.com /.
0 evolutive structures
topo ogy optimization
C ecil B a lm o n d
Contemporary architecture practices liave enabled a clear distinction between the role of the
architect and the role of the engineer. In this paradignn, the architect is concerned with the buildings
shape and functionality while the engineer Is concerned with mathematical "firm itas." Technological
developments and contem poraneous architectonic research have attempted to reintegrate the two
fields by nesting shape and statics, as well as creativity and structural calculation.
The study of optimization integrates design and structural decisions, to create optimal solutions
within set param eters. These solutions are often structural: and aim to reduce the am ount material,
span further, and leverage structural latencies. Optimization can also be applied to building program,
The two leading domains of optimization are: shape optimization and topological optimization. Both
forms of optimization attem pt to reach an optimal solution with respect to a set of param eters that
Even though the fundam ental process is the sam e for both of these techniques, there are conceptual
Variable definition;
Supports setting;
The first three elements are decisions that set the desired outcome path for the optimization problem.
The optimization process can be summarized in 5 steps as illustrated below. Once the analysis is
complete and the results have been evaluated, the algorithm seeks for an optimal solution. The result of
this process will be a modified initial geometry that maintains the initial topology.
FIGURE 10.1
Shape optimization flow chart.
For example, this approach can be used to return an optimized cross section within the define
domain of a cantilever.
The cantilever is composed by one fixed extrem e named as A and one free extrem e named as B.
• Defined material properties and a list of possible cross sections: UNI5397-78 and UNI5398-78
standards.
The algorithm seeks to minimize the displacem ent of point (B). The calculations are performed by a
genetic solver that analyzes all the possible solutions and discards solutions that do not efficiently
meet the demands of the fitness function. Solvers will be fu rth er discussed in section 10.6.
FIGURE 10.2
The definition illustrated in figure 10.2 can be read as a sequence of four steps:
1. Modeling of the static schem e and the definition of the boundary conditions;
3. Model analysis;
The first step in the structural optimization definition is constructed as follows. Two points set from
Rhino are used to define a line in Grasshopper. The line defines the longitudinal axis of the beam
on which the analysis is performed The end points (A) and (B) are respectively used to define the
location of fixed supports and a concentrated load described by a vector in the Unit Z direction with
a magnitude set by a slider. Finally, the material properties and the list of cross sections to analyze
are set.
Posjlnd iHiS u p p
Plane |
1
a
T x Ty Tz R x R y Rz
® ® ® ® ® ®
l-Tsaorj Vec •o
Pos|lnd PLoad
5
LCase Q.
l- w n e o r m m m w m m m i ❖ 2
< P a th fc Mat
Displacement
0 0.009703
Model Model
Pt
LCFactor
Eiem Model s def.Mesh
LClndex K i j
Support def.Curves
Colors
2
Load
CroSec
E
SI
Info Ids I def.Model Filled □
Numbers □
<
Material
Set
Deformation □ Scale
. ^ 0^ .- -
Mass o -^ .. MyQ MzQ
LDist Reactions □
.
M xQ
Nx □ Vy □ Vz □
Loads R]
Material
0 “-2 “ ....
. Supports
Cross section @
Material: Steel 'S275' E :21000[kN/cm2] Displacement Q
0 G:8076IkN/cm2) gamma:78.5[kN/m3]
alpha!:1.2E-5(1/C*] fy:27,5[kN/cm2]
Local axes
..O-UHL.. □ Utilization O
Axial Stress Q
Joints III Faces/Cross section
--
Cross Section
Length/Segment [m]
0 HEAA:'HEAA320’ EU-
Upper Result Thrashold
..... IflOJKlQ
Lower Result Threshold
QiLOO------
Result Thresholds as
% of range (§)
absolute value Q
The material and cross section properties are set using the Karamba^^ material and cross section
libraries respectively. In this instance S275 steel and IPE and HE sections are selected. The list of cross
sections represents the population of solutions in which the genetic solver will look for the best one.
Each cross section is analyzed under the described boundary conditions using finite element analysis;
the section that allows the minimum displacement at point (B) is the optimal solution from the list.
Once the process is completed it is possible to visualize all the solutions and the gradual selection
NOTE 28
Karamba is a Grasshopper plug-in used to analyze structures such as: spatial trusses, fram es or shell structures.
It is developed by Clem ens Presinger in cooperation with Bollinger-Grohm ann-Schneider ZT GmbH Vienna. For
further inform ation visit w w w .karam ba3d.com .
It is necessary to note that the solver selects the optimum section from a short list of possible
solutions in a very well known problem; experience dem onstrates that, dealing with complex
problems, often the solution provided by the solver is not "the best one" but is closer to it.
FIGURE 10.3
Optimized cross section.
The optimization calculations are performed by Galapagos (see 10.6), a genetic solver within
G rasshopper. Research in the field of computational generative algorithms started in the 1960's
with the publication "On the organization of the intellect"^® published by Lawrence G. Fogel. The
popularity of evolutionary calculation in the IT world came with the book 'Th e Blind Watchmaker"™
written by Richard Dawkins and the following applications have been made possible thanks to the
im provement in computers.
NOTE 29
L.G. Fogel, "On the Organization of Intellect", PhD Thesis, UCLA, 1964.
NOTE 30
R. Dawkins, Jh e Blind Watchmaker {New York: W. W. Norton & Com pany,! 986).
10.2 Topology
Topology is the study of the relationship between geometric parts undergoing deformation.
Unlike plane geometry, topological analysis does not require metrical or angular m easurem ents;
instead the study of topology is based on the comparison of figures. The figure below shows a
comparison between an equilateral triangle defined m etrically and angularly, and the topology
graph illustrating the "Konigsberg bridge problem"^' as theorized by Euler in 1736. Even though
the two illustrations are different the two graphs describe the sam e problem, since the position of
objects and their dim ensions do not affect the system topology.
FIGURE 10.4
Comparison between the classical geom etric definition of a shape and the topological approach to a problem
using graphs.
• The principle of continuity due to strain, even when losing its metrical and projective
characteristics, there will be a biunique correspondence among the points of the original
• The principle of hom omorphism states that strains, causing penetrations or the overlapping
Topology principles can be visualized by the transform ation of a square. A homomorphism map
can be created from the square to the circle; thus it is possible to carry out a transform ation leading
Homeomorphism between two figures is regulated by a param eter called,^em/s. Genus is a topological
NOTE 31
L. Euler, "Solution problem atis ad geom etriam situs pertinentis", Com m entarii academ iae scientiarum Petropoli-
tanaeS, 1741, pp. 128-140.
invariant tliat can be nnathematically dennonstrated whicli asserts tliat two liomomopliic figures
must have the same genus value (g). The (g) value of a figure is equivalent to the number of holes
within the geometry or, more exactly, is the greater number of non-intersetting simple closed curves
drawable on a surface without splitting the surface itself in two separated parts. From a morphological
perspective the presence of the same number of holes in two figures, or a total absence of them, leads
to homomorphism. Thus, when the sphere is defined by a genus (g) with a value of 0 and when the
torus is defined by a genus (g) with a value of 1, they are not homomorphic and it is impossible for one
to become the other and vice versa. So the homomorphism settles the transformation possibilities
among figures.
FIGURE 10.5
Representation of continuity and hom om orphism principles.
in the field of structural optimization has brought team s of engineers, mathem aticians and later on,
Topological optimization began conceptually in the 19"' century, however, the results were not
validated till the end of the 1980's with the im provem ent of digital calculation. The first functioning
algorithm was presented in 1992 by Xie and Steven under the name of Evolutionary Structural
Optimization (ESO).
The main characteristics of the algorithm are:
1. Definition of the initial data: geometry, supports, loads and constitutive material;
4. Structural optimization.
FIGURE 10.6
material. The initial geometry definition requires a larger design space compared to the final result
of the optimization process. Contextually, the position and type of the supports, the loads and the
material properties will be set so that the strain in each part of the structure can be calculated by
The second step in the ESO process determ ines the param eters for the optimization process and
the discretization of the initial design space into finite elem ents (FE). Once the structural FE analysis
is concluded the distribution of the strains can be visualized within the cross sectional area clearly
These two steps are applied to a sim ple bi-dimensional exam ple of a beam supported at each end
and loaded with a concentrated load applied to the lower edge of the beam^^.
FIGURE 10.7
Finite elem ent model and finite elem ent analysis.
Once the calculation is complete it is then possible to discard inefficient material using Rejection
Criterion (RC) defined by the Von Mises stresses, and the Rejection Ratio (RR).
NOTE 32
Exam ple realized using B ES02 D , softw are developed by P ro f IVIike Xie and introduced in the book Evolutionary To
pology Optimization o f Continuum Structures: Methods and Applications, Fiuang, X. and Xie, Y.M. Chichester, England,
John Wiley & Sons, Ltd, 2010.
The RR is a percentage value used by the algorithm to identify FE discretized cells were material
must be rejected. If the RR Is set up to 50%, we must reject all of the finite elem ents where the RC
reaches values lower than the 50% of the m axim um adm issible value.
FIGURE 10.8
Different rejection ratios applied on a MBB beam optim ization.
The correct calibration of the RR value is essential to the accuracy of the optimization. The above
image shows the sam e optimization exam ple, with different RR values applied.
By examining the results, high RR values (i.e 90%) lead to an extrem ely limited subtraction of material.
Medium RR values (I.e. 60% and 50%) show results that are compatible with the expectations
provided by experience, and Low RR values (i.e. 30%) lead to an excessive rejection of m aterial; in
Once the first step of m aterial removal is concluded and a stable configuration for the beam is
achieved the beam is further optimized using an Evolutionary Rate (ER), which is added to the RR.
The removal of inefficient m aterial has changed the distribution of the strains inside the structure
consequently the stress concentrations inside the material which survived the evolution process
have increased. It is desirable to let every elem ent w ork at the m axim um of its mechanical potential
by including a param eter to limit the possible tension inside a determined m axim um value.
FIG U R E 10.9
Extended ESO (XESO), suggested by Sasaki^^ is based on the concept that organisms underwent
environm ental adaptations by rejecting the unnecessary and strengthening the necessary. The
Banyan Tree epitomizes this approach. The tree has a set of solid aerial roots that by extending to
the ground support the main trunk. This structure is only made of what is functionally necessary
N OTE 33
C. Cui, FI. O h m o ri and M. S asaki, "C o m p u tatio n al m o rp h o g e n e sis o f 3d s tru c tu re s by e xte n d e d eso method,"
Journal o f the international assocuation fo r shell and spatial structures IASS, 4 (1), (2 0 03 ): 5 1 -6 1 .
Starting from this exam ple Sasal<i expounded tliat ESO, in its original configuration, is limited by
two factors: the mono-directionality of the evolutionary process; which allows the discarding of only
• Bi-directional evolution.
FIGURE 10.10
Extended evolutive structural optimization flow chart.
The XESO traces a set of lines describing the stress status of the object indicating portions of the
surfaces with:
FIGURE 10.11
Contour lines application and m aterial rem oval schem e.
The XESO approach speeds up the optimization initial steps because the material that exists satisfies
the Von Mises condition Oj<o„^; material that does not satisfy this condition is discarded. Once the
initially optimized design space is set; material is added and removed material and subsequently
the stresses are calculated at the overlap between the contour lines and the initial grid. Then, new
contour lines are traced to depict where to remove or add m aterial. Contour lines inside the material
are equated to material to be removed, while contour lines outside of the material are equated to
material to be added.
FIGURE 10.12
Com parison between MBB-beam optimized with ESO method and XESO method. Cui, C., Ohm ori, H., & Sasaki,
M. (2003). Com putational m orphogenesis of 3d structures by extended eso method. Journal of the international
association for shell and spatial structures IASS, 4 (1), 51 -61.
10.4 W orks
10,4.1 Akutagawa office building
The Akutagawa office building was designed and built by Hiroshi Ohmori in 2005 using the XESO
method. The building is within a larger comm ercial area close to Takatsaki station on a parcel square
shaped 6 X 10m. The XESO method w as applied to the northern, southern and western facades, while
the eastern facade and the attics w ere excluded from the optimization process. In the finite element
model the specific weight of the structural elem ents in vertical direction, and the horizontal forces
simulating a telluric action were applied. The topology of the three facades evolved as material was
removed from the areas undergoing less stress and added in areas of higher stress.
FIGURE 10.13
Akutagawa office building - model and finite elem ent analysis of optim ization steps. Ohmori, H. "Computational
morphogenesis, Its current state and possibilities for the future" - lASS-IACM 2008 Cornell University, Ithaca, NV,
USA 28-31 May 2008.
Arata Isozaki and Mutsuro Sasaki TAV station proposal in Florence used the sam e algorithm that
had been applied to the Akuttagawa building. The building: 400m long, 40m wide and 20 m high,
houses the stations program within a single superstructure. During the optimization process, the
structure w as modified from the initial shape of a bridge with sim ple fram es on the extrem ities to a
more organic shape. The XESO process was illustrated by a set of schem es describing the evolution
of the structure. During the developm ent phase Sasaki's team was supported by Buro Happold - an
international engineering firm located in London - to define the structural sequence. The structure is
composed of steel trunks, pre-stressed beams and steel and concrete slabs. Isozaki, Sasaki and Buro
Happold used the sam e approach for several competitions until they realized the Qatar National
Convention Center.
Convention Center in Doha. In this case, the Japanese architect Arata Isozaki adopted the XESO method
to design a structure 25 m long, 30 m wide and 20 m high volume with a roof plane. The main loads in
the XESO calculations were imposed by the self weight of the structure.
The project is an archetype of maximum efficiency and the minimum use of material. The design
process was a synthesis between architects, engineers and machines. Relying on the Florence TAV
experience, the designers began with a more refined model to speed up the entire process. This choice
allowed a considerable reduction in time-schedules concerning the analysis and optimization phase.
FIGURE 10.14
The Q atar National Convention Center. Image by UNCTAD.
10.4.4 Radiolaria
Equally im perative as the application of XESO optimization method is the necessity to define an
The process of building optimized structures, have stretched the conventions of construction. For
instance, to build the Akutagawa Office Building molds w ere taken from the shipbuilding industry.
For the Q atar Education City, Buro Happold used an elaborate system of prefabricated modules that
were built in situ nullifying Sasaki and Isazaki's flux structure idea.
Currently the evolutionary building technology 3D printing is being investigated. For example the
work of Architect Andrea Morgante w as realized by Engineer Enrico Dini using the D-Shape printer.
The project w as based on a micro-organism, the Radiolaria, and was printed monolithically without
FIGURE 10.15
Radiolaria printed model and picture of the D-Shape3D printer. Image courtesy of D-Shape.
10.5 Exam ples
In 1904 Anthony MichelP'' economized structure by topological optimizing a beam to support itself
and an applied load while minimizing weight and m aterial. The Michell Truss consists of a planar
beam designed to support a single load placed on one extrem ity having, on the opposite extremity,
FIGURE 10.16
Michell tru ss 3D model.
Michell Truss problem can be calculated in Millipede^^ using the components for 2D structural
optimization.
1. Definition of the design space and of the boundary conditions: initial geometry, supports
and loads;
3. Topological optimization;
NOTE 34
A.G.M Michell, 'The limits of economy of material in frame-structures," Philosophical Magazine, Vol. 8 (47), (1904): 589-597.
NOTE 35
Millipede is a G rasshopper plug-in developed by Kaijim a Sawako and M ichalatos Panagiotis that allows FEM analy
sis, form finding and topology optim ization (w w w .saw ap an .eu )
FIGURE 10.17
Algorithmic definition of the Michell truss.
The initial geometry is the design space where the optimal geometric configuration must be found,
and in the exam ples is a rectangle realized in Grasshopper or set from Rhinoceros, which represents
The components 2DSupportRegion and Stock Support Type are used to model the static supports.
The component 2D5upportRegion requires input geom etry ideally representing the support and
information concerning fixed displacem ents and rotations. The region that m ust be supported is a
circle placed inside the beam at the center of the median axis of the rectangle. The type of support in
this case is fixed so displacem ents and rotations are fixed in each direction. Restraints can be released
or engaged by introducing a Boolean toggle to each of the StockSupportType component inputs, and
toggling True and False respectively. Since this is a bi-dimensional problem it is unnecessary to
support the displacements in the z axis and the rotations in the x and y axis.
The last step is the creation of a load region. The component 2DBoundaryLoad requires a geometric
input which is a rectangle placed at the extrem ity acting in the Unit Y direction with a negative sense.
The load intensity has no relationship with the result of the topological optimization. For this reason,
it is possible to set a fictitious load intensity of L=-1 N/mq or to rely only on the self weight of the
structure. The system is assem bled by the component which creates the finite elem ent model. This
component Topostruct2DModel also has a second input that determ ines the model resolution. The
preset value XR=12, proves to be too low for every type of application, and it is recommended to
increase the value with the consideration that the higher the value the longer the evaluation time.
The component Topostruct2DSolver represents the core of the plug in and is w here calculations
concerning the FEM analysis and the topological optimization are perform ed. This component
contains a set of inputs for the insertion of data, and unlike classical G rasshopper components,
provides a set of internal tools that can be directly selected by the designer.
In this case, four of the ten inputs are used: the FE-input, receives the previously elaborated FEM
model. It is advisable to connect this input last because it autom atically starts the analysis. The
SWC-input deals with the self weight of the structure and requires an integer num eric value; if the
numeric value is 0 the structures weight will be none, if it is 1 the self weight will be computed
once. The 0-input sets the num ber of iterations calculated by solver; in this case the value must be
numeric and can be entered by a num ber slider, practice suggests to follow a 0=1 value to control
the entire process, higher values will require a longer calculation time because of the num ber of
iterations and may cause loss of control on the evolution process. The T-input or target density
is expressed by a num eric value and states the am ount of material involved in the optimization
process (values close to 0 will provide an extrem e discard of m aterial, values close to 1 will result in
topological optimization process is controlled by the STEP tool embedded in the solver, which starts
FIGURE 10.18
Iterations of the optimization process.
It is possible to visualize real time results by linking the solver with a visualization component
2DMeshResult to graphically illustrate information about the stresses inside the m ember
(VonM isesStresses), the flux of the main stresses (Principal tension) and displacem ents (Deflection).
The Topostruct2Dsolver provides two outputs: the FE-output, used to visualize the results and the
maxu-output that retrieves the maxim um displacem ent value. The last one can be used to visualize
the physical deformation of the object. Generally the maxu-value is so low, compared with the
dimensions of the analyzed object, that requires an increasing factor to show how the deformation
works. In order to boost the magnitude of this value is sufficient to multiply it by an integer number
through a Multiplication component. Note that this enhancem ent affects the visualization of the
Another common exam ple of bi-dimensional topology optimization is the MBB-beam under self
weight.
FIGURE 10.20
MBB beam schem e.
The initial model is elem entary; a rectangular beam w itli two supports w ithout any external applied
loads.
The optimization strategy is the sam e as in the previous case except for two differences; the absence
of agent loads, and the addition of m aterial self weight from the reinforced concrete; during the
FIGURE 10.21
MBB beam algorithm ic definition. The following QR code opens an enlarged image of the algorithm.
In this case there are two regions at each support. The first resists
Material properties can be set from the Stock section in Millipede. In this
the maximum value of the structural displacement. This num eric value, multiplied to increase
FIGURE 10.22
MBB beam optimization process and images of strain and deform ation behavior of the structure.
The third application investigates topological optimization applied to a three- dimensional bridge
structure. The schem atic model is a tri-dimensional rectangular volum e with two supports and
The optimization strategy is the sam e as in the previous case, there are no agent loads, and the
material self weight from the reinforced concrete will be considered during the creation of the FE
model. However in this instance, the design space and the supports are three-dim ensional.
FIGURE 10.23
Bridge schem e.
Evolution optimization relies on the known data of a starting point to generate a variable output.
In this case it is necessary to maintain the fram ew ork so a further geometric element is required
to identify the volum e which will not undergo the evolution process. The element that will not
undergo optimization is a parallelepiped having the sam e length of the form er beam and a arbitrary
height. The parallelepiped will be inset within the design space fram ework. This new element will
represent the input data (SDDensityRegion), a region were everything inside of it does not undergo
FIGURE 10.24
Algorithmic definition for the bridge optim ization. The QR code opens an enlarged 6
Image o f the algorithm.
All the components used in this definition are the exact three-dim ensional transposition of those
described in the two previous exam ples. The inputs that define the initial conditions, design space,
non-design space, supports and constitutive material, are used to create the FEM and thus connected
to the solver.
At the end of the analysis and at the end of the evolution optimization, the results can be visualized
by using the component 3DisoMesh, which: renders the geometry, displays the internal stresses and
By observing the results of the Extended Evolution Structural Optimization (XESO), on which Millipede
FIGURE 10.25
Optimization iterations and stress and deflections visualization.
Starting from a fram ew ork which rem ains unaltered during the optimization process, the XESO
does not only remove the material with low stress levels, it also adds material where required. For
instance material is added at the restraints, and at the connection between the extrem ity and the
framework.
The exam ples analyzed represent a first approach to topological optimization. The simplicity by
which it is possible to obtain valid architectonic results is not equated to the m athematical complexity
required to calculate a solution. It is highly recommended to face the problem under a theoretical
point of view and be able to manage the variables during the calculations phase.
The evolution algorithms can also lead to im provem ents in other applications. Since XESO is
versatile it is possible to use the technique not only for research on structural optimization but also
for solutions to other problems that can benefit from constant im provement algorithms.
This chapter is part of the Ph.D. thesis developed by Davide Lombardi at School of Advanced Studies "Gabriele
d'Annunzio" (Pescara, Italy) under the supervision of prof. arch. Livio Sacchi, teacher at Universita degli studi
"Gabriele d'Annunzio" and prof. arch. Alberto Pugnale, lecturer at U niversity of M elbourne (Australia) about
evolutive optimization techniques in architecture.
Davide Lom bardi (1985) architect, graduated in Architecture (M aster of Sciences) with honors at Universita
degli Studi "Gabriele d'Annunzio" Chieti-Pescara, In 2012 started his PhD course at School of Advanced Studies
"Gabriele d'Annunzio" and he is currently developing his thesis under the supervision of Alberto Pugnale, lecturer
in architectural design at University of M elbourne. His interest In the field of computational design, focused on
structural design and optim ization/analysis, led him to start a personal training following high level w orkshops with
international trainers as the AA Rome Visiting School. He taught at "Dynam ic Morphologies" workshop organized in
Rome by the Oxford Brookes University. He collaborated with architecture firm s in Pescara and Rome working on
international projects in Saudi Arabia and Ethiopia.
10.6 O ptim ization: finding solutions with G ra ssh o p p e r
Optimization solvers enable users to solve real-world problems by finding the best solution
among feasible alternatives. There are m any optimization solvers available. Fundamentally, users
must recognize the appropriate solver for a particular problem. Solvers can be grouped into two
categories:
1. Exact so lv e rs: find the best solution and yield the sam e result each time;
2. H e u ristic so lv e rs: find an approxim ate solution when no exact solution can be found. The
The first category includes linear solvers, and the second category includes evolutionary solvers.
Evolutionary solvers apply the principles of natural evolution to the problem of finding an optimal
solution. This section will introduce two G rasshopper optimization solvers: Galapagos and Goat.
Galapagos is a built-in Grasshopper solver developed by David Rutten and Goat is a plug-in for
Grasshopper developed by Simon Flory^^. The following text will discuss how to use these solvers as
2. A set of variables which affect the value of the objective function. Variables are usually
For example, a basic problem is to find a point on a curve that is closest to a given external point A. In
this case the objective is the d(t) function that describes all possible distances between the points on
the curve and the external point A. The only variable is the parameter (t) ranging between 0 and 1. The
optimal solution for this problem is the value of (t) that minimizes the d(t) function.
NOTE 36
Simon Flory received his PhD in m athem atics from Vienna University of Technology in 2010. For m any years, he
has been developing and consulting softw are solutions in geom etry processing and architectural geometry. His
ongoing research focuses on effectively processing and optimizing geom etric data for geodesy, m edical applica
tions and facade engineering. http://wvro/.rechenraum .com /en/
A
q
FIGURE 10.26
The objective function d(t) and the param eter (t) ranging between 0 and 1.
calculates the distance between point A and a generic point P on a reparameterized curve. The position
of point P with respect to the curve is controlled by the input (t) of the component Evaluate Curve.
Point A
By moving the slider we can read the distance value on the Panel and we might "manually" try to
find the t value related to the minimum distance d. Of course this method is inconvenient and will
not generate an exact value without significant efforts. In order to find the optimal solution the Goat
solver can be used. After installation, Goat can be found in Special > Util: the component has two slots
1. The Variables slot can maintain one or more Number Sliders. In G rasshopper the variables
Double-clicking the Goat component opens the contextual settings window which can be used to set
several parameters. The first option is used to minimize (Minimum) or maximize (iVlaximum) the objective
function; in the example, the distance component output (D) is optimized for the minimum output.
Sop optirazation f
1 11 Cancel 1| OK |
;■ .............. ............................................... .
The second option allows to select among two type of optimization based on Local or Global
algorithms. Roughly speaking, Local algorithms attem pt to find exact solutions by inspecting values
close to the starting value of the variable, while Global algorithms inspect all possible values. For very
complex problems it is often useful to perform a Global algorithm and then a Local optimization.
G l o b a l M a x im u m
Lastly, clicking OK will initiate the optinnization procedure. The slider will move guided by Goat until
the optimum value (m inim um distance) is reached. When the procedure ends two values can be
read: the (t) param eter on the num ber slider, and the minimized distance output (D), stored in a
panel.
and an optimal solution cannot be found through exact solvers. The evolutionary solver embedded
in Grasshopper, Galapagos, is a heuristic solver that will be introduced in the following example.
Given a reparam eterized freeform surface, and two fixed points A and B, located on opposite edges
of the surface, the Galapagos solver can be used to calculate the shortest path on the surface that
The first step in the shortest distance definition is to describe a path curve. The path curve is defined
as a flexible interpolated curve that is coincident to the surface with fixed ends A and B. The curve
geometry is controlled by the t/i/coordinates of a set of interpolation points P. (P„, P,, P„). By changing
the coordinates of the interpolation points, different curve lengths will be output. The heuristic solver
is used to find the interpolation points coordinates that correspond to the curve with the minimum
component creates an interpolated curve on a surface input (S), through an arbitrary set of points
input (uv) expressed in the LCS. In this instance, the Curve on Surface component requires three sets
• D1: are the fixed coordinates of the start-point (A) converted to the Local Coordinate
• D2: are the (uv) coordinates of an arbitrary set of points (P.) on the surface. To define the
points the Construct Point component is used with coordinates set through sliders ranging
between 0 and 1. For this purpose we can use the Gene Pool (Param s > Util), a component
that embeds a collection of sliders. Two Gene Pool components are used, the first one for
the (u) coordinates and the second one for the (v) coordinates. The num ber of sliders or
Gene Count as well as the sliders range and significant digits can be set by double-clicking
the Gene Pool component. The larger the num ber of sliders, the higher the accuracy of the
resulting curve.
• D3: are the fixed coordinates of the end-point (B) converted to the Local Coordinate System
position, a fixed element and a variable element exist respectively, that can be used to define an
optimization procedure for an evolutionary solver. For this optimization Galapagos (Params > Util) is
used. Similar to Goat, Galapagos has two ports for outgoing connections: Genome which corresponds
to Variables in Goat, and Fitness which corresponds to Objective in Goat. The Genome port is satisfied
by the arbitrary set of sliders embedded within the two Gene Pool components. The Fitness port is
Double-clicking the Galapagos component opens a contextual menu, where the Fitness can be set to
be minimized or maximized.
Galap^os Editor
[Solvm I Recndl
the Solvers tab is opened and the Start Solver button is selected.
VI
The optimization process runs until an optimum is found, which can take m inutes or hours depending
on the complexity of the solution. Galapagos can be stopped by selecting the button Stop Solver if
the first value displayed on the bottom-right window (VI in the previous image) becomes stable,
tending to a specific number. In this exam ple, the optimization returns a set of sliders representing
(uv) coordinates of the interpolation points that correspond to the minimal path curve. The shortest
Evolutionary solvers apply principles of evolution to problem solving, and are actually based on
population o f candidate solutions. The candidates attem pt to reach better solutions with better
genetic characteristics through mutations, crossovers and random changes. This is in contrast with
exact solvers that target the single best solution. Roughly, evolutionary solvers perform a natural
selection among possible solutions through a process in which only the best m em bers of population
Both exact and evolutionary solvers operate by minimizing or maximizing a Fitness function. In
some instances a target value for the Fitness function is desired; in these cases the absolute value
difference between the Fitness function and the target value are minimized and maximized.
In the above definition the Fitness is defined as the distance between two points. In this instance, the
target value is 500, the absolute value of the distance minus the target value is minimized using the
Fitness function set to minimize.
Crassula "Buddha's Temple", photographed at the
Huntington gardens, Los Angeles.
A A
environmenta
analysis
"Don't fight forces, use them".
R. B u c k m in s te r Fu lle r
Several software applications are available in the field of environm ental design; most however,
are back-end analysis and give small contributions in exploring holistic design solutions. Due to
difficulties in making changes during advanced stages of modelling/drawing designers often rely on
personal judgm ent deduced from experience, over analysis. Thereby, narrowing the possibilities to
The combined use of environm ental and param etric packages can guide the generation of form
from the initial sketches to the final design. This chapter introduces plug-in software used to bridge
between param etric modelling and environm ental analysis. The software find form s through real
time analysis based on insolation, lighting etc.. These techniques, supported by a deep understanding
some plug-ins perform complete environm ental analysis, while others bridge between specific
environm ental analysis software. Among the latter is the plug-in GECO, which directly links between
Grasshopper and one of the most powerful analysis software: Autodesk® Ecotect® Analysis,
developed in 1996 by Andrew Marsh and subsequently acquired by Autodesk in 2008. This chapter
will dem onstrate the use of the plug-in GECO to solve environm ental analysis problems.
Frick and Thom as Grabner^^, contains a set of components for G rasshopper that enables data to
directly flow between G rasshopper and Ecotect, making environm ental optimization possible.
g eo m etries
I ^----------1 L
data
FIGURE 11.1
The GECO - G rasshopper - Ecotect Workflow.
The Ecotect interface is both graphically intuitive and analytically comprehensive. The software has
the ability to organize data related to thermal performance, solar radiation, daylighting, shadows, and
acoustical analysis. Ecotect also features a complete 3D modelling environment, however is not conducive
to creating complex forms. GECO fills the void between shape modelling and analysis, allowing users
NOTE 37
Ursula Frick and Thom as G rabner are the founding directors of [uto]. Th eir research focuses, along with the ge
neration and analysis of com plex geom etries, on the developm ent of form al strategies, data driven design ap
proaches and generative structures, im plem enting and evaluating the physical m atter of a design. They have led
studios and run w orkshops w orldw ide. They are also recognised fo r th eir developm ent of digital tools of digital
tools, nam ely PhysX, Geco, Flowlines, M eshPaint and M eshEdit, which seek to im prove w orkflow in a parametric
environm ent. Both graduated with distinction from the University of Innsbruck, with degrees in Architecture.
to parametrically model geometries in Grasshopper and export them to Ecotect generating real-time
feedback loops used to inform and optimize the geometries of facades, covers, buildings, etc.
GECO component EcoLua enables users to interact directly with the Ecotect scripting language Lua.
11.2.1 Interface
Three software's are required to be installed to use GECO: Ecotect, GECO itself and Mesh Edit (see
6.3.3). Ecotect is a comm ercial software available as a 30-day trial or 3-years student license available
at w w w .autodesk.com . GECO and Mesh Edit are both available as a free download from www.
food4rhino.com. Once installed, a new panel "GECO" will appear in the Extra tab.
0 EcoDayOfTheYear
EcoMeshBcport
EcoUrtc
EcoMoveMeishVerti
EcoPointbcport EcoSetMaterial
EcoSetUserMaterial
Eco2dGrid 13 Eco3dGridFraction
EcoSolC^ EcoSunPath
f '"
EcoSmRays •Q EcoWeatherRle
EcoGridVedorRequest
% EcoLua
i EcoMeshGrid
FIGURE 1 1.2
The GECO panel, hosted within the Extra tab.
GECO's components can be grouped into four categories:
• Analysis grids;
• Calculations;
• Feedbacks.
Once a GECO component is place on the canvas, the component's name changes from what is
displayed in the GECO panel; for exam ple once added on the canvas: EcoLink becomes Link Ecotect,
Two components are used to link and export: first, the component EcoLink {Link Ecotect) is a switch
that establishes a connection between Ecotect and Grasshopper, and second, the component
EcoMeshExport, which exports objects modelled in Rhino or generated in G rasshopper into Ecotect,
in order to perform analysis. Sim ilar to other analysis software Ecotect w orks exclusively on mesh
geometries.
Ecotect perform s analysis either on grids or directly on mesh-objects. Grids are a set of points
within a space that can be imagined as sensors w here Ecotect generates results; for example, lighting
analysis is performed at several points within a space not only on objects. In other cases, such
as insolation, analysis can be directly performed on the faces of the mesh-geometry. If analysis
grids are necessary, their position in space and the num ber of cells is required to be defined. The
larger the num ber of cells the more accurate the final result. The main components to set grids are
2dAnalysisGricl and FitGrid. The component 2dAnalysisGrid draws a grid according to a spatial domain
and to a num ber of cells, while the component F/fG/-/d sets a grid according to the dim ensions of the
11.2.4 Calculations
• Solar diagram s by using the two components: EcoSunPath and EcoSunRays (see 11.4);
• Ligh ting co m fo rt, by using the component LightingCalculations the following can be
returned (see 1 1 . 8 ):
1. Daylight factor;
2. Daylight levels;
3. Sky component.
WEATHER FILES
To execute environm ental calculations, valid climate data is required to be set for the geographic
location that hosts the object to analyze. Geographic data is embedded in specific files called
Weather Files. A W e a th e r File contains the climatic data for a location such as: solar radiation,
prevailing winds, tem peratures, rainfall, humidity etc. Ecotect has W eather Files embedded in the
software for m ajor world cities; other locations can be download directly from the U.S. Department
website provides files in the .EPW form at file (Energy Plus W eather File) which cannot be read by
Ecotect which requires .WEA files (W eather Data File). The .EPW file can be converted into a .WEA file
using the Weather Manager in Ecotect (Tools > Run the WeatherTool) by opening the .EPW file and
11.2.5 Feedback/import
Once the analysis is performed in Ecotect, the results can be imported into G rasshopper to control
and inform geometric transform ations. For example, data returned from solar radiation analysis can
be used to control the dimension of apertures in a cover. We can distinguish between two import
modes depending whether the analysis is performed on a grid or onto a mesh. In the first case
(analysis on grid) we will use the EcoGhdRequest which allows to transfer into Grasshopper all the
data calculated by Ecotect. In the second case (analysis on mesh), we rely on the EcoObjectRequest
component able to import calculations made directly on mesh like radiation or lighting.
11.3 About G ECO 's com po nents
Most GECO components have a sim ilar structure facilitating cascading connections. To better
understand this concept, two components, EcoSunPath (used to draw solar diagrams) and
Both components have an input (E) that is satisfied by a Boolean statem ent which can be provided
by a Boolean Toggle. A Boolean Toggle set to True will execute the specific calculation instructed by
the component in Ecotect. All GECO components have: an output (out) which displays information
received from Ecotect, and an output (D) which returns a Boolean value False if Ecotect is still running
or True if the Ecotect calculation is complete. The output (D) and the input (E) can be used to establish
a cascade connection between several components such that the Boolean value from the output
(D) will activate the second component input (E). Sim ilar to G rasshopper standard components,
hovering the mouse over an input or output will provide specific information.
^ Attributelndex ([A])
Available Atb-jbutes forSoj^-An^s Mdysis:
1 Tot^ Ra^^ation
2 To^ CWrect Racfiation
3 Total Diffuse Radiati<»i
respectively, can be generated for a specific location and tim e. The solar ray vector can be used
to draw the projected shadows of an arbitrary object onto a plane, as illustrated in the following
image.
The necessary part of any GECO definintion Is to establish a link between Ecotect and Grasshopper
using the component Link Ecotect. The link can be established or disconnected using a Boolean
Toggle connected to the input (E). The output (out) generates a text log which displays the result
of the connectivity test. EcoLink is always an isolated component that is not connected to other
Occasionally the component EcoLink (Link Ecotect) could be in a warning state, displayed by an orange
component colour, meaning the connection with Ecotect has failed. If this happens the connection
can be re-established by switching the Boolean Toggle from True to False and again from False to
True. If EcoLink is in an error state, displayed by a red component colour, Ecotect or GECO are not
installed properly.
SUN PATH
Once the connection with Ecotect is established the component EcoSunPath can extract sun path
data for a specific day input [D], month input [M] and location as defined by a W eather File input
[W], The input [D] must be fed by a slider ranging between 1 and 31 and input [M] by a slider ranging
between 1 and 12 and input [W] by a W eather File. W eather Files can be loaded using the component
File Path (Param s > Primitive) - renam ed as weather file in the following images - by right-clicking
the component and selecting the option Set One File Path from the contextual menu. The .WEA files
for specific locations can be found in the default folder: c:\programs(x86)\Autodesk\Ecotect Analysis]
Weather Data. If the E-input is set to True the analysis starts and a sun path diagram will appear in
Rhino. The component EcoSunPath returns as its output two curves representing the sundial output
(C) and the sun path output (S). The output (T) is a num ber that indicates the sunrise and sunset. The
scale of sun path and sundial curves can be controlled by the [S]-input.
SOLAR RAY
Once the sun path is defined for a specific day, the component EcoSunRays returns a solar ray for
a specific tim e. The inputs [D] and [M] are required to be connected to the sam e sliders used for
the component EcoSunPath. The input [T] specifies the time and is connected to a slider ranging
from sunrise to sunset (e.g. from 8.00 to 18.00). The V-output of the component EcoSunRays is the
solar ray vector, which can be displayed using the component Vector Display (Display > Vector). The
FIGURE 11.3
EcoSunPath and EcoSunRays draw in
Rliino the sun path curve (S), the sundial
(C) and the solar ray vector (V) for a
specific place and time.
SHADOWS
The data so far calculated can be used to draw the shadows of an arbitrary mesh-object onto an
arbitrary plane. The component MeshShadow (Mesh>Util) calculates the cast shadows of a mesh
geometry input (M) from a solar ray vector input (L) satisfied by tlie V-output of EcoSunRays
component.
J ■
■■ L
E out )
£
[D]
nj C )
m CL
C
3
S >
[W] \A
O T >
[N] u
UJ
[S] D >
IfBayj »■
115
5 b- y /L <
tu m rj 15.44 o |>-
FIGURE 11.4
The complete algorithm that calculates sun path, solar ray and shadow s for an arb itrary m esh geometry.
The output (O) stores the shadow contour data as projected on an arbitrary plane input (P). To better
visualize the shadows a planar surface can be created using the component Boundary Surfaces
Environmental data calculated In Ecotect filtered through GECO can be useful in the conceptual
stages of design. For instance, the solar ray vector can be used to control a facade's window
dimensions, by comparing the angles between the solar ray vector and the surface's normals to
The responsive skin algorithm starts by defining a single freeform surface and then converting it to a
mesh using the component Mesh Surface. The defined number of U and V subdivisions becomes the
dimensions of the facade panel matrix. As second step the normal vectors at each mesh-face center
are calculated, using the component Face Normals (Mesh > Analysis). Then, we extract the mesh edges
using the component Face Boundaries (Mesh > Analysis) outputting a set of closed polyline curves.
After the normal vectors are calculated it is crucial to verify the normal vectors direction using the
component Vector Display. The vectors m ust have the sam e sense as the solar ray vectors, thus the
vectors must be directed towards the inside of the surface. In the exam ple, the normal vectors are
directed toward the outside of the surface and are required to be inverted using the component
Reverse (Vector > Vector). After the vectors have the correct sense, the component EcoLink {Link
FIGURE 11.5
Faces' norm als must be oriented
according to the solar rays, meaning
they m ust be directed toward the inside
of the geometry to analyze.
The second step is to generate the solar diagram and the solar ray vector using the components
E out
[D] F
m P
m V
The component/Ang^/e (Vector > Vector) is used to m easure the angle in radians between the solar
ray vector and faces' norm als. To vary the size of the apertures the mesh edges are scaled using the
component Sco/e; such that, the lower the angle value the lower the scale factor. In order to inwardly
scale the mesh edges the scale factor m ust be within the domain (0,1], As a result, the component
remap (see 2.5) is used to remap the angle values to a target domain.
■ )
<
E
I/I out
A3 F
< [D] QC
[M] C
3
P
j 0.95 O
______ m O V
tS] UJ W I W iT ilt n e n r l 0 .1 0
Lastly, the variable holed skin is generated by a Loft between each original
edge item to the respective scaled edge item. As explained in chapter 5, the
two data flows are required to be grafted before they are merged. After the
skin is defined, modifying the [T]-input of the component EcoSunRays will yield
Rhino using sun path data from Ecotect, through GECO. Some types of analysis, for instance lighting
and insolation, require that mesh geometries be exported from G rasshopper to Ecotect to perform
FIGURE 11.6
A m esh geom etry m odeled in Rhino and exported into Ecotect using GECO as a bridge.
The direction of normals' can be visualized using the components Face Normals and Vector
Display,
• Flattening data: the output (F) of component Mesh Explode must be in Flatten mode before
connecting it to the M-input of the component Export Mesh to Ecotect. Otherw/ise, Ecotect
will im port just the faces hosted within the last branch.
The E-input set to True exports the mesh to Ecotect. It is im portant to point out that the export
• if [N] = 0 GECO exports the current G rasshopper m eshes and deletes any geometry
present in Ecotect;
• if [N] = 1 GECO exports the current G rasshopper m eshes and deletes just the meshes
• if [N] = 2 GECO exports the current G rasshopper Meshes and maintains all geometry
• [C], is the scale factor of the exported mesh. Since Ecotect usually operates in millimeters
we can set the scale factor to 0, the default value, if the Rhino environm ent is also set
to millim eters. Otherwise, if the Rhino environm ent is set to m eters we must set [C] =
1000 ;
• [F] is an input related to the analysis grids. Through a Boolean Toggle set to True we can
• [T] and [M] set an elem ent type and a material to a mesh respectively;
EtementType ([T])
BementTypefromO-15
0 Vad
I.R 00I
2_Fk>or
3_C«ling
4 \VsB
5_Partition
6 Wndcw
7 Panel
8'Doof
9 Point
1(T Spe^n
II.Ught
12_A«ilisnc«
13 Une
U'Solarcollectot
15 Camera
areas or volum es and often but not always coincide with "rooms". Zones are managed
sim ilar to CAD-layers, nam es can be acquired by typing text into a Panel connected to the
input [Z]. If multiple Export Mesh to Ecotect components are used, the sam e input [Z] is
There are two methods to import data from Ecotect into Grasshopper; the selected method depends
The component EcoObjectRequest {Object Request) is used for meshes. The component returns data
calculated at center of each mesh face and it requires as l-input the indices of mesh faces. The
l-output of EcoMeshExport provides the indices. The component EcoObjectRequest has two main
outputs: (Val) which provides num eric values resuting from the specific analysis and (RGB) which
assigns a color gradient to a mesh according to the num eric values. The component EcoGridRequest
Both components have an input [A] that allows to select specific results (attributes) from the entire
set of data returned by an analysis. For exam ple to select the attribute Total Radiation the [A]-input
must be set to 0. The available attributes can be read on the help menu which appears hovering the
0 Total Radiation
1 Total Direct R«t3tior\
2 Total Diffuse Ra<fation
3 Ov«C8st Sky Facta-
1 Total Radiation 4 Unilonn Sky Factor
2 Total [^rect Radiation
3 T<^ Diffuse Radisticm For Day^i<^Mdysis:
0Day4ight Factor
1 Dayllghting Levds
Avaii^e AHributea for 2 Intemaily Reflected
3 BctfijTwHy Reflected
1 Daylight Factor m 4 Sky Comporvervt
2 Dai^i^ Levd ^ k ]
3 SkyCanpooentm ForCFDArialysts;
OCeHTwnperature
Cn« l o c c U y d*fin*d valua- 1 Cell FVesaure
2 C dl Ccotsnination
3 Mr Flow Rate
4 Flow Vector
on a given surface during a given time m easured in watt per square meter (Wh/m^). To calculate
Buildings' geometry and m aterials should be defined to m aximize insolation during the w inter and
minimize it during the sum m er. Energy optimization usually focuses on the concept o f passive solar
gain. Passive solar gain is defined as the increase in tem perature within a space due to the solar
radiation. Insolation is also pivotal in defining the correct position and dim ensions of solar collectors
and photovoltaic cells. In order to calculate insolation on an arbitrary given mesh, the component
EcoSoiCal (Insolation Calculations) is used. The definition is composed of several steps: define the
mesh-geometry to analyze, run Ecotect by EcoLink [Link Ecotect), and export the mesh using the
E
W
: m C
o out ;
[C]
■W
(Ml 3
[AJ 75
o
i [SI c
out o
M [0]
< [Cl [G] o out
D e K
< [N] [3D] c RGB
D 1 E
< [F} [DP]
[A ]E Min '
< m [TP]
Max
< [MJ 1 > E Val
[Z]
• The Terrain Types [I]: 0 for a location exposed to the wind, 1 for rural settings, 2 for
• The type of Calculations to perform [C]: 1 for incident solar radiation, 2 for solar absorption-
• The Sky Subdivision is a technique that Ecotect uses to subdivide the sky dome in order
to perform calculations. The sm aller the value, the higher the accuracy. The input [S] must
be fed by a num ber ranging between 1 and 15; [S] can also be set to 50 to run a fast
calculation.
• [G] Switches analysis between Objects and Grid. By default is set to Object.
• [DP] Determ ines the start and end day of the year for the calculation, and is set using the
component Construct Domain w here A and B range between 1 and 365 (lulian date). By
• [TP] Determ ines the starting and ending tim e for the calculation, and is set using the
component Construct Domain w here A and B range between 0.00 and 23.99.
In order to import the results calculated by Ecotect, the com ponent EcoObjectRequest (Object Request)
is connected to the Insolation Calculation component using the cascade logic. The input (I) or the
useful to generate a colour gradient illustration which is helpful in the concpetual stage of design. To
display the colour gradient the component Mesh Colours (Mesh > Primitive) is connected to the output
(RGB) of the component EcoObjectRequest. The numeric values are returned by the output (Val).
The following exercise dem onstrates how insolation analysis can guide the i
into a set of panels and identifies the panels w here insolation is m axim ized. The
already explained, grids are set of points which can be considered sensors placed in the space. Grids
• Grids can be fitted to the extents of selected objects in Ecotect, by the component EcoFitGrid
{FitGrid):
• Grids can be defined using the component Eco2DGrid (2dAna!ysisGrid) which sets the
{ImportAnalysisGrid), which im ports analysis values and EcoMeshGrid {MeshGrid), which draws the
grid in Rhino.
FITGRID
In order to adapt a grid to a mesh geom etry exported into Ecotect, the EcoFitGrid component is
EcoFitGrid requires:
• The reference plane [A] can be defined by a Number Slider set to: 0 (XY plan), 1 (YZ plane)
or 2 (XZ plane);
• The type of fit [T] which specifies whether the grid will be created within the mesh geometry
(slider set to 0 ), oround the geometry (slider set to 1 ), adapted to the actual shape (slider set
The three inputs [Cx], [Cy], [Cz] control the count of faces in three main directions. Input (O) defines
{ImportAnalysisGrid). The input [A] sets selected attributes for the specific analysis. For instance,
for a daylight analysis (see 11.8 ) the daylight fa cto r will be returned when A=0 and the daylighting
levels will be returned when A=1. Other attributes can be set specifying num eric values as specified
in the contextual menu. Lastly, the component EcoMeshGrid (MeshGrid) generates a colored mesh
2D ANALYSIS GRID
The component EcolD Grid (2dAnalysisGrid) is useful when manually defining a grid's characteristics;
in particular: the plane [A], the domain width [W] and height [H] and the count of faces in W and H
directions.
It is recommended that grids are created such that domains in W and H directions are both positive
or negative. In other words the grid m ust lie entirely in one of four quadrants of Rhino's space.
11.8 Light Control
Light distribution plays a large role in a building's energy use as well as visual comfort. As a result,
the optimization of light distribution is a key strategy in passive design. The component EcoLightCal
(LightingCalulations) analyzes illumination levels and distribution of light using the param eters:
• Daylight Factors;
• Daylighting Levels;
• Internally Reflected;
• Externally Reflected;
• Sky Component.
Light distribution calculations requires the light levels outside the buildings, including the direct
sunlight and the indirect illumination of the sky. The sk y illum inance value (lux), is derived from
statistical analysis of dynamic outdoor sky Illum inance levels. The following image shows design sky
illuminance levels for different latitudes. Several tools available online can be used to determine
FIGURE 11.7
Sky illum inance (in lux) according to latitude.
11.8.1 Visual comfort of a room
This example will cover a visual comfort analysis of a prism atic room with an east-facing glass wall.
The first step in the definition is to define a box in Rhino or Grasshopper with the dimensions: 12000
millimeters length, 6000 millimeters width and 6000 millimeters high. Subsequently, the box is
exploded into individual faces, the east face is collected by a Surface container component renamed as
window and the remaininig faces are collected by a Surface container component renamed as panels.
The second step is to convert the two set of surfaces into two sets of m eshes, so different materials
can be assigned to the window and panels. Each surface is converted into mesh using ju st one
subdivision for U and V directions, to output one face for each mesh, Lastly, the two sets of meshes
are exploded using the component Mesh Explode, and the panels data is then flattened.
EXPORTING MESHES INTO ECOTECT
Meshes are exported using two EcoMeshExport components. In order to assign the window type to
the east-facing m eshes we have to set the [T]-input to 6 . The panels meshes are exported with the
B S f r — <{
> -(
[q H
l)— (
In order to define the analysis grid the component EcoFitGrid is used, setting the inputs such that:
the grid will be parallel to the XY plane (input [A] set to 0), with an offset of 700mm (input [O]). The
grid will be created within the object by specifying [T]=0) and that the cells count is 10 in [Cx] and [Cy]
directions. The input [Cz] is irrelevant in this case since the analysis will be performed on the 2D grid
Lighting analysis is performed by the component EcoLightCal {Lighting Calculations), in the example
the precision input [P] is set to 2 (High Precision) and the sky Illuminance (see figure 11. 6 ) input [L] is
set to 7300 lux. The input [T] specifies w hether the calculation is performed over the analysis grid (0,
default value) or over point objects (1). Input [C] sets the available lighting calculations.
In order to import results the component EcoGhdRequest [ImportAnalysisGrld) is used, while the
component EcoMeshGrid (IVIeshCrid) generates a colored mesh according to the analysis values. As
The calculated values can be directly displayed on the grid using the Text Tag 3D component
(Display > Dimensions), feeding the L-input with the P-output (grid's points) of EcoGhdRequest
{ImportAnalysisGrld). The T-input needs the calculated values and (S) the size of text.
11.8.2 Practical Exercise Galapagos + GECO, visual comfort optimization
the visual comfort of a space by modifying num ber and shape of a set of sun
shading devices. The complete exercise can be acessed using the QR code.
Tliis chapter is part of a research developed by Maurizio Degni, a specialist in the field of energy and environm ental
analysis related to com plex system s with a particular focus on param etric and optimization strategies. Maurizio
Degni worl<ed for several offices in Italy such as Studio Kami and J.M. Schivo w here he collaborated on many
international com petitions, projects and research activities. With Arturo Tedeschi he designed the NU:S Installation
within the Cloister of Bram ante (Rome) and he had a main role in the com putational design of the NU:S Param etric
Shoes an avant-garde project that matched advanced design techniques and prototyping technologies. From 2012
he is a tutors assistant for the AA Rome Visiting School.
Post Digital Strategies
Pragm atic Com putation in G rasshopp er
Brian Vesely
m a k e lite d e sig n stu d io
Data: big data, small data, ubiquitous data. Algorithms fed by data are indifferent to output. The practice
of organizing data to generate geometry has been explored by design offices since the early 1980's,
discussed in academic texts, and demonstrated at institutions. Beyond the commonly perceived formal
scope, the advantage of parametricism is the iterative calculability to formulate pragmatic data.
Param etricism is often used and abused as a justification for design decisions without close study
of the inputs; decisions are often made without integrity to produce a formal output. Post digital
strategies' considers the organization of data as a tool to produce a pragmatic output. Parametricism
and pragmatism are seemingly polar concepts; however, a pragmatic param etric workflow can
As discussed in Chapter 9, Digital Simulation, a hanging chain can be illustrated in Kangaroo following
Hooke's Law. As an alternative, a hanging chain model can be calculated using computation graphical
rigid body by graphically representing forces with vectors that are proportional in magnitude and
equivalent in direction to the final geometry of the body. Graphical statics is a pragmatic approach
to form-finding that, when used in conjunction with optimization solvers, can produce intelligent
output. Intelligent graphic statics applied to a reversed cantenary structure can be defined by
following the subsequent algorithmic workflow diagrams^. W orkflow diagrams - sim ilar to spatial,
conceptual, and structural diagrams - are an essential m eans to define the procedural logic of
complex multi-part algorithms. W orkflow figures 1-12 decompose a graphical static definition into its
respective sub-parts; within each part, variables that are required to be calculated are noted. Figure
1. The graphical statics algorithm ic logic presented w as researched in the independent study. Post Digital Strategies,
at the Illinois School o f Architecture with students Catherine Lie and Ailin Wang.
2. For additional inform ation on this topic, see: Allen, Edward, and Wac Zalewski. Form and Forces: Designing Ef
ficie n t Expressive Structures. Hoboken, N.J.: John Wiley & Sons, 2010.
13 illustrates how the iterative calculability of G rasshopper can be used as optimization input. The
workflow diagrams used to organize the data of a generic static definition of a reversed cantenary
Loads calculated fo rth e given span and material are converted into vectors and placed incrementally
along the loading line (figure 1). The loads are transposed to the initial force diagram as the load
vectors {L ,, L^, L3} (figure 2). The vertical height point (y') is set at the centerline of the loading line
two tim es the desired funicular height (Y), and tangent vectors {p.a} and {p.d} are constructed by
[D
A ,-------------- , B
n ' b , c
1 11 11
L, L 1
The form diagram tangent vectors {p.a} and {p.d} are translated to the load line and intersected
to define the initial pole (p.). Points (b) and (c) are connected to (p.), defining vectors {p.b} and {p.c}
(figure 4). The length of each loading segment is m easured (i.e. on the initial loading diagram
(figure 5), and the loads are updated for each segment (figure 6 ).
a
[4 ]
L,
p, V U
y-- -fee;
c
The loads are transposed to the final force diagram as the load vectors {L /, L/, L3'} (figure 7). The
trial pole (p,) is defined as a point in proxim ity to the final load line. Points (a), (b), (c), and (d) are
connected to the point (p,) defining vectors {p,a}, {P(b}, {p^c}, and {p,d} (figure 8 ). The defined vectors
are used to construct the trial form polygon. The intersection of the geometric centerline and the
trial form polygon defines point (Y'). Vectors { A T } and { B T } are defined by connecting points (A') and
Vectors { A T } and { B T } are translated to originate at point (p^) and intersected with the load line
defining points (z) and (w). Vectors {AY} and {Y B } are translated to originate at points (z) and (w)
respectively and intersected to define point (p,) (figure 10). Points (a), (b), (c), and (d) are connected
to the point (p,) defining vectors {p^a}, {p,b}, {p^c}, {p,d}, and the final force diagram (figure 11). The
calculated vectors are translated to construct the final form diagram through point (Y) (figure 12).
[ IS a
L,'
■b
p, U'
'c
L,'
•d
Figure 13 displays an abbreviated illustration of solutions in a composite diagram. The solver Goat
can be used to minimize the objective, axial force, as calculated by m easuring the length of the
vectors respectively in the final force diagram. The calculated axial force can be used to determine
for issues of stability as well as the minimum thickness^ These considerations can be overcome by
knowledgeably setting the range of the sliders as well as the conditional statem ents with respect to
the axial force-thickness relationship. Once the generic w orkflow has been defined in Grasshopper,
the sliders for the num ber of segm ents and the span can be expanded, the position of the restraints
can be manipulated, and series components can be added to define a multitude of vaults. The
complete funicular definition as well as other Grasshopper definitions and tutorials can be viewed
This pragmatic afterword is intended to am plify a point that the author Arturo Tedeschi makes
throughout the text: Grasshopper, and more generically, algorithms, are tools to organize data; it is
up to the user to determ ine the output. The text’s compilation of exam ples should not be seen as
how-to manual to complete formal exercises; instead, the knowledgeably crafted exam ples should
be seen as a m eans to understand the way data is organized. In the end, understandingthe way data
Brian Vesely
Brian Vesely is the lead Designer at makelite. He graduated with a M asters Degree from the University of Illinois
School of Architecture in 2012. A s a Visiting Lecturer at the Illinois School of Architecture, he w as part of the Detail
and Fabrication Concentration (d+F), teaching courses in fabrication, com putation, digital workflow , and design.
He operates from experience in the fields of architecture, land surveying, and engineering. His work occurs at the
intersection of speculative narratives and anecdotes of construction, exposing tectonic latencies. He creates fun-
rigorous-sm art assem blies exploring the potentials of fabrication, com putation, and emerging infrastructural and
ecological potentials.
3. Additional attention is required to consider all loads im posed on any structure and the results should be
reviewed by a qualified engineer; this exam ple is used to dem onstrate pragm atic data logic only.
■ ;? ^ § S = 3 § § i
am City, we are City
Francesco Lipari
F o u n d in g p rin c ip a l a t O F L A rc h ite c tu re
When I think about the future, my mind comes bacl< to the 80's to the dawn of the new millennium.
I clearly rem em ber that period, no doubt that it seemed like the future to me: a time when the
scale between technology and hum anity was perfectly balanced. The future, in fact, always coincides
with something simple that sim plifies our life. Today, we live in complex tim es which are a sort of
borderline for hum anity. In response to rapid changes of lifestyles and habits, hum ans must adapt
and change their own nature, influencing the urban environm ent, understood as the ideal ground of
sharing and exchange. Everything changes at an unprecedented speed that we are not prepared for,
dragged by a two-speed rhythm . On the one hand there is technology, which proceeds inexorably as
it had suddenly realized to be in late on original plans; on the other hand, there is humanity, which
gathers those who are sim ilar in feel an estrangem ent in which they must live, as the current stage
doesn't make them protagonists. These are unprecedented times, we have never been so close
and so distant at the sam e time. The natural, adaptive human-mechanism seem s to be jam m ed, or
simply inadequate to face the deep changes which happen cyclically at ever shorter intervals.
The shape of earth and circularity of events leads to idea that our world is finite, predetermined.
Humans are naturally inclined to interpret signs, trying to anticipate changes that actually seem
to have already happened. Time variations and continuous adaptations are just the effects of
The man of today, for instance, is closer to a man who lived in fifth century than to a man who lived
in nineteenth century. The latter, in turn, is sim ilar to a man lived in roman age. In this scenario,
apparently anachronistic - in which Is difficult to find hum anity - cities grew up. Cities are a
The typical model of independent and self-sufficient cities no longer exists. We are experiencing a
new "ageographical" city, without precise spaces and forced to dem onstrate its strength to face and
bear new rhythm s. Each city will become a follower o f a bigger city within a process which is sim ilar to
the editing of an infinite book, with an infinite num ber of pages, hosted in a universal library. Cluster-
cities will become nodes of an algorithmic-generative definition, tailored to support a global vision.
Moreover, the current technology-overflow is generating two different effects on the sam e actors, i.e.
the human beings. By increasing the level of interaction and comm unication two kinds of societies
emerge. The first one is a high-communication society w itli no territorial and expressive boundaries,
w liiie the second one is a low-communication society, which reinterprets obsolete technologies with
the dual ainn to save m emory and Identity; such a society also uses the technology-dlvide as an elitist
All this leads to a disaggregation of consolidated models of urban managem ent and opens the doors
to the individual contribution as a model for generation and im plem entation. We will experience
a new age w here hum ans will be a part of a complex bio-mechanical m echanism structured and
integrated with urban environm ent. Technology will further simplify its hardware and also the city
will be sm aller and sm aller, personal, up to coincide with the hum ans them selves.
Francesco Lipari
Francesco Lipari is a Sicilian architect based in Rome. Recipients of several Prizes for Young Architects Francesco
iias been lecturer at ttie MAXXI and MACRO m useum and curator of several architecture projects. He's the founding
principal of OFL architecture and w as form erly senior architect at the Fuksas office in Rome and Mad in Beijing.
He's also founder of CityVision (http://www.cityvisionweb.com /) an innovative architecture platform with the aim
of generating a dialogue between the contem porary city and its future image - http://www.oflstudio.com /.
Parametric Urbanism:
a New Frontier for Smart Cities
Paolo Fusero, Lorenzo Massinniano, Arturo Tedeschi, Sara Lepidi^
P la n u m , T h e Jo u rn a l o f U rb a n is m , no. 2 7 . vo l. 2 /2 0 1 3 , pp. 1-13.
[...] In only a few short years the concept of Sm art Cities has evolved from an evocative representation
of futuristic digital metropolises into an overblown term used to indicate all m anner of virtuous
processes: economic, environm ental, technological, social, etc. It now appears that any human
activity we wish to qualify in positive term s cannot avoid being tagged with the adjective "smart".
This induces a reflection: on the one hand the fact that sm art thinking applied to cities and territories
is becoming "trendy" can be considered positive as it contributes to raising public aw areness about
such issues as environm ental sustainability and technological innovation. On the other hand,
the sm art phenomenon induces a form of disorientation for the abusive use of the term and the
consequent dilution of its im portance to research. [...] From our point of view, a less explored, and
thus even more interesting frontier, is that which can be defined as Param etric Urbanism . In other
words, the use of param etric software in urban design, not only to three-dim ensionally represent
projects at the urban scale but precisely as part of the processes of developing the tools of
urbanism , as an instrum ent for assisting the planner in evaluating diversified scenarios and making
informed decisions. For exam ple, it would be interesting to understand what contribution can be
made by param etric tools to the construction of effective models of compensation (options on
permutations, flexible distribution, etc.), or what assistance they can bring to the rationalisation
of the layout of services within a territory, based on the real needs of users [...]. Or further still, the
simulation of alternative scenarios to urban transform ations based on a choice of diverse building
1. Paolo Fusero, full Professor at the G. d'AnnunzIo University of Chieti-Pescara, Faculty of Architecture; Lorenzo Mas-
simiano, researcher in Urbanism at the G. d'AnnunzIo University of Chieti-Pescara, Faculty of Architecture; Arturo Tede
schi, independent researcher, co-director since 2012 of the Architectural Association Rome Visiting School; Sara Lepidi,
Graduate in 'Territorial and Environmental Planning”, 2012-13, G. d'Annunzio University.
From Typological to Procedural Thinking
The use of the com puter in the world of design has accelerated a direction of research culturally
rooted in the avant-gardes of the 1960s. This branch recently arrived at the elaboration of theoretical
apparatuses constructed around a notion that com pares architecture to system s in evolution and
m echanism s of self-regulation. The research focuses substantially on the pragmatic passage from
the concept of the type to one of process. This involves overcoming the logic of composition to the
of one single element can bring about a modification to an entire architectural or urban organism.
Hence the final form is an output generated by a procedure, alm ost as if it were unknown inherent
to the system . Design is thus transform ed into a sort of "definition of intelligent rules",
[...] The reciprocal fecundation between architectural theories and the possibilities offered by digital
technologies consented the rapid extension of the utilisation of the computer. From a simple tool
of production (focused on increasing the speed of operations) it has evolved into a refined system
of control that permits previously unimagined formal explorations. The introduction of complex
programming techniques and param etric software offers designers unexpected possibilities, making
it almost impossible to predict the effects these tools will have on design sim ulations.
Simplifying to a great extrem e, param etric software can be considered a programming platform
- working within three-dim ensional CAD environm ents - capable of generating form through the
definition of a conceptual diagram that becomes the only "drawing" developed by the designer. This
diagram explicates the associative ties between a range of input data, and generates an output that
data. This data is in turn filtered through specific software created precisely to organise this material
and facilitate its com prehension. A challenge to multinational digital companies of the future will lie
precisely in the development of system s with an ability to define relations between heterogeneous
data and create innovative forecasting models. Models will no longer be elaborated according
to statistic methods, but instead through the real-time evaluation of significant param eters and
For example, the overlapping reading of data as information alphabetisation or the offering of on-line
services and relative user feedback, may suggest the territorial decentring of services that no longer
require direct relations with users. To the same degree, data related to co-working, when compared to
correlated parameters, may offer important indications on urban mobility and energy consumption.
Or, data from external sensors used to measure air quality, solar heat gain, ventilation, acoustic
pollution, etc., may indicate solutions that optimise the energy efficiency and comfort of settlements.
Within scenarios of this type, param etric software may even serve as a tool for experim enting with
"new models of Urban Plans". No longer comprised solely of a series of "routine" drawings produced
to satisfy normative requirem ents, they become a dynamic three-dim ensional representation.
These models can be constantly updated by sm a rt data, which thus assum es a "proactive" role,
anticipating phenomena and future changes in order to im plem ent rapid and opportune actions
by a collective intelligence that is the fruit of choices, decisions and interactions supported and
guided by technology. [...] The use of param etric software may thus offer designers a very interesting
tool for experim enting with new methods of designing. Projects employing parametric logics are
distinguished, in their form and content, from those developed according to traditional methods.
The first important difference is conceptual, as mentioned: the final result is not established by
the designer a priori, but is the result of a process of elaborating selected sm a rt data. The second
difference lies in the vivacity of the system that structures it: the passage from a static to a dynamic
system . The formal result is no longer the definitive crystallisation of a particular line of reasoning,
but instead a "snapshot" that captures the status of a process in continuous evolution. It is generated
to react to variations, autonom ously adapting to stimuli it receives in accordance with the rules
established by the designer during the phase of concept design. Projects thus evolve on their own,
alm ost demonstrating a capacity for selforganisation^. Despite their adaptive capacities, it is clear
(and this is directed at those sceptics already thumbing their noses at the thought of substituting
the designer during the "creative" process) that param etric platforms always require an a priori
selection of data to be processed. It is precisely through the control of input data that designers are
able to evaluate alternative solutions, utilising a "snapshot" of a worl< in progress to satisfy desired
qualitative perform ance values. The phase of data selection and reactive control thus represents a
2. B ria n T e a m C o n su ltin g , 'T e o ria d e lla c o m p le s s lta ", fro m h ttp :/ / b ra in t.n e t, la st v ie w o n S t h ju ly 2 0 1 3 .
ools and methods for
Darametric urbanism
Andrea Galli
A rc h ite c t a t C a rlo Ratti A sso cia ti
The modern city is a complex and dynamic system that, today, can benefit from the huge possibilities
of technology scattered ubiquitously, changingthe way the urban context talks to us, and how we live
and interact within it. All this represents an incredible opportunity in planning the city of tomorrow,
but it is not enough. To find the right answ ers to the questions that "big data" generates we can rely
on the potential offered by param etric tools in elaborating - with total control- the new resources
available, which would be unmanageable and redundant in traditional analysis and planning
processes. In order to prepare our cities to become "Smart" it is necessary to adapt the design
process that rules the change. In fact, many fam ous exam ples suggest the opposite, the parametric
approach Is not based on shape, but instead on the relationship between every elem entary part of
the complex system, where if an element changes, all the other elem ents will self-organize. This
behaviour, called "adaptive" allows to design system s w here - once the rules that describe the
relationships between every elem ent are set down - if the system changes unexpectedly (emergent
behaviour'), it will transform itself according to these rules, defined as param etric variables.
Parametric Urbanism allows us to understand and control the behavior of complex system s, such
as our cities or parts of them, in order to plan his reaction to the real time change of the data
context around it. To describe this context it is necessary to make a selection of data; this inherently
represents an im portant design choice, because it deeply influences the final result. In addition to
data typologies, the source of them is in the sam e way very important: data for example can be
open-data released by public adm inistrations, freely available to everyone; this data can be easily
found on the Internet and embody the social and economic aim of unlocking the potential value
of a huge quantity of information, usually under-used. Vector data related to a particular region of
interest can be easily found on the portal OpenStreetMap.org^, downloading the .osm file associated
1. E m e rg e n t b e h a v io u r: c a n a p p e a r w h e n a n u m b e r o f s im p le e n titie s o p e ra te in a n e n v iro n m e n t, fo rm in g m o re
c o m p ie x b e h a v io u r s a s a c o lle c tiv e .
incorporates inside his fram ew ork metadata useful fo ra differentiated treatm ent of the geometries
according to their respective tags. Some recurring tags are: minor roads, m ajor roads, waterways,
railways, raiiway: station, hiighway: bus stop, highway: pedestrian, pari<ing, buildings, amenity, leisure:
This database can be furtherm ore increased with other information regarding, for example,
the geographical distribution of people, the position of commercial hubs, schools, libraries, etc.
These information come from the extended basin of geo referenced datasets published by
public administrations and they are organized in tables or shapefile"’ which can be imported into
Grasshopper, respectively through Lunchbox and Finches'^. An exact overlapping can be accomplished
using gHowi, thanks to the perfect correspondence with the coordinate system of the Open Street
Maps geometries.
3. Elk: a plugin to generate map and topographical surfaces using open source data from OSM and Shuttle Radar
Topography Mission, Tim othy Logan, www.food4rhino.com /project/elk
4. Shapefile: or Esri shapefile, is a popular geospatial vector data form at for geographic inform ation system
software. Shapefiles spatially describe vector features: points, lines, and polygons, representing, for exam ple,
w ater wells, rivers, and lakes.
5. Finches: a com ponent developed by Nicholas De M onchaux to im port, export and batch processing shapefiles.
The result is a hybrid model made of vector data and metadata that allows to exploit parametric
modelling tools in association with a new informative dimension. A thinkable use of a certain model
could be the visualization and the interrogation of the database, as with GIS. However it is possible to
explore some more interesting direction, processing the database in order to generate an unlimited
range of potential design proposal on different scales. Taking inspiration from the approach suggested
by Anas Alfaris within his PhD thesis Emergence through Conflict: The Multi-Disciplinary Design System
(MDDS), developed at MIT under the supervision of W. J. Mitchell'’ in 2009, we can think to structure
the entire design process using a dynamic and holistic fram ework divided in five phases according to
reversible connections, but meanwhile, maintaining a robust hierarchic organization. The five phases
are decomposition, formulation, modeling, integration and exploration and can be referred to different
design stages: decomposition and formulation belong to the planning stage, modeling and integration
belong to the implementation stage, the exploration represents the final verification stage where
the previous phases can be validated or rejected. The decomposition requires to divide the global
project vision into elementary units and goals. The formulation contemplates the specific analysis of
every single goal so to independently define the processes to realize it, but also the way in which
they influence each other. During modelling every goal is developed in a cluster in order to transform
into algorithms (thanks to the parametric tools) what w as defined dur'mg formulation. The integration
consists in implementing the relationships between the different clusters, until now described
as isolated elements. The exploration Is the phase that allows to verify the match between results
and what was expected during/o/-mu/ot/on. In fact, the integration can easily generate unexpected
consequences, that will eventually require the process to be reviewed starting from modelling.
>Planning
>Implementation
The described flow chart represents a structured way to manage the design process of complex
entities such as our cities. Following it G rasshopper can assum e the role of an extrem ely flexible
platform to organize into a single data stream large scale data, which come from different sources,
describing their relationship through m athem atic rules but also counting on the huge 3D modelling
The opportunity of a real tim e comparison of m any alternative scenarios, obtained by changing the
mutual influence of the system param eters, is a scientific method for an organic design of our cities
considering their real necessities and ensuring consistency with the project constrains and goals.
Andrea Galli
Andrea Galli, independent researcher, graduated in engineering and architecture from tine Polltecnico di Torino,
collaborates with the office Carlo Ratti Associati of Turin from 2012.
6. William J. Mitchell: considered one of the world’s leading urban theorists. Through the work of his Sm art Cities
research group at the MIT Media Lab, he pioneered new approaches to integrating design and technology to make
cities m ore responsive to their citizens and m ore efficient in their use of resources. He likened tom orrow's cities to
living organism s or very-large-scale robots, with nervous system s that enable them to sense changes in the needs of
their inhabitants and external conditions, and respond to these needs. W. J. Mitchell died in 2010 at the age of 65.
ayful computation
How GrasshopperBD & its Plugins increased my creativity
with five project examples
GrasshopperBD for Rhinoceros is not ju st a tool, it is a platform for a community to learn and share
computational design projects. It is an educational environment, which together with its numerous
plugins will help you to understand mathematics, computer science, physics, fabrication and much
more. It will break down barriers between design fields and soon you will be discussing vectors with
a jewellery designer, topology with a wheel-chair fabricator or recursion with an engineer (true story).
Grasshopper is complicated but it is also friendly and playful. Unlike most design software, it wants you
to understand and learn how your tools and items can be linked together to create systems, instead of
repetitive and time consuming 3D modelling (A.K.A. CAD monkeying). You will be linking components
together with wires and not modelling curves and surfaces in space as you might be used to. Of
course Grasshopper can simply accelerate your current workflow, but it can also transform the way
you design in a much deeper way. You might have to imagine your project as a set of interconnected
elements as opposed to a finished sculpted object. This will encourage you to see the reason behind
forms and perhaps understanding these rules may even bring you closer to understanding how forms
occur in nature. After doing a couple exercises within this book, you might see scary things like {0:0}
N=1, or users around you could start asking if you have "flattened or grafted your list?'Th is is strange
and unfamiliar territory for any early user, so ... DO NOT PANIC! We have all been through that phase
of confusion. You will soon understand how the data trees will help you organise and manipulate the
information going through the "fancy wires" and how you can apply successive operations to an initial
input, which is the beginning of automating your tasks. Why are we all excited about this tool? It has
opened up coding to visual people. It is a door to a complex world that we would have not dared to
enter if Grasshopper was not here. Moreover it is a community of friendly people that you can find
on the buzzing forum Grasshopper3d.com. Please note that if you ask for a new tool it is very likely
that you will be asked to write it yourself and add it to the many plugins available on Food4Rhino.com.
Users often write the plugins in their free time and out of interest, learning programming from nothing
- so anyone can do it. This is the ultimate proof of Grasshopper's success, it grows with the users and
soon you will be one of them, wanting to add your creative brick to the parametric building. Following
are details of five projects I worked on and used Grasshopper within; to inspire you and show you how
Grasshopper can be used in a practical way. Arturo Tedeschi, a teacher like myself, knows that you will
probably not follow tutorials unless you are first inspired. You need to see notju st the theory but how
it can be applied, so let's look at these five projects of different scale and see how they benefited from
Project 1
RIBA Windows Project for Davidson Tsui in Xintiandi Style Shanghai^
with James K. Cheung of ARUP Associates
A param etric or associative approach to 3D modelling m eans that your model can be changed based
on different input or param eters. By changing the param eters you are creating variations in the
system not changing it. This makes GrasshopperBD very useful for quick changes in the geometry
of a project or to produce many variations of a design system . This project illustrates how useful
Left: the finished piece in Xintiandi Shanghai - Photo by XiaoHui Chen. Right: The param etric model for the main
tree with the rem ote control panel fo r display outside the GH interface
The project's main elem ent is a giant folded tree made of 576 laser-cut origami components. By
folding the component, the sheet bends into a hyperbolic paraboloid (known as hypar). This is a
ruled surface that can be described as two non-parallel lines in space connected with adjacent
straight lines and forming two parabolas when cut in section. We used Grasshopper to populate the
1. The Fitting Room - More inform ation: http://m am ou-m ani.com /RIBAShanghai/ - Client: Davidson Tsui and Shui-
On Land - Team : Lead Architects: Jam es K. Cheung (ARUP Associates London), A rthur Mamou-Mani (Mamou-IVIani)
- Architects: Suzanne Li (ARUP Associates Shanghai), Benita Tan (ARUP Associates Shanghai) Engineer: Eric Sturel
(ARUP Associates Shanghai) Collaborators: Arup Associates London: Paul Jeffries, Daryl Miles, Stephen Philips -
ARUP Associates Shanghai: Sunglin Tsai, Marta Colas, Milo Gu, W onder Wu, Vicky Feng - Mamou-Mani: Laetitia Sfez
- Tongji and Shanghai university: G am zar Lee, Alexander Gosta, Tracy Zhang, Rachel Zheng, Zhang Licheng, Zhou
Yejun, Liu Xun, Zheng Raven, Cao Sophie, Shi Ji, Chen Kaiyu, Xu Lei, Hu Zhixuan, Zhang Ying.
double-curved geometry of the tree with the folded hypars. To do so, we used the UV parameters
of the surface but divided the resulting trim med surfaces into sets of four in order to get mirroring
components. To control the size of the panels, we changed the density of the division and used a
custom "graph mapper" tool which projects values from the x axis to the y axis using a user-defined
curve. This is how the gradient from small to large and from flat to folded was created.
One system with different output, two renders showing how the parametric model adapted to fit the fabrication.
For fabrication, we w ere limited by the size of the machine used. At first the largest components were
around 2m wide. This is possible with a large laser-cutter but in Shanghai we only had access to an A2-
sized bed. Instead of drawing the whole project again we simply changed the density and the graph.
The graph mapper is one of the GH components however it cannot be changed through sliders and
therefore cannot be connected to the evolutionary solver "Galapagos". To make sure the longest edge
would fit within an A2 laser-cut bed size we used Galapagos to change most of the sliders (UV density,
graph mapper, distance of corner from original surface) until it met the required length of 594 mm.
Project 2
The Magic Garden, RIBA Regent Street Windows Project for Karen Millen^
The Magic garden - A 30 m long dress on Regent Street - Photo by Agnes Sanvito.
2. The Magic Garden - More information http://mamou-mani.com/KarenMillen/ - Client: Karen Millen Fashions Ltd.
484
The Magic Garden is a giant and architectural dress that flows along the thirty metres of Karen
Millen's flagship store. The material is a cheap fabric that can be found in sport shoes called 3D
Spacer Mesh. The mesh has a thickness that scatters light very well but also resists to bending. Both
properties are used in this piece. The varying "smocking" pattern used all along the fabric creates
different levels of strength and changes the width of the piece itself.
The physics engine Kangaroo (by Daniel Piker) was used to study the types of patterns that can be
used. In this case the plugin "folds" the patterns from a flat sheet instead of drawing an additional
geometry with extra area onto an existing surface. In a few words, Kangaroo works by plugging forces
and anchor points into a physics engine. In this case we used the hinge force. Points will move in
space constrained and defined by a rest angle. The anchor points can be moved to simulate someone
pushing or pulling the fabric. When the anchor points move but the rest angle wants to stay at zero
it creates a resistance, which is what was used here. Since we had several pinch points, we replaced
anchor points by spring forces between two points to pinch together. Spring forces will move to a
given rest length therefore the pinch points are linked with springs of a rest length of zero.
Contributors: Gem ma M etheringham , Andrew Hardy Architect: A rthur Mamou-Mani Lead Collaborator: Jack Mun-
ro Collaborators: S a w a s Havatzias, Madeeha Maham, Megan Sadler, Heloise Delegue, Anna Rootes, Sharon Toong,
Sarah Shuttleworth, Dan Dodds, Andrei Jippa, Jessica Beaglem an, Adam Holloway, Stephanie Holloway, Timothee
Tan, Christina Leung, Philip Hurrel, Christopher Mount, Michael Clarke, Jacob Alsop, Nick Chung.
Project 3
Shipwreck and Fractal Cult at the Burning Man Festival
with Toby Burgess and Diploma Studio 10 at the University of W estm inster
These two projects were designed and built with our students at the University of Westminster.
GrasshopperSD was used throughout. On Shipwrecl< the whole project w as created from two initial
NURBS curves on Rhinoceros, the top and bottom ones. The project's elegance is based on these
two curves; they were therefore carefully changed in Rhinoceros while being used as input for
the GrasshopperSD model. The fins flowing all along the structure w ere also changed within the
param etric model and the whole cutting pattern changed accordingly.
Shipwreck and Fractal Cult Designed by Georgia-Rose Coilard-Watson and Th anasis Korras of Dipioma Studio 10.
The form of Fractal Cult emerged from a three-dim ensional Koch snowflake, which is well-known
recursive fractal geometry. This w as done using the plugin Hoopsnake, byYannisChatzikonstantinou,
which allows the user to plug the end of a Grasshopper definition with its own beginning, hence the
recursion. Once the triangles w ere generated we positioned hinges along the triangle edges so that
as many triangles as possible could be used any w ay up and around. We then placed bolt holes for
3. Shipwreck and Fractal Cult at the Burning Man Festival More Inform ation: http://w ewanttolearn.w ordpress.
com/2013/09/12/building-fractal-cult-and-shipwreck-at-burning-man-2013/ Team : Toby Burgess and A rthur
Mamou-Mani (Project Directors), Th anasis Korras (Designer of Fractal Cult), Georgia Rose Collard-Watson (De
signer of Shipwreck), Jessica Beaglem an (Food & Meals), Natasha Coutts (Cam p and Rentals), Sarah Shuttlesworth,
Andy Rixson, Luka Kreze, Tim Strnad, Philippes Philippidis, Nataly M atathias, Marina Karam ali, Harikleia Karam ali,
AntonyJoury, Emma W h ite h e ad ,, Jo Cook, Caitlin Hudson, Dan Dodds and Chris Ingram. Engineers: Ramboll Com
putational Design (RCD) - Stephen Melville, Harri Lewis, Jam es Solly.
hinges with different offset according to whether the hinge is open at an obtuse or acute angle. This
maintains a constant gap between the triangles throughout the whole structure. The definition then
Subtle variation of the fins in the shipw reck within the sam e param etric model.
The acute and obtuse angles of the hinges defines the size of the triangles param etric model by Dan Dodds.
Project 4
Eco-Resort in the desert of New-Mexico'^
with Stephen Melville, Harri Lewis and Neil Clements of Ramboll RCD
Recursion is the process of repeating items in a self-sim ilar way. For this project we moved and
rotated vectors in space to form a roof that responds to sunlight and resem bles a galaxy. One of
the great aspects of GrasshopperSD is that you can link all kinds of tools and sim ulations to your
parametric model directly. In this case, we linked the recursion to a sun angle that was imported
to Grasshopper from Ecotect using the plugin Geco by Thom as G rabner and Ursula Frick. This
allowed the roof to grow while making sure that sunlight stays out during sum m er and gets in
during winter.
Recursive operation generating the roof mesh using Hoopsnake, slight variations in the angles and distances.
Letting light in w inter and keeping it out in sum m er - Using Geco and Hoopsnake.
4. Eco-Resort in the desert of New-Mexico - More info:http://m am ou-m ani.com /ecoresort/ - Project by: Mamou-
Mani Architects and Ramboli RCD.Team for Mamou-Mani: A rthur Mamou-Mani, S a w a s Havatzias, Jack Munro
Team for Ramboll RCD: Stephen Melville, Harri Lewis, Neil Ciem ents (environm entai engineer).
Project 5
Chester Zoo's Heart of Africa Biodome
by Proctor and M atthews Architects^
Chester Zoo is the first project for which I used G rasshopper. It Is a 200 m eters long biodome hosting
anim als and plants from central Africa. The directors Stephen Proctor and Andrew Matthews wanted
5. Chester Zoo by Proctor and M atthews Architect - More inform ation: http://www.proctorandm atthews.com /
project/heart-africa - Client: Zoological Gardens Chester Project Architect: Gareth W ilkins, Design Team : Stephen
Proctor, Andrew M atthews, Stephanie Southward, Constance Leibrock, Benoit Sanson, Kengo Skorick, Arthur
Mamou-mani, Steven Davies, Anna M archant - Help on VB.net from H yu nb aijun .
a pattern that would respond to the ro ofs geonnetry not ju st an orthogonal grid. We also needed to
increase the greenhouse effect by making the openings very large and the structure very thin. Mark
Cabrinha, on the Grasshopper3D.com forum , recommended using geodesic curves for the gridshell.
These curves are the shortest path between two points on a surface. At first we populated the ring
of the roof with points and connected them with these curves. Later on we generated a mesh from
the intersecting points, which allowed us to organise all resulting triangles into separate branches.
What worked really well is that the resulting structure was larger at the peaks and denser in the
valleys. This made the structure very strong and convinced the engineers, who w ere advocating a
Throughout all these projects, Grasshopper3D with its plugins was used to define, generate, analyse,
sim ulate or fabricate geometry. In all cases, it accelerated the w orkflow and created unique projects
that would not have been created without this fertile platform. GH opens up a world of possibilities
and connects designers, architects, engineers, fabricators and artists around topics that go beyond
the tool itse lf This book is your chance to go beyond the Voronoi, develop your left-brain and be a
more complete professional. Now type "Grasshopper" in your comm and bar and enjoy!
Arthur Mamou-Mani is a registered architect and director of the chartered architecture and computational
design practice Mamou-Mani Architects (http://m am ou-m ani.com ). He is unit m aster of Diploma Studio 10 at the
University of W estm inster (http://W eW antToLearn.net) and advanced Grasshopper 3D tutor fo r Simply Rhino Ltd.
(http://Sim plyRhino.co.uk). A rthur has taught param etric design tools, digital fabrication as well as environm ental
and structural sim ulation at m any leading academ ic bodies such as the Architectural Association School of
Architecture and the UCL-Bartlett. He has previously worked with Atelier Jean Nouvel, Zaha Hadid A rchitects and
Proctor and M atthews Architects for three years before setting up his own company.
he CloudBridge
"Most of the time, the fastest way to get anywhere is a straight line leading from point A to point B. But
as a new conceptual project from Arturo Tedeschi architects, that's not necessarily the most efficient,
or most beautiful, w ay to go about it. [...] CloudBridge links two m ountainsides via an ethereal,
cloud-like structure. Though bridges are often a visual statem ent of strength, CloudBridge's latticed
form and non-linear path creates a super-stable bridge that appears to float between mountains,
The surreal concept, bolstered by extreme engineering, is a reflection of Tedeschi's work in general.
"Nowadays engineering and architecture are evolving just by improving in small steps the'state of art,'
and designers are gradually losing their visionary attitude" he says. 'This is also evident in technology,
automotive and product design." Cloudbridge is meant to push the boundaries and be a playful look
at how the trajectory and appearance of a bridge can be altered using parametric design".
(From 'T h is cloud-Like bridge w as created with an algorithm", WIRED digital magazine 10.04.2013)
R eferences
THEORY
Barrios, C.R., Parametric Design in Architeaure: Fundamentais, Methods, Appiications, Birkhauser, 2014.
Chang, W „ Vasilakos, A.V., Molecular Computing: Towards a Novel Computing Architecture fo r Complex Problem Solving
(Studies in Big Data), Springer, 2014.
Pilia, E.J., Fornasari, F„ Verso, P., Boschi, L„ Monopoli, D., Casolari, S., Citymakers, Deleyva, 2013.
AD. Architectural Design, Computation Worl<s: The Building o f Algorithmic Thought, Volume 222 (March/April 2013).
AD. Architectural Design, Inside Smartgeometry: Expanding the Architectural Possibilities o f Computational Design, April 2013.
AD. Architectural Design, Material Computation: Higher Integration in Morphogenetic Design, Volume 216, No. 2
(March/April 2012).
Giussani, E., Expressionist Organic Paths in Architecture: From Finsterlin to Gehry, Lap Lambert Academic Publishing, 2012.
Pizzigoni, A., Ingegneri e Archistar. Dialogo sul moderno costruirefra miti e mode, Christian Marlnotti Edizloni, Milano, 2011.
Coppola, C., Attraverso I'Architettura, rappresentazione procedurale e algoritmi p e r il progetto generativo, Alinea
Editrice, Firenze, 2011.
Woodbury, R., Sheikholeslam i, M., Elements o f Parametric Design, Bentley Institute Press, 2010.
Schum acher, P., The Autopoiesis o f Architecture, Veil. I and II, John Wiley & Sons, London, 2010.
Converse, S., II progetto digitale pe r la costruzione, cronache di un mutamento professionale, Maggioll, Milano, 2009.
AD. Architectural Design, Pattern, Volum e 79, No. 6 (Novem ber/Decem ber 2009).
AD. Architectural Design, Digital Cities, Volum e 79, No. 4 (July/August 2009).
Otto, F., Occupying and Connecting: Thoughts on Territories and Spheres o f Influence With Particular Reference to Human
Settlement, Axel Menge, 2009.
Bechthold, M., Innovative Surface Structures: Technology and Applications, Taylor &Francls, 2008.
Saggio, A., introduzione alia Rivoluzione informatica in Architettura, Carocci, Roma, 2007.
AD. Architectural Design, Techniques and Technologies in Morphogenetic Design, Volume 76, No. 2 (March/April 2006).
Aranda, B., Lasch, C., Tooling, Princeton Architectural press. New York, 2006.
Coppola, C., Computer e creativita per Tarchitettura, intelligenza artificiale e sistemiformali, Alinea, Firenze, 2005.
Thom pson, D'Arcy W., On Growth and Form, Cam bridge University Press, 1992.
ALGORITHMS
Wang, X., Algorithmic Enliancements fo r Computing the Frame o f a Finitely Generated Bounded Polyhedron, Proquest, 2012.
Deb, K„ Multi-Objective Optimization using Evolutionary Algorithms, Wiley, New York, 2001.
Goldberg, D., Genetic Algorithms in Search, Optimization, and Machine Learning, Addison W esley, N ew jersey, 1989.
Aho, A., U llm an.J., H o p cro ftJ., Data Structures and Algorithms, Addison W esley, 1983.
DIGITAL FABRICATION
Jackson, P., Cut and Fold Techniques fo r Pop-Up Designs, Laurence King Publishing, London, 2014.
Jackson, P., Cut and Fold Techniques fo r Promotional Materials, Laurence King Publishing, London, 2013.
Nakamichi, T „ Ito, C., Miyazaki, Y., Pattern Magic: Stretch Fabrics, Laurence King Pub, 2012.
Jackson, P., Folding techniques fo r designers from sheet to form , Laurence King Publishing, London, 2011.
Iwamoto, L., Architectural and Material Techniques, Princeton Architectural Press, New York, 2009.
Schodek, D., Bechthold, M., Griggs, J.K., Kao, K., Steinberg, M., Digital Design and Manufacturing: CAD/CAM applications
In architecture and design, Wiley, 2004.
Wolff, C., The Art o f Manipulating Fabric, Krause Pubns Inc., 1996.
FORM FINDING
Adriaenssens, S., Block, P., Veenendaal, D., Williams, C., Shell Structures fo r Architecture, Routledge, London, 2014.
Descam ps, B., Computational Design o f Lightweight Structures: Form Finding and Optimization, Wiley, 2014.
Schatz, P., Carline, P., Rhythm Research and Technology: The invertible Cube/ Polysomatic Farm-finding, Niggli, 2013.
Knippers, J., Crem ers, J., Gabler, M., Lienhard, J., Construction Manual fo r Polymers + Membranes: Materials, Semi-
Finished Products, Form-Finding, Design, Birkhauser, 2012.
Pone, S., Gridshell, I Gusci a graticdo In legno tra Innovazione e sperimentazione, Alinea, Firenze, 2012.
Kourkoutas, V., Parametric Form Finding In Contemporary Architecture: The Simplicity Within The Complexity Of Modern
Architectural Form, Lam bert, 2012.
Otto, P., Rasch, B., Finding Form, Deutscher Werkbund Bayern, 2006.
Billington, D.P., Thin Shell Concrete Structures, M cG raw H ill, New York, 1982.
Kilian, A., Ochsendorf, J., “Particle-spring system s for structural form f'md'mg;'Journal o f the International Association
fo r Shell and Spatial Structures, vol. 46, no. 148 (2005): 77-84.
SCRIPTING
Tang, M., Parametric Building Design Using Autodesk Maya, Routledge, 2014.
Pearson, M., Generative art, a practical guide using processing. Manning Publications Co., Shelter Island (NY), 2011.
Burry, M., "Scripting Cultures: Architeaural Design and Programming,"/4D./Architecfura/Des;gn, John Wiley & Sons, 2011.
ARCHITECTURAL GEOMETRY
Charleson, A., Structure As Architecture: A Source Book fo r Architects and Structural Engineers, Routledge, London, 2014.
C arrera, E., Briscetto, S., Nali, P., Plates and Shells fo r Smart Structures: Classical and Advanced Theories fo r Modelling
and Analysis, Wiley, 2011.
Gjerde, E., Origami Tessellations: Awe-inspiring Geometric Designs, A.K. Peters Ltd., 2009.
Lopez, D., Am brose, G., Fortunate, B., Ludwig, R., The Function o f Form Farshid Moussavl, Actar, 2009.
Pottm ann, H., Asperl, A., Hofer, M., Kilian, A., Architectural Geometry, Bentley Institute Press, USA, 2007.
Bens 0 e, M., Sigmund, O., Topology Optimization: Theory, Methods and Applications, Springer Verlag, Berlin and
Heidelberg, 2003.
Schock, H.J., Soft Shells: Design and Technology o f Tensile Architecture, Birkhauser, 1997.
MATHEMATICS
Burry, J., Burry, M., The New Mathematics o f Architecture, Tham es & Hudson, 2012.
Rucker, R., Infinity and the Mind: The Science and Philosophy o f the Infinite, Princeton University Press, 2004.
Frixione, M., Palladino, D., Funzioni, Macchine, Algoritmi, Carocci, Roma, 2004.
Saad, Y., Iterative Methods fo r Sparse Linear Systems, Society for Industrial and Applied M athem atics, 2003.
MONOGRAPHS
Hiesinger, K.B., Zaha Hadid: Form in Motion, Yale U niversity Press, 2011.
De Costa Meyer, E., Frank Gehry: On Line (Princeton University Art Museum Series) (Princeton University Art Museum
Monographs), Yale University Press, 2008.
Hadid, Z., Schumacher, P., Latent Utopias: Experiments Within Contemporary Architecture, Springer Verlag GmbH, NY, 2003.
Nicoletti, M., Sergio Musmeci, organiclta difo rm e efo rze nello spazio, Testo & Immagine, Collegno, 1999.
Faber, C., Candela: The Shell Builder, Reinhold Publishing Corporation, New York, 1963.
Decoded QR list
• Grasslnopper environm ent and plug-in environm ental analysis and structural optimization. It
software also features case studies and contributions by resear
• Param etric modeling and advanced
chers and designers from w orld's most Influential univer
data m anagement
sities and leading architecture firm s.
■NURBS curves and surfaces
w w w .arturo tedeschi.com
ISBN 978-88-95315-30-0