Natural System Studio

Page 1


University

of

Melbourne

Natural System Studio 2012 Stanislav Roudavski Gwyllim Jahn

Farbod Fathalipouri - Xiaozhou Zhou Semester 2 - 2012


Contents

/* Declarations ============================ Preface and Concept ================== Chapter One ==========Networks======== Cells 1 ============= Cells 2 ============= Chapter Two ==Motion,Forces&Particle== Higgs Bosons Particles ============ Particle System ============ Interacting Particles=========== Environment Modifiers============

Preface 1-3 8-13 10 12 14-51 16 20 22 30

Emergence of new technologies has provided humans new grounds to explore nature; this has changed our perceptions about nature and natural phenomena and as so our perception of beauty. In the light of new explorations based on the emergent technologies we now have a wider knowledge on the natural phenomena and considering the digital era we live in, with the help of computers we can simulate and use them to achieve more natural effects and environment. In this essence use of digital technologies can brings us great achievements in design as nature has always been a benchmark of beauty for human being. Implementing the culture of scripting to script the cultures, civilizations and natural phenomena we can get benefited from them in our architecture1. In this essence forms can be generated through scripting the natural environments and critical parameters111 affecting it and the virtualized behaviors of environment would lead to a self-forming process2. As so we have aimed to learn scripting in conjunction with understanding the nature to use the computational morphogenesis design in order to achieve natural systems which produce natural forms and get benefits of natural forms such as most efficient structures, energy use and etc.

1

Burry , M. (2011). Scripting cultures: Architectural design and programming. (1st ed.). AD 2 Weinstock, M. (2010). The architecture of emergence. (1st ed., p. 245). West Sussex, : John Wiley & Sons.


Concept Humans emerged and evolved within nature; civilization and cultures have developed in it and in turn have extensively modified the natural forms f the surface of the earth, the ecological systems of living forms that exist up on it, and the climate ‘metasystems’1. Architects have always tried to justify the beauty of their works by looking at the nature and as so beautiful architecture have always been evaluated by a ‘model of nature’ as a benchmark and reference of the beauty in human cultures. It can be seen in the ratios of nose to head and head to the body used in traditional architecture which were changed by the invention of the decimal numbers in 18th century as Lynn recommends. In regard to the scientific findings the model of natural forms has been revolutionized today through using digital tools which are based on calculus. This has affected our perceptions of beauty, form and also in broader scale our perception of “natural”; the initial concepts of this can be seen in Gothic period as Lynn suggests it was the result of calculus invention that affected architectural forms for the first time in Antonio Gaudi’s, Sagrada Familia church in Barcelona in which models of forces and motion implemented into the design. 1 1 Weinstock, M. (2010). The architecture of emergence. (1st ed., p. 245). West Sussex, : John Wiley & Sons.

Greg Lynn proposes new components to be considered in regard to the nature which are the invention of the “Generic Forms”, “Genetic Evolution” and “Symmetry” which are based on the William Batson’s researches in the mutation and teratology; these type of applications can be easily simulated with scripting in digital environment.1 In regard to that the process of form finding has been changed from a form drawing to a selfforming process in which the equilibrium of critical parameters defined and assigned by the designer shapes the form. On the other hand the nature which has always been a source of inspiration for architects, involves different layer of systems cascading into each other as they evolve in their critical threshold; simulating these behaviors has been made possible through scripting each system and their behaviors in computer to achieve beauty and stability in design.

Figure. Sagra da Familia Church, Barcelona, Spain Designed by Antonio Gaudi and commenced in 1882.

1

1 Lynn, G. (2005). Greg lynn on calculus in architecture [Web]. Retrieved from http://www.ted.com/talks/greg_lynn_on_organic_design.html


Chapter One

Networks

1

In this project as excercises in the initial weeks we intended to visualise some networks pattern inpired by the brain neurons. we have encountered a visualization of facebook network for a person and found it interesting to get inspired as it looks like neural patterns. However in this project lack of coding knowledge constrained our ability to develop the project more. in the next steps we could think about having more fluid lines and some scattered lines to visualize a pattern more similar to the one in figure 2.

2

2 1.The Facebook network - A Social graph connections network. a Precedent of a project made by the “nexus” app in facebook to visualize people’s network Source: http://brown2020.com/2008/12/facebook-is-a-neural-network/

2.The Visualization of brain neural network. Source: http://los-mandoade.deviantart.com/art/Neural-Network-205781521

3.An example of a pattern we made.

3


Project : Cells

This one is our initial try with the aim to get the network pattern effect. the circle made manualy and intersecting circles were connected from the centers by a line. This project has been made by using an “ArrayList” of circles to store the circles made under a mousePressed function by clicking in the window, as so a function checks if the circles are intersecting to connect centers by a line.

CODE 1.1 -- 1.2 : // The Red Parts of the code refers to the changes to make the Developement 1 s of the code to get invisible moving circles and the self generative lines. // ===================OBJECT class Circle { PVector pos; //position float r; //circle radius float stepSizeX; float stepSizeY; float[] colorRGB = new float[3]; //float array stored colour info //==================== Constructor, initialize the variables Circle(float tempX,float tempY){ // create new vector storing information about position, moving direction & speed and colour r = random(30,height/8); //randomly generate a circle radius tempX = constrain(tempX,r,width-r); // constrain the ciecle position within screen tempY = constrain(tempY,r,height-r); // constrain the ciecle position within screen pos = new PVector(tempX,tempY); // assign x,y stepSizeX = pow(-1,round(random(1,2))) * round(random(stepSizeMin,stepSizeMax)); //random number +/- stepSizeMin-Max stepSizeY = pow(-1,round(random(1,2))) * round(random(stepSizeMin,stepSizeMax)); //random number +/- stepSizeMin-Max for (int i = 0; i < 3; i++) { colorRGB[i] = round(random(0,i*60)); //generate color RGB value } } //==================== Methods and Functions void run(int i){ update(); display(); drawLines(i); } //update the location of circle, moving according to the angle cotrolled by the perlin noise void update() { float angle = noise(pos.x/noiseScale,pos.y/noiseScale) * noiseStrength; pos.x += cos(angle) * stepSizeX; pos.y += sin(angle) * stepSizeY; // reverse direction while genereate random speed at the same time // little buggy here, sometimes circle stuck on the screen boundary // improve later if (pos.x < r || pos.x > width-r) stepSizeX = -1*stepSizeX/abs(stepSizeX)*round(random(stepSize Min,stepSizeMax)); if (pos.y < r || pos.y > height-r) stepSizeY = -1*stepSizeY/abs(stepSizeY)*round(random(stepSiz eMin,stepSizeMax)); /*if (pos.x < r) stepSizeX = round(random(1,3)); if (pos.x > width-r) stepSizeX = -round(random(1,3)); if (pos.y < r) stepSizeY = round(random(1,3)); if (pos.y > height-r) stepSizeY = -round(random(1,3));*/ }

//============= GLOBAL VARIABLES ============= ArrayList CircleCollection; float noiseScale = 100; float noiseStrength = 5; int stepSizeMin = 2; int stepSizeMax = 4; //============= SETUP ============= void setup() { size(800, 600); smooth(); frameRate(30); CircleCollection = new ArrayList(); } /============= DRAW ============= void draw() { background(0); Circle temp = new Circle(0,0);

The first two rows shows the process of adding circles by clicking in the screen and then the second two rows shows the process of deleting circles by pressing “Backspace”. So during the adding circles when two circles intersect they get connected by a line from their centers to each other and then by pressing “Backspace” the “keyPressed” function runs again and checks the key so it deletes the last index in the “ArrayList” and checks the rest of the code again.

//loop through all circles in the circlecollection arraylist for (int i = 0; i < CircleCollection.size(); i++) {

// draw circles void display (){ ellipseMode(CENTER); noStroke(); // fill(colorRGB[0],colorRGB[1],colorRGB[2],100); noFill(); ellipse(pos.x, pos.y, r*2, r*2); } //==========draw line function would find all the circles intersecting and draw line to their centers

Figure 1. Connecting Cells and Pathways refers to the gray part of the Code 1.1 on next page.

void drawLines(int i) { // passing the i value to fuctions for optimizing the algorithm // check the current circle with the ones after it, in order not to check many times Circle temp = new Circle(0,0); for (int j = i+1; j < CircleCollection.size(); j++) { temp = (Circle) CircleCollection.get(j); if (checkDistance(temp)) { // line colour defined by the average value of two circle colours // stroke((colorRGB[0]+temp.colorRGB[0])/2,(colorRGB[1]+temp.colorRGB[1])/2,(colorRGB [2]+temp.colorRGB[2])/2); stroke(255,0,0); strokeWeight(1); line(pos.x,pos.y,temp.pos.x,temp.pos.y); } }

Figure 2. Connecting Cells refers to the gray part of the Code 1.1 on next page; the figure shows different steps of adding circles, deleting them and the resulted lines.


Project : DCells

evelopement

1.Self Generative Lines

As a development to the first part we tried to make the project more generative and get the neural pattern network so by simply implementing motion in the circle class and removing the fill() from the function and make the circles invisible the connection lines are visible which are changing randomly by intersection of randomly moving circles.

Figure 3. Generative Lines resulted from invisible intersecting circles refer to the Code 1.2 on the last page with the red parts. Figures 4. On the right side shows the effects of moving circles and the generated patterns made by their movement


Chapter Two

Motion, Forces

Computational design benefits architecture and the design process in number of ways, beside the “performative capacities and complexities”[1] integration of materialization, form finding and structure development results to the exploration of performative capacities of the system and most efficient structure by integrating environmental forces in to the design (Greg Lynn). In this essence designing becomes a morphogenetic process in which all of the design aspects maturate simultaneously similar to the organisms in nature. This can inspire the architecture design in a self-forming process by generating the form and the shape through a self-equilibrium of the forces affecting the system based on the characteristics of the systems and design criteria integrated into algorithms made by the designer; In this regard Greg Lynn’s theories published in his “Animate form” book are relevant and his explorations on the environment with forces can be good examples on the matter1. The mimicry of natural systems can self-forming systems through the computational morphogenesis design algorithms which can initialize “Genotypes” and develops through “Phenotypes” based on the requirement of systems similar to the genetic algorithms in natural systems2.

Lynn, G. (1999). Animate form. (1st ed.). New York, NY: Princton Architecture Press. 2 Weinstock, M. (2010). The architecture of emergence. (1st ed., p. 245). West Sussex, : John Wiley & Sons.

and

Particles

Figure 1 :Sagrada Familia Chain model

Source : http://www.flickr.com/photos/42311564@N00/3567463569/sizes/o/in/photostream/

4

“Competition entry that was the first architectural project in history to use animation software for form generation. A series of ‘forces’ representing traffic and pedestrian flow were modeled using “Wavefront” software. Points, or particles, rendered here as spheres were then modeled with velocity and their changing paths were an index of site ‘forces’.” Source : http://glform. com/buildings/port-authority-triple-bridge-gatewaycompetition

2 3

Figure 2. London metro station square by Micheal Pawlyn

1

1

Soap Bubbles is another example of equilibrium of environmental forces and a self-forming shape in nature

Source : http://parametricworld. tumblr.com/post/20392664542

Source : http://nhne-pulse.org/michael-pawlyn-usingnatures-genius-in-architecture/

Figures 3. Eden Project in Cornwell by Micheal Pawlyn which is a good example of self-forming shape as the result of equilibrium of forces of environment. so they achieved the highest span in their form by


Project : Higgs Bosons Particles

The initial idea for this project comes from the Higgs Bosons particles or “God Particles” going into the Boson field which changed the current-old perceptions of the creation of the world,nature and existence. It is similar to the electrons rounding the neutrons in atoms.

Figure 5. Higgs Bosons : ‘God Particle’ visualization from CERN website. Source www.cern.ch

The particles created have an acceleration toward the mouse pointer as the mouse pointer has a gravitational force on them and as the mouse moves the acceleration multiplies as it affects the particles. Figure 6. on the next page Higgs Bosons Oscillating Particles refers to Code 2.1

Particles going through the Boson’s Field and reversing their acceleration to go back tot he field.


Having acceleration toward the mouse pointer, the particles wont stop at the mouse pointer location and as so they pass the mouse pointer location; passing the mouse pointer location makes their acceleration negative or towards the mouse pointer location again and this is an infinite cycle as there are no decay has been implemented in the code. Mean they are moving toward the mouse pointer a color oscilltion has been implemented so the color for the particle changes through this cycle as a certain ammount adds to the colour value after each draw() cycle. ( look at the red part of the code). Code 2.1 : Oscillating Particles Class Tab : class Particle { PVector loc,vel,acc; Particle(float xp, float yp){ loc = new PVector(xp,yp); vel = new PVector(mouseX-pmouseX,mouseY-pmouseY); acc = new PVector(0,0); } void display(){ line(loc.x+(vel.x+acc.x),loc.y+(vel.y+acc.y),loc.x, loc.y ); } void update(){ acc.x = (mouseX-loc.x)/dist(mouseX,mouseY,loc.x,loc.y); acc.y = (mouseY-loc.y)/dist(mouseX,mouseY,loc.x,loc.y); vel = PVector.add(vel,acc); loc = PVector.add(loc,vel); if(vel.x>maxSpeed){ vel.x = maxSpeed; }else if(vel.x<-maxSpeed){ vel.x = -maxSpeed; }

} }

if(vel.y>maxSpeed){ vel.y = maxSpeed; }else if(vel.y<-maxSpeed){ vel.y = -maxSpeed; }

Main Tab : ArrayList particles = new ArrayList(); float maxSpeed = 100; float colour = random(1); void setup(){

}

size(800,600,P2D); colorMode(HSB,1);

void draw(){ background(0); stroke(colour,colour,0.8); for(int i = 0; i<particles.size(); i++){ Particle p = (Particle) particles.get(i); p.display(); p.update(); //if (mousePressed == true) p.deteriorate(); } colour += 0.001; colour %= 1; } void keyPressed(){ if (key == 32) { //spce for(int i = particles.size()-1;i>=0; i--){ Particle p = (Particle) particles.get(i); particles.remove(i); } } else if (key == 78 || key == 110) { //n or N for(int i = 0; i<1000; i++){ particles.add(new Particle(mouseX+random(10,10),mouseY+random(-10,10))); } } else if (key == 83 || key == 115) { // s or S saveFrame(“screenshot####.png”); } }

Figure 7. Particles going through the Higg’s bosons field A Variety of different combination 1. Particles Have just been created and some initial mouse movements made them accelerating toward the edges of the display but after that they try again to reach the mouse pointer which nominates bosons field. 2. After a while of moving particles around the particles start to scatter more as they are trying to reach the mouse pointer and based on their distance to the center of the radius of the orbit 3. The color of Particles changes through out time as the color number increases after each draw() cycle and the increase of the number should reach 1 unit so that it can be increased . 4. Trying to get to the mouse pointer which is impossible for them at first, they get organized after a period of time and they start getting closer and closer. 5. Finally they get to the pointer but because they don’t stop at the pointer they pass the pointer or Bosons field and they turn again as their acceleration value gets negative and they move back to the field and pass it again; so this cycle happens infinitely as there is no decay coded for the particles.


The aim for this project was to experience coding some particle systems integrated with the environment forces with them. The sketch reminds Jackson Pullock abstract expressionist paintings. //Particle Systems Sketch { //using controlP5 enabled us to experience different set of conditions on the sketch to see how they affect the sketch }

Top Left : Black & White settings Top Right : High repelling force Bottom Right : High gravity Bottom Left : Jackson Pollock Auguest Rythem at the Met Museum Retrieved from : http://slowmuse.wordpress.com/tag/jackson-pollock/

// particle system class class ParticleSystem { //properties PVector location; ArrayList<Particle> particles; int numParticles; //constructor ParticleSystem(int n,PVector l){ //assign the value of this particle systems location property location = l.get(); //assign how many particles we want numParticles = n; //initialise the particles arraylist particles = new ArrayList<Particle>(); //call the function that adds a particle\ //to our system at a specific location addParticle(n,location);

} //add a particle to the system at a specific location void addParticle(int num, PVector l){ PVector l_; for (int i=0; i<num; i++) { l_ = new PVector(random(-off,off),random(-off,off)); //add a new particle to the arraylist at the systems origin particles.add(new Particle(PVector.add(l,l_),this)); } } //update all the particles void run(){ //get access to the iterator property of the arraylist Iterator<Particle> it = particles.iterator(); //use a while loop to run the iterator while (it.hasNext()){ //pull the current particle out of the iterator Particle p = it.next(); //run the particle p.run(); //check to see if dead if(p.isDead())it.remove(); }

}

//function that returns the current particles in the system ArrayList<Particle> getParticles(){ return particles; }

Project : Particle Systems


Project : Interacting Particles The project is an example of agents interacting with the environment and beahving based on the conditions of the environment or Stigmergy behavior. It has been made up of set of agents which were interacting with their environment and also with the trace of other agents on the environment some how similar to the ants and termites behaviours. These particle agents initially read the environment through the pixel[] array in a defined radius and then based on the defined criteria of pixel brightness they find the best available pixel in their range of search ( which can be changed ) and if the value of the read brightness the acceleration PVector is set and the agents move to the ‘Best Pixel’. In regard to their movement the behavior of the agents change based on the ‘Search radius’, ‘maxspeed’ and the fade speed of the picture and the environment. A set of studies have been made on the agents in different initial values which are demonstrated in the following pages. The code can be seen in Code 2.2.


Code 2.2 : Interacting Particles import controlP5.*; // import controlP5 library ControlP5 controlP5; World world; ArrayList<Mover> pop = new ArrayList<Mover>(); //Mover global properties int numMovers = 40000; int searchRad = 2; float maxSpeed = 2; //world global properties float fadeSpeed = 0.5; void setup() { size(2000, 800); //smooth();

class Mover {

void draw() { background(255); world.drawImage(); world.fade(); //run the pop for (Mover m:pop) { m.run(); } } void keyPressed() { saveFrame(“screen_3_#####”); } void controlEvent(ControlEvent theEvent) { /* events triggered by controllers are automatically forwarded to the controlEvent method. by checking the name of a controller one can distinguish which of the controllers has been changed. */ /* check if the event is from a controller otherwise you’ll get an error when clicking other interface elements like Radiobutton that don’t support the controller() methods */

world = new World(“gradient.jpg”); // controlP5 separate window controlP5 = new ControlP5(this);

// for (int i = 0; i<numMovers/2;i++){ // Mover m = new Mover(new PVector(random(width),700), new PVector(random(maxSpeed,maxSpeed),random(-maxSpeed,maxSpeed)), random(2)); // pop.add(m); // } for (int i = 0; i<numMovers/2;i++){ Mover m = new Mover(new PVector(random(width),780), new PVector(random(maxSpeed,maxSpeed),random(-maxSpeed,maxSpeed)), random(2));

Mover(PVector _loc, PVector _vel, float _m) { mass = _m; //location = _loc location = _loc; velocity = _vel; //acceleration = new PVector(0, 0); acceleration = new PVector(0, 0); lastPos = _loc; c =0; } void run(){ update(); checkEdges(); checkWorld(); modWorld(); //display(); } //move the object void update() { velocity.add(acceleration); velocity.limit(maxSpeed); location.add(velocity); acceleration.mult(0); if (c % searchRad ==0) lastPos = new PVector(location.x,location.y,location.z); } //draw the object void display() { ellipse(location.x, location.y, 2, 2); } void applyForce(PVector force) { PVector f = PVector.div(force,mass); acceleration.add(f); } //check the edge of the screen void checkEdges() { if (location.x > width) { location.x = 0; } else if (location.x < 0) { location.x = width; }

if (theEvent.isController()) {

// parameters : name, minimum, maximum, default value (float), x, y, width, height controlP5.addSlider(“search Radius”, 0, 10, searchRad, 10, 10, 100, 10); controlP5.addSlider(“max Speed”, 1, 10, maxSpeed, 10, 30, 100, 10); controlP5.addSlider(“fade Speed”, .1, .9, fadeSpeed, 10, 50, 100, 10); //populate the sketch // for (int i = 0; i<10;i++) { // for (int j=0; j<10;j++) { // for (int k = 0; k< numMovers/100;k++) { // Mover m = new Mover(new PVector(width*i/10, height*j/10), new PVector(random(maxSpeed, maxSpeed), random(-maxSpeed, maxSpeed)), random(2)); // pop.add(m); // } // } // }

PVector location; PVector velocity; PVector acceleration; PVector lastPos; float mass; int c;

print(“control event from : “+theEvent.controller().name()); println(“, value : “+theEvent.controller().value()); if (theEvent.controller().name()==”search Radius”) { searchRad = int(theEvent.controller().value()); } if (theEvent.controller().name()==”max Speed”) { maxSpeed = int(theEvent.controller().value()); }

}

}

if (theEvent.controller().name()==”fade Speed”) { fadeSpeed = int(theEvent.controller().value()); }

}

if (location.y > height) { location.y = 0; } else if (location.y < 0) { location.y = height; }

//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 = 1; //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; // maths function that tries to get the current column in the loop x = constrain(x,0,width-1); // makes sure there will be a matching value in the array (e.g. nothing lessthan 0, nothing larger than the nuber of array values) int y = floor(location.y)+j; // same for rows y = constrain(y,0,height-1); //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); //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){ //reset all our variables that keep track of the best option float d = toV.mag(); toV.mult(1/d); toBest = toV; maxV = v;

}

}

}

class World { PImage loadedImage; // image to store float[][] vals; int w,h; World(String toImg){ loadedImage=loadImage(toImg); //load the source image loadedImage.resize(width,height); loadedImage.loadPixels(); //load the pixel array w = loadedImage.width; h = loadedImage.height; vals = new float[w][h]; // loadVals(); loadBlank(); } //initialising the values array using the brightness of pixels in an image void loadVals(){ //fill up the brightness values array for (int i = 0;i<w;i++){ for (int j = 0;j<h;j++){ //j*w is the current row we are looping through, //i is the current index of the pixel in the row //therefore we are just constructing our vals arraay //one pixel at a time vals[i][j]=brightness(loadedImage.pixels[(j*w)+i]); } } } //just sets all values to 0 (black) void loadBlank(){ for (int i = 0;i<w;i++){ for (int j = 0;j<h;j++){ vals[i][j]=0; } } } //get a value from the image float getAt(int x, int y){ return vals[x][y]; } //fade the image void fade(){ for (int i = 0;i<w;i++){ for (int j = 0;j<h;j++){ if(vals[i][j]>(1-fadeSpeed)) vals[i][j]=vals[i][j]-(1-fadeSpeed); } } }


He defined it as: “Stimulation of workers by the performance they have achieved.” Pierre-Paul Grassé The interacting behaviors of the agents is visualized through initialize at ion of agents from both sides of the screens with a medium search radius (3.0); in this respect we can see that when the agents from different sides of sketch reach each other in the initial stages they try to avoid each other and change the direction in first steps but after a while we can see the agents and the traces go diagonal search radius of 3.0 ; but if we lower the amount of search radius this linear behavior changes and goes some how roundish that can be seen in Fig.008.

Particles Start their search from both side of the screen Fig. 008.


Agents Start from middle :

Grid Agents:

A set of agents start from the middle line of the sketch and search for the best available point (pixel) around them so they set their acceleration toward the point. In the following case no environment has been given.

The sketch made without any given environment but the agents start spreading in the given environment from a set of point on a grid system. The grid pattern can be seen in the final image.


Project : Environment Modifires Flocking

and

Interacting Particles

The project is the development to the last project in order to build a 3-D landscape and observe the effect of interacting two sets of agents with it and experience and compare the results. The agent sets had different settings and they built different results of landscapes. The sketch works on the basis of two kind of agents interacting with the environment; however the environment is the result of transforming a picture to a 3d model based on the brightness of the pixels. In this essence the agents change the initialized Z values which were defined by the “transforming brightness to the line� function. The sketch values have been observed and studied in 3 levels of small : 1 Agent to see how it behaves 2. Intermediate level in which agents are observed in small group and 3 the wide scale in which all the agent of one type observed together to see their effect on the environment. On the other hand each part of the sketch observed individually and at the end all the elements working together were observed to study the overall effect of all the elements working together. The interaction result is similar to an opened section of ant colony in figure 3.

in landscape

Figure 1 Two sets of Agents : 1. Blue Agents or Eroding Agents :(in most studies they were assigned to move the landscape downward. They were developed based on the last sketch agents although they have modified to scatter around and follow each other sometimes. 2. Green Agents or Flocking Agents (in most studies they were assigned to move the landscape downward. This set of agents are autonomous agents which were assigned to show a flocking behavior through landscape and they encounter different conditions in some the get stock in landscape and then they get out.

Figure 3

Figure 2 Figure 1. A result of all elements working together for a period (10000 milliseconds). Figure 2. On the left base image for transformation to the 3d terrain.


First Observation : Eroding Agents

1

2

Plan views: Eroding Agents Showing them in small scale.

9

Close View (

5

or

Small scale observation

The interesting point that can be seen in this scale is that the agents commonly have a tendency to walk on a line ; the total duration of The study period of each picture captured was 20 seconds.

12

8

1

)

7

5

8

10

Perspective Views: Eroding Agents in Small scale study.

2


Intermeddiate View

Second Observation : Eroding Agents

1

2

Plan views: Eroding Agents Showing them in Intermediate scale. The tendency to walk on some specific lines can be seen in intermediate view but there are number of agents who don’t follow any specific lines.

12

9

5

8

1

8

5

The study period of each picture captured was 20 seconds.

9

11

Perspective Views: Eroding Agents in intermediate scale study.

2


Wide View

Third Observation : Eroding Agents

1

2

Plan views: Eroding Agents Showing them in ‘Wide’ scale. The tendency of the eroding agents can now be seen in the result so that it can be said there is a major tendency for the eroding agents to walk on a line and make some specific paths. The study period of each picture captured was 20 seconds.

12

9

5

8

1

5

8

9

11

Perspective Views: Eroding Agents in ‘Wide’ scale study.

2


Close View (

Fourth Observation : Flocking Agents

1

2

Plan views: Flocking Agents Showing them in small scale study.

or

Small scale observation

The only behavior can be seen in the small scale study of flocking agents is the normal autonomous agents flocking behavior . so it lowers parallel rows of lines in the study.

)

The study period of each picture captured was 5 seconds.

12

9

5

8

1

8

9

5

11

Perspective Views: Flocking Agents in small scale study.

2


Intermediate View

Fifth Observation : Flocking Agents

1

2

Plan views: Flocking Agents Showing them in intermediate scale study.

12

5

The study shows a roundish effect on the landscape from the agents so they effect the terrain in curve lines. The study period of each picture captured was 5 seconds.

9

8

1

8

9

5

11

Perspective Views: Flocking Agents in intermediate scale study.

2


Wide View

Sixth Observation : Flocking Agents

1

2

Plan views: Flocking Agents Showing them in Wide scale study. Observing the flocking agents in a wider scale shows a semicurvy behavior although we can’t say it is totally curvy or it make a special pattern; it can be seen as wind affecting sands. The study period of each picture captured was 5 seconds.

12

9

5

8

1

8

9

5

11

Perspective Views: Flocking Agents in Wide scale study.

2


Flocking Agents Lift

Seventh Observation : Collective Agents

1

2

Plan views: Collective Agents; Showing them in Wide scale study.

12

5

up the terrain and eroding lower it.

Observing shows after a period of time as the flocking agents lift up the terrain some parts get darker with lower brightnesses. The study period of each picture captured was 5 seconds.

9

8

1

8

9

5

11

Perspective Views: Collective Agents study.

2


Flocking Agents

Eighth Observation : Collective Agents

1

2

Plan views: Collective Agents; Showing them in Wide scale study.

and eroding agents lower down the terrain.

As both set of agents lower the terrain the lines become brighter and more visible and after a versatile heights in the terrain, it walks toward a flat state again.

12

9

5

8

1

8

5

The study period of each picture captured was 5 seconds.

9

11

Perspective Views: Collective Agents study.

2


Flocking Agents

Ninth Observation : Collective Agents +

1

2

Plan views: Collective Agents; Showing them in Wide scale study.

gradient image as the given terrain

and eroding agents lower down the terrain.

As another study we tested a gradient picture as the base picture for the terrain transformation; the result is interesting by getting centers of activities for the eroding agents in brighter areas. the image can be seen below:

12

9

5

8

1

8

9

5

11

Perspective Views: Collective Agents study.

2


Flocking Agents

Ninth Observation : Collective Agents + Different

1

2

Plan views: Collective Agents; Showing them in Wide scale study.

image for transformation

and eroding agents lower down the terrain.

Different image with bubbly like pattern used in the landscape tr a n s f o r mation function. It came up with a set of circle patterns in different height the used image can be seen below:

12

9

5

8

1

8

9

5

11

Perspective Views: Collective Agents study.

2



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.