Luke Hickman Natural System Studio Journal

Page 1

Natural Systems Studio:

Exploring Nature - Inspired Systems

Luke Hickman


CONTENTS

Luke Hickman


PREFACE This journal is titled Natural Systems: Explorations into the Utility of Scripting for Architecture, because ‘utitlity’ in my view is the fundamental driving ethos behind Architecture and it is what separates the field from pure Art. In essence, Architects are primarily problem solvers and strategists first, before they are authors of aesthetic cultural products. This definition is not fixed when applied to individuals within the profession as diversity of the creative process is fundamental to the health of the Architectural culture as a whole. In addition, aesthetic and functional concerns often overlap and are co-dependant within design pathways. Contemporary Architectural discourse from 1990’s has been continually bombarded with new digital tools and resultant from them, entirely new design perspectives (2). These new digital design tools are useful to Architects in multiple ways; including time saving devices, expanded perception of 3d space and form manipulation through a virtual environment and most arguably the most important way being; spontaneous outcomes from procedural and parametrically driven scripted design processes. This relatively new and small avant garde of architecture is exploring the frontier opened up by digital design platforms and scripting languages. This frontier promises a new design language capable of dealing with complexity, which will be integral to future architecture defined by a systems based, information loaded environments in a state of flux. The state of the field of scripting and generative processes integrating structural and material simulation is in its relative infancy1. As well as being the language for complexity scripting provides the potential to bridge the creative divide between qualitative and quantitative data and open up new furtile achitectural domains.

1 Hensel, M., Menges, A., & Weinstock, M. (2010). Emergent technologies and design : towards a biological paradigm for architecture / Michael Hensel, Achim Menges and Michael Weinstock. Abingdon, Oxon. : Routledge,


CONCEPT My initial concept ideas were stimulated by the below statments in Emergent Technologies and Design: Towards a Biological Paradigm for Architecture1. “ As mutations to the known form of organisms occur naturally, so too have the small innovations, theoretical ‘errors’ and design mutations of ancient architectures produced the ‘populations’ or cities of buildings, and driven the historical evolution of architecture.” “Other differences include the mode of inheritance, which in culture may be horizontal or oblique, as cultural practices concerned with material construction diffuse between distinct social groups”. These two statements made me think if culture can be re-analysed as a natural system, what new models of human development and potential could be divined. If culture is just another complex system linked with the metabolism of nature, and architecture is the representation of cultural forces then a new architecture would be self referential of this change in perspective. My idea is to engage with a portion or slice of the cultural data stream and use this information to inform an architectural outcome. Scripting should provide a way to harness the massive redundant cultural code and utilize this database to invent procedure to enable spontaneous architectural ideas to emerge. The idea of coding architectural product to perform dynamically with the environment follows the idea of emergence as it is applied to human culture. Architecture in this way is the environmental response of human agents interacting through cultural stimuli. This idea is elaborated in Michel Weinstock’s book the Architecture of Emergence, which explores the tendency of human culture to follow the a trend of increasing complexity2. He asserts that our culture will either learn to find an equilibrium with nature, or there will be a collapse and an eventual re organsiation. Eventually, human culture will develop and emergent equilibrium with the natural sytems of the planet.

1 Hensel, M., Menges, A., & Weinstock, M. (2010). Emergent technologies and design : towards a biological paradigm for architecture / Michael Hensel, Achim Menges and Michael Weinstock. Abingdon, Oxon. : Routledge, p 31 2 Weinstock, M. (2010). The architecture of emergence : the evolution of form in nature and civilisation / Michael Weinstock: Chichester, U.K. : Wiley


RESEARCH Why use and learn scripting? It is necessary to be able to customise your own design tools. Greg Lynn explains his use of scripting as the inevitable outcome of the need to get the results your design intuition requries. “ Intuition is the moment when the principles and techniques of a discipline are so integrated that one is able to extrapolate, develop and extend them as an invention or innovation�1 . 1 Rocker, I. M. (2006). Calculus-Based Form: An Interview with Greg Lynn. Architectural Design (London, England), 76(4), 88-95.

Greg Lynn, Kleiburg housing project, Bijlmermeer, the Netherlands, 2006


RESEARCH This source discusses how Architecture should not impose form, but through stochastic principals (applied mathematics) and sourcing the “massive data” of the contemporary world, find new strategies that incorporate both “soft data” (qualitative cultural information) and objective data to design effective (performative) architecture. Cynthia Ottchen proposes that there are two separate trends within architecture; the use of animation like software to create fluid dynamic shapes and morphogenic outcomes, and the productivity tool / BIM approach where documentation and project management is prioritized1. Ottchen explains that a new way of thinking will arise to bridge this traditional divide between the “romantic/rational” portions of architecture. This new bridging theory will enable architecture to engage the complex world in an “effective” way defined by stochastic principals that through the raw power of data and computing capacity can origanate ‘fit’, adapted results. She describes a new role for the architect as a “multidisciplinary strategist”. “Massive data is the new meaning”

1 ttchen, C. (2009). The Future of Information Modelling and the End of Theory: Less is Limited More is Different. Architectural Design, 79(2), 2227.

Fig 1, Photographic Tower Iteration, Ottchen, C, (2009)



This post graduate research project set in Santurce/San Juan Puerto Rico was based on developing urban scale synthetic models of the stocks and flows of economic and social forces within an urban field of interest. The students used computational models to break hierarchic topologies and re- order and develop non-linear, inventive program and spatial relationships. The winning master plan for the studio work synthesized a broad spectrum of competing hierarchical parameters such as bodies of water, transport paths and flows and zoning regulations. This project shows that scripting can be a powerful tool in collecting and diagramming complex design problems particularly on an urban scale. Even though the figural result may be highly conceptual its use as a diagram is profound1. Web Morphogenesis (see fig 1) is an example of a project that was inserted into the master plan. This project interestingly states that it is not form that follows function but the result of form in dialogue with function. With scripting both can compete and be manipulated non-hierarchically. It uses a “multi-agent based system working with curves, force fields and rules for a woven structure combined with rules for filling space through subdivision.�

Fig 1, Web Morphogenesis

1 Post-Professional @ Penndesign 2010-2011 Publication, Winka Dubbeldam_director Roland Snooks, Ferda Kolatan University Of Puerto Rico, p 37 -49


1.

1.

1.

2.

2.

Source: New Normal Post-Professional @ Penndesign 2010-2011 Publication, Winka Dubbeldam_director Roland Snooks, Ferda Kolatan University Of Puerto Rico 1. Web Morphogenesis 2. Systemic Compulsion


BACTERIAL WALKER

The aim of this sketch was to design a process whereby particles explored and clustered the inert environment, then were organised via a selection process and made to change in some way. The initial idea was for it to be a model of human expansion and settlement across a landscape. Once a certain amount of particles in a zone was met a new exploration team was sent off. These ideas were too advanced at the time of this journal entry. The end result used a random step action and a selection routine highlighting particles with a specific opacity.

// Code that isolated and highlights specific particles. First step toward selection. void display() { //additional data -object functions noStroke(); if (opacity < 150) { opacity = 255; } fill(random(c),0,0,opacity--); ellipse(x,y,r1,r1); if(c>252){ stroke(0,255,0,opacity--); ellipse(x,y,r1*2,r1*2); colormatch = true; }}

//random walker code void step() { // randomly steps the object from center if hits edge int choice = int(random(6)); // the random choice of if (choice == 0) { //number between 0-3 determines step x= x + 10; } else if (choice ==1) { x= x -10; } else if (choice ==2) { y = y + 10; } else if (choice == 3){ y=y -10; } if (choice == 4) { /number between 0-3 determines step x= x + 20; } if (choice == 5) { //number between 0-3 determines step x= x - 20; } else { y = y+ 20;} if (( x > width) || (x < 0)) { // reverts to near center pos x = width/2*z; } if (( y > height) || (y < 0)){ // reverts to near center pos y = height/2*z; } }//end method



LIFE AND DEATH

This processing sketch was made under the parameters of learning to use arraylists and vectors. The particles randomly move through a set velocity variable and are contained within the screen boundaries. The complex visual representation is achieved via cross checking distances between individual particles so that a joining line can be drawn between them. This simple method instantly created a sense of architecture even if it is quite ‘dumb’. The sketch is made more interesting via the addition of two environmental zones, a life zone whereby a particle is added once crossed and a death zone where a particle is removed. Sliders were used to alter the size of these zones and get different behaviour.

void draw () { background(0); //call functionality addList = new ArrayList(); deleteList = new ArrayList(); if (mousePressed) { Vec3D p = new Vec3D(mouseX, mouseY, 0); Spot newSpot = new Spot(p); spotcollection.add(newSpot); } for (int i = 0; i < spotcollection.size(); i ++) { Spot ms = (Spot) spotcollection.get(i); // call a collection of spots from the whole array. // println(ms); // run grouped functions from the Spot class ms.run(); ms.die(); ms.live(); } if (spotcollection.size() > 500 ) { noLoop(); } //run the remove code //loop through all the objects that need to be removed, and delete //from the arraylist using the .remove() method for (int i = 0; i < deleteList.size(); i ++) { Spot msd = (Spot) deleteList.get(i); // when you take something out of a list //need to give it a new name so the comp knows what it is. int spotIndex = spotcollection.indexOf(msd); //get the index of the objects //called from the deleteList //remove objects at index which is //defined by variable just added. spotcollection.remove(spotIndex); } //then run the add code //ditto, loop through the stuff in the add list, //and add to the //spotcollection list for (int i = 0; i < addList.size(); i ++) { Spot msa = (Spot) addList.get(i); spotcollection.add(msa); } } }



CULTURE GENOTYPE

This sketch was started from the idea that in the future Culture as a living instance or suspended artifact could be analysed and mapped in all its scope. This sketch uses a random walker that was to have varying characteristics and interactive behaviors like explore, cluster, kill and breed to simulate the growth of cultural elements and their interconnectedness. At the time of this journal the sketch was working upon the principals of explore and cluster. The cluster behaviour simulated convergent cultural elements and the exploring behaviour cultural modes of distinction. The explore behaviour fed back into the system shocking the clustered elements with a greater acceleration once a certain escape distance was reached.

// main walker characteristic set of functions void tendancies() { display(); update(); explore(); //parametric selection or (probability) of population avoid clusters, accelerate away cluster(); //parametric selection (probability) accel towards each other //kill(); //parametric selection (probability) if touch each other one is removed //breed(); //parametric selection (probability) if certain cluster size reached breads //tracepaths(); // run a trace line through selection of points //web(); } void explore () { if (explorergo) { for (int i = 0; i < Ws.size(); i++) { Walker explorer = (Walker) Ws.get(i); Vec3D kickstart = new Vec3D (random(-10, 10), random(-10, 10), random(-10, 10)); float bounds = loc.distanceTo(explorer.loc); if ( bounds > 50) { acc.addSelf(kickstart); } }}} void cluster () { //create a time switch so only happens once each cycle if (frameCount == 100 && clustergo) { for (int i = 0; i < Ws.size(); i = i + isov) { Walker other = (Walker) Ws.get(i); float clusterdist = loc.distanceTo(other.loc); //if within range of pull then particles drift together if (clusterdist > 0 && clusterdist < neighbourdistance) { acc.addSelf(other.loc); acc.clear(); clustergo = false; //switch off println(“clustered�); } } }}



1.

Predators and Prey in a Box

DOLPHINS CHASING SARDINE SHOAL

2. I need to add avoidance, cohesion and separation to the prey class so that it more resembles the schooling behaviour of fish being hunted by dolphins. The main outcome of this sketch was learning how to implements communication between classes and hence interaction between differing agents. The sketch seen heres only exhibits attraction of the predators towards the prey. When a predator hits the prey the agent is removed. This coordination required multiple arraylists and an understanding of indexes and references to an object. 4.

3.

1. See PredatorandPrey_1, - frame 100 2. Accessible via - http://africanspace.co.uk/activities/diving/sardinerun/the-bay-the-shoal-the-run/ 3. my Processing Sketch - earlier version


2.

1. The extension of this project would be to use two conflicting object classes to provide data for mapping a surface or structure. For example the predator movement across a grid could manipulate the heights of a forrest of lines which have origin points mapped to the prey locations.

This is the same predator and prey sketch where I turn off the background in the draw loop. This allows for a mapping or tracing of the predator movement as the prey visibility was turned off. The emergent behaviour is a nuclearisation of the predators, as they are attractor to mutiple prey objects sourrounding them in a dense field.

1. See PredatorandPrey_1, - frame 200 2. “ “ - frame 1050 3. “ “ - frame 1600

3.


//Particle system and a base image environment //credits to Daniel Shiffman and Gwyllim Jahn

Stigmergy Single Origin Agent System

World world; ArrayList <moversystem> msystems; int totalframes= 3000; //Mover global properties int numMovers = 50; int searchRad = 2; float maxSpeed = .3; //world global properties float fadeSpeed = 0.5;

1.

TERMITE DAMAGE TO WOOD

Stigmergy is derived from concepts that classify “mechanisms that mediate interactions between social organisms”1. 1 Jason Lim, 2011, Let’s Work Together: A Stigmergic Approach to Acoustic Design, in Integration Through Computation, ETH Zurich, Aterlier Panda, ACADIA 2011 Proceedings,p. 396

2.

TERMITE TRAIL ON TEAK SKIN

2.

void setup(){ size(800,800,OPENGL); smooth(); world = new World(“train1.png”); msystems = new ArrayList(); } void draw(){ background(255); world.drawImage(); world.fade(); //run through all the moversystems in the arraylist // and run functions for (moversystem m: msystems) { m.run(); }} 1. Accessible via -http://www.123rf.com/photo_13293400_ termite-damage-to-a-wood.html 2. Accessible via -http://dustygedge.co.uk/roadblog/wp-content/gallery/teak-skin/teak-skin.jpg


Interesting Field of view behaviour reacting to spawning of lots of movers at the same origin

2.

1. 3.

Reducing the search radius gets interesting behaviour as seen in fig 1. The procedure explore, then angle follow, then infill could a useful behaviour to research further. 1. See Stig_directed1, my Processing sketch - frame 200 2. “ “ - frame 1050 3. “ “ - frame 1600


Stigmergy Single Origin Agent System cont.

//check the environment around the object void checkWorld(){ PVector toBest = new PVector(); //create a temp vector to keep track of the direction of the best condition float maxV = 0;

The code in fig 2, describes the key function that drives the Stigmergy behaviour.

//loop through pixels for (int i = -searchRad; i<=searchRad;i++){ for (int j = -searchRad; j<=searchRad;j++){ if(!(i==0 && j==0)){ //checks for edges int x = floor(location.x)+i; //’floor’ - Calculates the closest int value that is less than or equal to the value of the parameter x = constrain(x,0,width-1); // constrain(value, min, max) int y = floor(location.y)+j; y = constrain(y,0,height-1);

It took a while for me to figure out how this was actually working. I had to read through and annotate step by step in order to decipher the code. Importantly, this code creates the opportunity to link in more variables. As what is seen to the right incorporates multilpe fixed values that can be made into dynamic values.

//check to see if this is the smallest current value //scale by the distance to the value float v = world.getAt(x,y); PVector toV = new PVector(i,j);

In later sketches I will add oscillation and probability to vary the angle of vision, the tolerance and the search radius.

//limit the angle of vision if(PVector. angleBetween(toV,velocity)<PI/2){ //check to see if the current value is larger than //the current best if((v)>maxV){

Manipulating these variables should allow for significant change in the outcome.

//reset all our variables that keep track of the best option float d = toV.mag(); toV.mult(1/d); h toBest = toV; maxV = v; } }}}}

1. See Stig_3, Key part of code that directs the acceleration of particles

2.

1.

//only effect if finding something above a tolerance if(maxV>1){ applyForce(toBest); } }


6.

7.

8.

9.

1.

2.

3.

4.

1 -5. See Stig_3, Close up images of Stigmergy sketch 6 -9, Screen shots at progressive frames of the same sketch

5.


class Creator { PVector loc; PVector vel; PVector acc; float maxvel; int count =0;

Added Spawning Agent

The aim of this sketch was to add a spawning agent to automate the distribution of stigmergy systems.

Creator (PVector _loc, PVector _vel, float _maxvel) { loc = _loc; vel = _vel; maxvel = _maxvel; }

Figure 2 shows the code for the introduction of the spawning agent. The crucial code section is the void spawn function which has a constructor which allows for variance in number of movers spawned and random velocity.

void run() { display(); update(); spawn(); checkEdges(); }

The spawning agent was set on random trajectories. In the future I would like the spawning agent to follow some kind of intelligent pathway. For example, it moves towards a clear zone which has not been traced by the stigmergy system. This would allow development of a constantly spreading system.

void display() { noStroke(); fill(100); ellipse(loc.x, loc.y, 100, 100); } void update () { acc = new PVector (random(-5,5),random(-5,5)); vel.add(acc); loc.add(vel); vel.limit(maxvel); acc.mult(0); } // add new moversystem in each frame as spawn // ing agent moves void spawn () { msystems.add(new moversystem(numMovers, new PVector(loc.x, loc.y), new PVector(random(-maxSpeed, maxSpeed), random(-maxSpeed, maxSpeed)))); }

Jose Sanchez in his Open Processing Libary for the Stigmergy 2D sketch, pointed to the key point that the agents need to have some purpose 1. Just like termites the paths formed need to be finding out something. I need to think of what the stigmergy system could optimise.

1 Jose Sanchez, Stigmergy 2D, (Open Processing),

<http://www.openprocessing.org/sketch/21385> [Accessed Sept 2012]

2. See Stig_4, (Stigmergy Sketch with Spawning Agent)

2.

void checkEdges() { if (loc.x > width) { vel.x = vel.x*-1; } if (loc.x < 0) { vel.x = vel.x* -1; } if (loc.y < 0) { vel.y = vel.y*-1; } if (loc.y > height) { vel.y = vel.y*-1; } } } } }


6.

7.

8.

9.

1.

2.

3.

4.

5.

In future iterations I would like to add a variable for controlling when and how many movers are added to each spawning of a mover system.

1 -5. See Stig_4, Stigmergy with spawning agent 6 -9, Screen close up images at progressive frames of the same Stig_4 sketch


Spawning agent added to Stigmergy System


Increased environmental Fade


Added Oscillation to Death Speed


Increase Oscillation Max of Death speed

Increased background fade = equilibrium of white fill


Increased spawn numers

Emergent straight lines


Straight lines emerge in parallel to grain

Increased numbers, fade and Death Oscillation

Consistant grain from top left to bottom


5.

Adjusting settings with Sliders

By experimenting with the death speed of the particles and the fade speed of the background environment I attempted to find an equilibrium of growth. Where the stigmergy system was not inhibited by its own path. This hopefully would allow an emergent form to develop.

found it interesting to play with the 1. Ifield of view (FOV) function informing the particles vector.

Influencing FOV allowed weak control over the clustering and expansion of the particles. I started to add oscillation effects to the acceleration in order to vary the movement. 1. See Stig_directed_12, Stigmergy sketch with mouseDragged Spawn 2. Ibid 3. Ibid 4. Next page, Stig_directed_12 5. Graphical User Controls from Stig_directed_12 sketch

3.

2.

The figures 1 to 3, show a behavioural change in the particles as there search radius is increased. Figure 4 on the next page shows an instance when the search radius has been significantly increased, in the context of the sketch parameters. The Graphical User Controls (GUI), see in figure 5, allowed me to introduce parametricism, with the aim of finding emergence behaviour from certain settings. This manual control allows for a curation of the process to occur. In order to find a sketch that exhibits behaviours of natural- systems the user has to experiment with the variables.


Stigmergy - with increased Search Radius

Looks more like termite paths


Adding Physics to Stigmergy Sketch

void searchAgents() { // need to find out how to access arraylist in the moversystem //loop through all movers in arraylist for (Mover a: pop) { //get essential variables

The code refered to in figure 1 was aimed at searching through all the agents in the agent system, then to register distance between agents, and apply a repulsion force. I had problems patching together the extended particle example provided by Gwyllim Jahn, and my multi - particle Stigmergy system. I learn’t the importance of defining the code structure, ie extending the verlet Particle function from the beginning of the sketch. In the future when I see the need for physics at the start, I will build off a base class of the extended Verlet Particle. Although, I realised too late that it is far simpler to just add repulsion as another custom fource. I began trying to implement an inverse of the acceleration, as seen in figure 1.

//if distance between one particle and another is less than set variable // then apply repel force which is the inverse of applyforce function. //test agents locations to one another PVector diff = .distanceTo(a.location); if (diff > 0 && diff < 2) {

In the following sketches I need to clarify how you can refer to array lists inside a meta - particle system from inside a class. The problem came from trying to reverse engineer. The simplicity of the code was compromised and I will need to look at my structures in the future.

1. See Stig_ 9, Code snippet from Sitgmergy Sketch 2. Code snippet from Gwyllim Jahn’s, extended particle example.

Particularly, I will need to implement inheritance in more instances to modularise and simplify my code and input new behaviours.

//if with distance apply negative force //- repulsion PVector f = new PVector (random(5),random(5)); f.mult(-1); acceleration.add(f); } } } }

1.

void searchAgents(){ //reset accel for (Agent a:agentPop){ //get essential variables Vec2D diff = a.getPreviousPosition(). sub(this); float d = diff.magnitude(); if(d<100&&d>0){ attract(diff.copy(),d); //attract to neighbour align(a.getVelocity(),d); //align with neighbour if(d<20) { repel(diff.copy(),d); //avoid neighbour } } } }

2.


Precedents & Research Jason Lim in Proceedings from ACADIA 2011, explores the use of Stigmergy to derive the most optimum acoustic design for an auditorium. The key facet describes is the ability of the ‘rays’ or agents to change the environment they come into contact with1. The computer simulation done in Rhino and Grasshopper trys to emulate and prove the analog form finding used by Alvar Aalto at the Viipuri library in Vyborg Russia. See figure 1 for the Viipuri Library.

1. Lim includes in his article a defintion by Zoologist Pierre Paul Grasse of a stigmergic system; “Stigmergy describes a form of indirect coordination between organisms using signals left in their environment. These signals persist and cue subsequent behaviours in other individuals”.

Lim also states an important intellectual facet of stigmergic systems; “[p]roblem-solving information is actually embedded in the external environment as a form of external memory”. The idea of embedding memory into the environment through architecture and techniques derived from natural systems is very interesting. How could this idea of interactive memory sites be used in the architectural field using humans as the agents of the stigmergic sytem?

The system designed emitted particles symbolising sound from a central point on the stage of a 3d modelled auditorium. The particles interacted with the auditorium structure and the seats. The interaction between particles and the environment were mapped and fed back into the environment. Via multiple iterations and using pre conceived acoustic parameters an optimised acoustic space emerged from the stigmergic system. This non linear form finding approach proved the validity of Aalto’s analog procedure and the viability of the digital tool. 1 Jason Lim, 2011, Let’s Work Together: A Stigmergic Approach to Acoustic Design, In Integration Through Computation, ETH Zurich, Aterlier Panda, ACADIA 2011 Proceedings,p. 396 Fig 1. Alvar Aalto, Aalto_viipuri_07, (USA, Souther Polytechnic State University), http://fac-web.spsu.edu/architecture/classes/Setiawan/libraries/Aalto_libraries/ [Accessed Sept 2012]


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.