Uploaded on

Nicolas Anderson is a licensed Architect in the State of Illinois. He received his Bachelor of Architecture degree from the Illinois Institute of Technology and his Masters in Architecture from …

Nicolas Anderson is a licensed Architect in the State of Illinois. He received his Bachelor of Architecture degree from the Illinois Institute of Technology and his Masters in Architecture from Harvard Graduate School of Design receiving the Digital Design Prize upon graduation. He is an Associate Principal with Murphy/Jahn and also the Creative Director of Latent Design (http://www.latentdesign.net/).

More in: Design , Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Nicolas Anderson is a licensed Architect in the State of Illinois. He received his Bachelor of Architecture degree from the Illinois Institute of Technology and his Masters in Architecture from Harvard Graduate School of Design receiving the Digital Design Prize upon graduation. He is an Associate Principal with Murphy/Jahn and also the Creative Director of Latent Design.
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
260
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 1 rules and numbers define the world around us both natural and manmade 2 design systems based on rules and experiment with the outcome rather than design a static single solution. 3 populate these systems with data from various sources a user needs | parametric office | small scale b site and environmental criteria | parasitic office addition | medium scale c randomly selected variables | algorithmic high-rises | large scale
  • 2. rethinking the office cubical parametrically defined modules the project was conceptualized as an exploration of the capabilities of catia as not only a design development tool but as a methodology of design. the goal was to create a single robust model with a high level of flexibility built into it. the delivery strategy would be to build interactive website where an office manager could input relationship data which would relate to the level of interaction each member of a team would need within a work setting. these relationships would then be translated into simple angular and length values which would drive the geometry of the requested workstation module. using one model and a design table (an excel spreadsheet containing sets of values which parametrically update instances of the model) the objective was to allow for wide variety of configurations for each set of these relationships. the lighting system for the office would embody a parametric relationship to the configuration of the workstations thus creating a visual register at the ceiling plane of the working relationships of the office. by combining multiple team workstations with differing relationships into an interlocking system, a language would begin to emerge describing the office environment.
  • 3. definition what should be parametric?
  • 4. sketches set out initial geometries for the components
  • 5. relationships geometric dimensions can be driven in relation to other pieces
  • 6. similarities the lights were built with similar characteristics to the tables
  • 7. tables modifying table values rebuilds a new model
  • 8. families built from the same logical framework
  • 9. ceiling plane interlocking lighting modules reflects team relationships below
  • 10.  
  • 11.  
  • 12. computer housing support arm work surface central support light leg work surface variable partition power / internet light bottom view top view
  • 13. parasitic building algorithmic architecture the purpose of the algorithmic architecture course was to develop algorithms and computational methods that would encapsulate the processes that lead to the generation of meaningful architectural form. for this final project we were to develop an internal revenue service building that would act as a parasite to the host building (a turn of the century brick warehouse) in downtown boston. using maya embedded language (mel), the assignment asked to write code using techniques explored in the class which would create geometry for an architectural solution.
  • 14. 1 - parasitism is described as a relationship in which a parasite temporarily or permanently exploits the energy of a host . (space, structure, street exposure, sunlight ) 2 - parasites live on the outer surface of a host or inside its body in respiratory organs, digestive organs, venous systems, as well as other organs and tissues. (mutated skin layers) 3 - frequently a host provides a parasite not only with food, but also with enzymes and oxygen, and offers favorable temperature conditions. 4 - but a host is certainly not inactive against a parasite , and it hinders the development and population growth of parasites with different defense echanisms , such as the cleaning of skin , peristaltic contraction of the digestive aparatus, and the development of antibodies. (random erosion of parasitic surfaces) 5 - parasites respond to this defense by anchoring themselves with hooks and suckers onto skin, or digestive mucous membrane, and by developing protective devices and substances which lessen defensive capabilities of their host. (floor plates) 6 - there is “tension” between a host and its parasite , since the host endeavours to get rid of the foreign body , while the parasite employs new ways to maintain the connection with the host. (erosion of host) Cuscuta Strangler Tree parasitic building algorithmic architecture
  • 15. the initial investigation defined a set of assets that the host building embodied that a parasite would desire to exploit. given the existing site, building code and height limitations, these assets were defined as the existing structure, space to grow, street exposure from the heavily traveled intersection, and access to natural light from the southern and eastern facades. the algorithm begins by rationalizing the host building into a regular ten foot module corresponding to the floor to floor height. the parasite begins by cloning the host building and then reading its available space to grow. each face of the parasite is then repositioned out to the corresponding available value minus a random value. once the parasite has grown, a morphing algorithm creates a series of morphed iterations between the host and parasite. these children form the layers of new offices. floor plates are created at every other existing floor of the host building reaching outwards to the new skin thus anchoring the parasite to its host. at this point the host building fights back by a code that selects a certain number of random faces of the host, parasite, and children and deletes them. since this action not only reconnects the host to these assets exploited by the parasite, but also provides a mutually shared addition of floor space the end result is more of a symbiotic association for the host and parasite rather than strictly a parasitic relationship.
  • 16. 1 - defining the site boundaries the parasitic IRS building attaches to the host on the available east and south sides as well as on the roof to the allowable limits of the building code. in doing so the parasite creates an envelope which blocks the host’s access to sunlight and visibility from the major intersection at the corner of Lincoln street and Essex street. 2 - measuring available space in order for the algorithm to be able to read the available space which it has to grow, a code must be written that calculates each measuring line and returns a value which can be used later in the code.
  • 17. 3 - subdividing the surface the parasite initializes itself by cloning the host building and subdividing its surface into a 10ft module which corresponds to the existing host. The faces of this subdivision will then grow outwards reading data from the measuring lines and then subtracting a random value for each face. this random variable can be modified for a variety of resulting geometries. 4 - filling the site the faces of the subdivided parasite geometry finally grow outward as indicated by the diagram below. Once all of the faces of the parasite on the east, south and roof of the parasite have been relocated to mature development, then a morphing operation is performed in the code which creates shell layers children) which subdivide the enclosed volume into office layers. floor plates are created at every other existing floor of the host building reaching outwards to the new skin thus anchoring the parasite to its host.
  • 18.  
  • 19.  
  • 20.  
  • 21.  
  • 22.  
  • 23.  
  • 24.  
  • 25.  
  • 26.  
  • 27.  
  • 28.  
  • 29.  
  • 30. high-rise form finding experiment
  • 31. The starting point for this exercise was the diagonally braced tubular structure for a high rise scheme that i began working on as an undergraduate at IIT. I was interested in developing a robust code which would allow for many of the parameters of the original scheme to be variable within a certain range of limitations in order to automate the manual method of traditional design in a digital environment. During the scripting process, I began to investigate the possibilities of a marriage between two slightly shifted structures. The most suggestive moment of the project occurred when I decided to see what forms the computer would arrive at if I allowed it to randomly select the variables within a confined range which I established. The result was that a series of families began to emerge, leading one to question role of the designer in this new field of exploration.
  • 32. //Global Proc to set Colors!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! global proc setColor(string $object, string $type, float $red, float $green, float $blue, float $transparency){ $color = eval("createRenderNodeCB -asShader "surfaceShader" " + $type +""""); //set the color eval("setAttr " + $color + ".color -type double3 "+ $red + " " + $green + " " + $blue); //set the transparency eval("setAttr " + $color + ".transparency -type double3 "+ $transparency + " " + $transparency + " " + $transparency); //assign the color eval("sets -e -forceElement " + $color + "SG "+ $object); };
  • 33. //Spiral Buidling !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //Values !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! int $numFloors = 50; // Number of Floors int $numSides = rand(3,24); // Number of Sides Per Floor int $rotAngle = rand(1,30); // Angle of Rotation int $scaleShift = rand(1,3); // Shifting Phase of Sin or Cos int $floorMf = rand(25,30); // Scale Multiplication Factor int $moveZ = 10; // Floor to Floor Height float $colRad = .5; // Column Radius float $colRad2 = .35; // Tertiary Column Radius float $platThick = .5; // Thickness of Floor Plate float $xscale = rand(20,30); // Disproportionate Scaling Value //Print Values !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! print ("int $numFloors = " + $numFloors + ";" + " "); print ("int $numSides = " + $numSides + ";" + " "); print ("int $rotAngle = " + $rotAngle + ";" + " "); print ("int $scaleShift = " + $scaleShift + ";" + " "); print ("int $floorMf = " + $floorMf + ";" + " "); print ("int $moveZ = " + $moveZ + ";" + " "); print ("float $colRad = " + $colRad + ";" + " "); print ("float $colRad2 = " + $colRad2 + ";" + " "); print ("float $platThick = " + $platThick + ";" + " "); print ("float $xscale = " + $xscale + ";" + " ");
  • 34. string $towName = &quot;A&quot;; //Sets Counter for ($numTow=2; $numTow<4; $numTow++){ //Create and Group 1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string $g1 = &quot;&quot;; for($i=1; $i<$numFloors; $i++){ $name = (&quot;floor&quot; + $i + $towName); circle -c 0 0 0 -nr 0 0 1 -sw 360 -r 1 -d 1 -s $numSides -name $name; float $scale = $floorMf * (sin(deg_to_rad($i*$scaleShift*$numTow))); if ($scale <= 0) { $scale = $scale - 10; } else { $scale = $scale + 20; } move ($scale/3) 0 ($moveZ * ($i-1)); rotate 0 0 ($i*$rotAngle); scale -ocp $xscale $scale $scale; $g1 = $g1 + &quot; floor&quot; + $i + $towName; print ($scale + &quot; &quot;); } string $floorGroup = &quot;FloorGroup&quot; + $towName; eval(&quot;group -name &quot; + $floorGroup + $g1); select $floorGroup; string $loftName = &quot;LoftOne&quot; + $towName; loft -ch 1 -u 1 -c 0 -ar 1 -d 1 -ss 2 -rn 0 -po 0 -rsn true -name $loftName; setColor($loftName, &quot;blinn&quot;, (rand(1.)), (rand(1.)), (rand(1.)),.5);
  • 35. //Create and Group Reverse!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string $g1R = &quot;&quot;; for($i=1; $i<$numFloors; $i++){ $name = (&quot;floorR&quot; + $i + $towName); circle -c 0 0 0 -nr 0 0 1 -sw 360 -r 1 -d 1 -s $numSides -name $name; float $scale = $floorMf * (sin(deg_to_rad($i*$scaleShift*$numTow))); if ($scale <= 0) { $scale = $scale - 10; } else { $scale = $scale + 20; } move ($scale/3) 0 ($moveZ * ($i-1)); rotate 0 0 ($i*(-$rotAngle)); scale -ocp $scale $xscale $scale; $g1R = $g1R + &quot; floorR&quot; + $i + $towName; print ($scale + &quot; &quot;); } string $floorGroupR = &quot;FloorGroupR&quot; + $towName; eval(&quot;group -name &quot; + $floorGroupR + $g1R); select $floorGroupR; string $loftName = &quot;LoftOneR&quot; + $towName; loft -ch 1 -u 1 -c 0 -ar 1 -d 1 -ss 2 -rn 0 -po 0 -rsn true -name $loftName; hide; select -cl;
  • 36. //###################################################################### //Create Columns One !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //Create Columns One !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string $gC1 = &quot;&quot;; for($i=0; $i<$numSides; $i++){ string $column = &quot;column&quot; + $i + $towName; curve -d 1 -p 0 0 0 -name $column; for($j=1; $j<$numFloors; $j++){ string $x = &quot;pointPosition &quot; + &quot;floor&quot; + $j + $towName + &quot;.cv[&quot; + $i + &quot;]&quot;; float $p[] = eval($x); curve -a -p ($p[0]) ($p[1]) ($p[2]) $column; } $gC1 = $gC1 + &quot; column&quot; + $i + $towName; } string $columnName = &quot;ColumnGroup&quot; + $towName; eval(&quot;group -name &quot; + $columnName + $gC1); //Delete Columns One !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! for($i=0; $i<$numSides; $i++){ string $column = &quot;column&quot; + $i + $towName + &quot;.cv[0]&quot;; select $column; delete; select -cl; }
  • 37. //Create Columns OneR !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //Create Columns OneR !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string $gC1R = &quot;&quot;; for($i=0; $i<$numSides; $i++){ string $columnR = &quot;columnR&quot; + $i + $towName; curve -d 1 -p 0 0 0 -name $columnR; for($j=1; $j<$numFloors; $j++){ string $x = &quot;pointPosition &quot; + &quot;floorR&quot; + $j + $towName + &quot;.cv[&quot; + $i + &quot;]&quot;; float $p[] = eval($x); curve -a -p ($p[0]) ($p[1]) ($p[2]) $columnR; } $gC1R = $gC1R + &quot; columnR&quot; + $i + $towName; } string $columnNameR = &quot;ColumnGroupR&quot; + $towName; eval(&quot;group -name &quot; + $columnNameR + $gC1R); //Delete Columns OneR !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! for($i=0; $i<$numSides; $i++){ string $columnR = &quot;columnR&quot; + $i + $towName + &quot;.cv[0]&quot;; select $columnR; delete; select -cl; }
  • 38. //###################################################################### //Create and Group Circles!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string $gCir = &quot;&quot;; for($i=0; $i<$numSides; $i++){ string $circle = &quot;circle&quot; + $i + $towName; circle -d 3 -r $colRad -name $circle; for($j=1; $j<$numFloors; $j++){ float $p[] = eval(&quot;pointPosition floor1&quot; + $towName + &quot;.cv[&quot; + $i + &quot;]&quot;); select $circle; move ($p[0]) ($p[1]) ($p[2]); } $gCir = $gCir + &quot; circle&quot; + $i + $towName; } string $circGroup = &quot;circGroup&quot; + $towName; eval(&quot;group -name &quot; + $circGroup + $gCir);
  • 39. //###################################################################### //Create and Group Tubes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string $t1 = &quot;&quot;; for($i=0; $i<$numSides; $i++){ string $column = &quot;column&quot; + $i + $towName; string $circle = &quot;circle&quot; + $i + $towName; select $circle $column; $name = &quot;tube&quot; + $i + $towName; extrude -ch true -rn false -po 0 -et 2 -ucp 1 -fpt 1 -upn 0 -rotation 0 -scale 1 -rsp 1 -name $name; select -cl; $t1 = $t1 + &quot; tube&quot; + $i + $towName; } string $tubeGroup = &quot;tubeGroup&quot; + $towName; eval(&quot;group -name &quot; + $tubeGroup + $t1);
  • 40. //Extrude and Group Floor Plates !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string $plates = &quot;&quot;; for($i=1; $i<$numFloors; $i++){ string $floor = &quot;floor&quot; + $i + $towName; select $floor; $name = &quot;plate&quot; + $i + $towName; planarSrf -ch 1 -d 1 -ko 0 -tol 0.01 -rn 0 -po 1 -name $name; polyExtrudeFacet -tz $platThick; select $name; move -r 0 0 ($platThick/(-2)); select -cl; $plates = $plates + &quot; plate&quot; + $i + $towName; } string $plateGroup = &quot;PlateGroup&quot; + $towName; eval(&quot;group -name &quot; + $plateGroup + $plates);
  • 41. //Create Horizontal Tubes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! circle -c 0 0 0 -nr 0 0 1 -sw 360 -r ($colRad2*.8) -d 1 -s 24 -name &quot;TubeLoft&quot;; string $horTubes = &quot;&quot;; for($i=1; $i<$numFloors; $i++){ string $floor = &quot;floorR&quot; + $i + $towName; select TubeLoft $floor; $name = &quot;horTubes&quot; + $i + $towName; extrude -ch true -rn false -po 0 -et 2 -ucp 1 -fpt 1 -upn 1 -rotation 0 -scale 1 -rsp 1 -name $name; select -cl; $horTubes = $horTubes + &quot; horTubes&quot; + $i + $towName; } string $horTubesGroup = &quot;HorTubesGroup&quot; + $towName; eval(&quot;group -name &quot; + $horTubesGroup + $horTubes); $towName = $towName + &quot;A&quot;; }
  • 42. grasshopper for rhino modules of code can be interchanged for plug and play
  • 43.  
  • 44. int $numFloors = 50; int $numSides = 22; int $rotAngle = 1; int $scaleShift = 1; int $floorMf = 25; int $moveZ = 10; float $colRad = 0.5; float $colRad2 = 0.35; float $platThick = 0.5; float $xscale28.6715236;
  • 45. int $numFloors = 50; int $numSides = 19; int $rotAngle = 1; int $scaleShift = 2; int $floorMf = 25; int $moveZ = 10; float $colRad = 0.5; float $colRad2 = 0.35; float $platThick = 0.5; float $xscale = 22.77299504;
  • 46. int $numFloors = 50; int $numSides = 6; int $rotAngle = 6; int $scaleShift = 1; int $floorMf = 26; int $moveZ = 10; float $colRad = 0.5; float $colRad2 = 0.35; float $platThick = 0.5; float $xscale29.47656126; float $platThick = 0.5; float $xscale24.19073302;
  • 47. int $numFloors = 50; int $numSides = 17; int $rotAngle = 18; int $scaleShift = 1; int $floorMf = 25; int $moveZ = 10; float $colRad = 0.5; float $colRad2 = 0.35; float $platThick = 0.5; float $xscale = 20.08793908;
  • 48. is the designers role in the manipulation of the language of the code? is the designers authorship still embodied within the initial conceptualization? is the final act of design the selection of the form is correct in the designers eyes? are “good accidents” which occur through algorithmic design credited to the designer and his intuition, or just random occurrences left up to post rational interpretations of the designer? (who will know, or will it matter if the code is not made public). this was only a short investigation, but i feel that there are potentials that would allow for a more feasible scheme with ranges of parameters set by structural optimizations. this would ultimately lead to a form in which one or both of the children would again become a diagonally braced structure. the advantage of approaching such a problem through algorithmic methods rather than tradition geometrical assembly in a software package using predefined graphic user interface (gui) methods are obvious. speed of visualizing solutions and slight deviations of solutions is one advantage of this method, however the combination of experimentation a “good accidents” will be intrinsically more interesting to architectural exploration in the future for the architect. int $numFloors = 50; int $numSides = 6; int $rotAngle = 6; int $scaleShift = 1; int $floorMf = 26; int $moveZ = 10; float $colRad = 0.5; float $colRad2 = 0.35; float $platThick = 0.5; float $xscale29.47656126; float $platThick = 0.5; float $xscale24.19073302; ?