Grasshopper Spatial Practices fall 2017 | yunni dan
table of content
W01_psychic city W02_city of amenities W03_paving the public space W04_circus city i: twisting towers W05_circus city ii: twisting towers W06_surface operations W07_waffle for breakfast W08_une petit mort W09_Fly, weaverbird! W10_two meshes
2
1 5 11 29 35 45 54 62 69 75
W01_psychic city
Assignment 1 due Tuesday August 29th _________________________ instructions 1 Go to OpenStreetMap on a browser Choose a city for a dynamic walk Search for it on OSM, then zoom in so you can see major features 2 Create a screen capture of the city, then set it on your top viewport via PictureFrame 3 In Rhino, create a polyline curve following streets and paths through the city 4 Select a set of amenities that are close to the curve. Create points at these locations in Rhino. Be sure to select amenities that can be categorized, such as eateries, churches, public buildings, etc. 5 Using “Evaluate Curve” and a “Number Slider”, create a geometrical object that follows your curve as you move the slider. 6 Find the distance between your Geometrical Object (GO) and each amenity. Using the “Smaller Than” component, select only those amenities that are within a given distance. 7 Define three or more categories and create a distinct color and geometric primitive for each category of amenity 8 Depict the distance between your GO and the nearby amenities using a categorically colored dashed line. 9 Size the amenities based on their distance to the GO.
1
W01_screenshots
2
W01_key components
evaluate curve point list list item dispatch dash pattern gradient custom preview
3
W01_definition
01_PREPARATION: manually input curve(path) and points(amenities), use evaluatecurve(person) to define distance start 02_DISPATCH AMENITIES: call out points with listitem representing different amenities and assign different geometries; call out the amenities within a certain distance with dispatch
01
03 02
4
03_DISPLAY: connect evaluating point with the visible amenities with a dashline using dashpattern; use distance from evaluating point to amenity to extrude base geometry (the further the taller); use gradient to plot out the distance change between evaluating point and target building (the further the darker)
W02_city of amenities
Assignment 2 due Tuesday September 5th _________________________ instructions 1 Download Elk2 from Food4Rhino, and -exactly- follow the directions to install it in your Grasshopper Special Folders/Components Folder. 2 Export an OSM file from the city of your choice by “manually selecting a different area”. 2 Place this file in the same folder as your Assignment 2 work. 3 Bring this into Grasshopper using a “File Path” component. 4 Find specific geometries and data using the Elk Loation and Generic components. 5 Using strategies from Assignment 1 as well as the ability to define particular geometric features and their categories, create and produce screen captures from two elegant mappings of your city. These should combine background geometry with notable spatial discoveries. You may use any of the techniques in the example definitions (or invent your own in consultation with LP, LM, or MT).
5
W02_screenshots
6
7
W02_key components
file path location (elk) osm data (elk) prune point groups convex hull discontinuity remap point on curve bounds
8
W02_definition
01_DEFINE PATH+INPUT PARAMETERS: using filepath, insert an .osm file to GH; then with location(elk) and osmdata(elk), parse out the desired data set/subset 02_ALTERNATIVE WAY TO DEFINE PATH: by manually selecting multiple roads and using pointoncurve, creating multiple evaluating points on different curves
03_DISPATCHING AND PARAMETRICALLY ADJUSTING DISPLAY: select buildings within a certain distance, then color them corresponding to their distance with the evaluating points; with bounds and remapnumbers, replot the distances in a range between 0 and 1. This helps getting a more precise gradient map.
01 02 03
9
W02_definition
01_CREATE POINT GROUPS WITH AT LEAST x POINTS: pointgroups function by setting a threshold distance; after grouping points within a certain distance, one can dispatch the groups by the number of points in it to make sure that no group contains less than 3 points
01 02
10
02_CREATING BOUNDARY AROUND POINT GROUPS: after getting the groups sorted out, one could use convexhull to create a boundary around the points, then with discontinuity then interpolate, breaking down the rough polyline and redraw the boundary with a softer curve
W03_paving the public space
1 Select a site in your city. The site should have one or more buildings on it, but about 3/4 of it should be open for construction. (This construction will be next week's project.) The openness can be created by carefully selecting existing buildings for fictive removal. 2 In Rhino, using polyines and/or interpolated curves, define the perimeter of your site. 3 Using example definitions 03a, 03b, 03c, and the Generative Landscape references definitions, create 5 paving variations for your site. Note that your site will be quite large. Therefore, just for the sake of visibility, you might make your pavers much large than those normally used in such a site. Please include paving patterns definied by attraction (points and curves) as well as those defined by culling. 4 Create elegant screen captures of your paving patterns using appropriate color hues and values
11
W03.1_key components
random cull pattern random split offset construct plane flip curve isotrim divide domain2 closest points construct domain
12
W03.1_screenshots
This workflow splits an isotrimmed plane surface by a factor between 0 and 1 and then color the tiles generated with a gradient based on the distance between each of them and a series of random points thrown into the site. The 4 parametric controllers are the seed and split values at RandomSplit as well as count and seed at Pop2D.
13
W03.1_definition
01
02
03
04
05
01_LAYING OUT A RECTANGULAR GRID WITH ISOTRIM: The goal and limits of this workflow is both to create a grid of surfaces within a rigorous rectangular boundary. In this example Isotrim works with DivideDomain2 through which one decides the uv factors of the trimming grid
list of points organized by their relationship with a closed curve: 2 (inside), 1 (coincidental) and 0 (outside)
02_RANDOMSPLIT: RandomSplit takes a list an divides it by a percentage that’s manually set. Just like all other components in the Random family it contains a seed factor that generates different patterns
05_PLOTTING THE DISTANCES INTO A GRADIENT: We’ve talked about this before...Remapping + ConstructDomain
03_CULL PATTERN: CullPattern deletes items based on a pattern (>, <, =, true/false). In this example it is used together with PointsInCurve which generates a numeric
14
04_CLOSEST PTS: Send in various seeds when you’re bored of using just one and getting one radial gradient pattern!
W03.2_key components
deconstruct series
W03.2_key workflows
15
W03.2_screen shots
This work flow introduces another way of generating a field of rectangles by points, making it easier to control their position. It also works with flattening / grafting a data list to generate different patterns.
Definition by Generative Landscapes. Link: https://generativelandscapes.wordpress.com/index-of-examples/
16
W03.2_definition
01_LAYING OUT A RECTANGULAR GRID BY DECONSTRUCTING A POINT: Make a point, the stripping it down to its x, y and z coordinates, then with Series generate a series of points based on one of the coordinates, then using each point as a base plane, generate a series of rectangles.
02_RANDOMIZING THE MOVES: Since the rectangles in this definition were generated by deconstructing a point, it is possible to start manipulating those rectangles since the beginning. However, what we did here was to introduce a list of randomized vectors within a certain domain for each one of the rectangles to move along.
01
02
03
04
17
W03.2_alternative results: pattern
01_UNFLATTENED RECTANGLES: As shown in the sample tiling, the data structure coming from x/y coordinates from the original point has been remained through the moving process. By not flattening the data tree essentially what was moved was an entire branch instead of individual rectangles.
01_FLATTENED RECTANGLES: By flattening the data tree of the rectangles, weâ&#x20AC;&#x2122;ve broken down the data structure, releasing each element from their data branch (or queue) and letting them each pick their own vector to move along.
18
W03.2_alternative results: movement 01_UNFLATTENED SERIES: When both series for x and y arenâ&#x20AC;&#x2122;t flattened, both series would generate one result for x/y of each branch (col/row).
02_FLATTENED X: When series for the x coordinate of vector is flattened it generated a host of x coordinates for all rectangles whereas the choices of movement in y direction stays limited.
03_FLATTENED Y: The reverse of 02, this time the rectangles had more freedom in y direction.
04_BOTH GRAFTED: Since thereâ&#x20AC;&#x2122;s nothing to set another level of hierarchy for this data tree, all results remain the same as when nothing is flattened/grafted.
19
W03.3_key components
minimum
W03.2_key workflows
20
W03.3_screen shots
Unpaved and paved.
Definition by Generative Landscapes. Link: https://generativelandscapes.wordpress.com/index-of-examples/
21
W03.3_definition
01_SCALING CIRCULAR PAVER SIZE BY DISTANCE TO TREES: This definition has two factors for scaling: the maximum size of pavers (so that they stay nicely in a grid) and the distance to trees (so that they “fade” towards points generated by Populate2D). The key component here is Minimum which does 2 things: 1. If the distance to the closest tree divided by a certain
22
number is smaller than the “regular” radius for a paver then use the former as the radius for this paver; and 2. If the distance to the closest tree divided by that number is bigger than the “regular” paver radius, then use the latter as the radius for the paver.
W03.4_key components
curve closest point sift pattern combine data
W03.4_key workflow
23
W03.4_screen shots
This definition uses a the distance from individual pavers to a defined path to scale individual bricks, creating â&#x20AC;&#x153;pathsâ&#x20AC;? that fade into less paved softscapes.
Definition by Generative Landscapes. Link: https://generativelandscapes.wordpress.com/index-of-examples/
24
W03.4_definition
01_CREATING A STAGGERING BRICK PATTERN: To create this pattern, once the Isotrim and Cull processes are done, the SiftPattern component is introduced to sort all rectangular surfaces into odd and even rows by using a 0/1 pattern (in multiple lines format). The pavers in even number rows are then shifted to create the pattern, then the
two lists are integrated back together with CombineData. Note that CombineData is a binary component that works with only two sources. Merge is another component that put together multiple lists and could work with more sources.
01 02
25
W03.5_key components
voronoi rectangular
26
W03.5_screen shots
This definition shifts around the cells of an originally rigorous rectangular point matrix and use them to create a voronoi field which is colored according to the individual paverâ&#x20AC;&#x2122;s distance to trees.
Definition by Generative Landscapes. Link: https://generativelandscapes.wordpress.com/index-of-examples/
27
W03.5_definition
01_CREATING A VORONOI NETWORK: There are many ways to generate a random cloud of points and this is probably one of the most rigorous and dogmatic one Iâ&#x20AC;&#x2122;ve used so far. Instead of using any shortcut, it takes the centroids of a regular rectangular grid cells and
28
use two random patterns to move around first their x coordinate and then y. Eventually using the result of this series of operations as the base points of the Voronoi.
W04_circus city i: twisting towers
Assignment 4 due 5 PM Tuesday September 19th _________________________ Instructions 1 Using Grasshopper or GH - Rhino workflow, subdivide your building site from assignment 3 into separate plots for building and other programs (such as paving and trees). You may use any of the various example definitions to accomplish this. 2 Create trees (represented by cylinders) and include paving patterns using last week's example definitions. 3 Create one or two towers on your building plots. These may be constructed using the tween and rotate example definition. Make sure that your towers respond to some particular element or quality of your site. 4 Make sure to use Swatch or Material colors for your Rhino screen capture.
29
W04_key components
network surface loft tween curve rotate radians polygon center range
W04_key workflow
30
W04_screen shots
31
W04_definition
01_DEFINING THE SITE: With a series of parallel curves in both u&v directions, define a surface with NetworkSurface that could then be subdivided with DivideDomain2 and Isotrim. This way the initial surfaces (pads) don’t have to be orthogonal
01 02
32
02_CALLING OUT AND COMBINING PADS FOR DIFFERENT SPATIAL USE: It is only week 6 now and I already know much better ways to do this thing. But for the sake of tracing the growth here’s the clunkiest way in history to combine pads!
01_TWISTING TOWER I: The first twisting building is achieved through the following workflow: getting footprint pads - rotating the building for a Series of times - Scaling the footprint for a Series of times - moving the footprint a Series of times - Loft.
02_TWISTING TOWER II: The second twisting building is created in the following workflow: getting footprint - moving it once to create roof and rotating it - with TweenCurve getting all the floor plates in between (number of levels defined by building height divided by floor height) - Loft
01 02
33
01_BALLOONS: To represent a children’s playground I made all these colorful spheres (balloons). There’s of course now already easier way to do that too. But basically it’s a series of Populate2D points elevated to Random heights and becoming balls with different radii
01 02
34
02_TENTS: A market! The fun thing that happened here was that resulting pattern of these tents varied a lot with the change of Range’s step input.
W05_circus city ii: twisting towers
Assignment 5 due 5 PM Tuesday September 26th _________________________ Instructions 1 Design facades for your towers. Using the example definitions for reference, divide the surfaces of your towers into SubSurfaces. You may create these divisions from separate edges of your towers, or you may divide the entire skin of each tower all at once. 2 Discover a strategy for patterning your facade according to one or more attractors. This may be done by scaling, extruding, rotating, etc. The attraction may be based on proximity, angle, etc. 3 Please design two facade versions. 4 Make sure to use Swatch or Material colors for your Rhino screen capture. You may also download the Human plug-in and use the CreateAttributes and BakeGeometry components to move your Grasshopper colors into Rhino.
35
W04_key components
36
W04_screen shots
37
38
W04_definition
39
40
41
42
43
44
W06_surface operations
Assignment 6 due 5 PM Tuesday October 19th _________________________ Instructions 1) Create three versions of image sample surfaces using different methods. Record these through Rhino screen captures only. Please note the usefulness of Generative Landscapes for topographic use of the GH Image Sampler https://generativelandscapes.wordpress.com/2014/09/12/surfaces-from-image-samplerexample-4-6/ 2 Using one of your towers from Project 4 or 5, create a skin based on Image Sample methodology. In constructing these, take careful note of the Image Sample Domain under Settings (right click on the Image Sampler Component to active Settings). Please test two or three different facades before making a choice of the facade to present. Include two different screen capture views as well as a GH screen capture. Be sure to use colors, contours, etc. to represent these images to best advantage. 3 extra credit: laser-cut or rout (if you are certified to use the router) a CNC version of a image sampler facade surface.
45
W06_key components
plane surface image sampler expression surface from points project project length
46
W06_explore
47
ImageSampler - Expression PlaneSrf - DivideSrf (pt) - Cylinder (height = Expression)
48
ImageSampler - Expression - Move (pt) - SrfFromPt DivideSrf - Pline - ProjectToSurface - DivideCrv - Project - Line2Pt - Loft
49
Contours by (in order) Brightness Hue Saturation Source image: A Sunday on La Grande Jatte, Georges Seuratâ&#x20AC;&#x2122;s
50
LoopStart (Anemone)
Circles - DivideCurve - Random x Move Pts LoopEnd (Anemone) - NurbCrv - UnitZ - Move
51
Populate2D - Voronoi - Area - DelauneyFrame Discontinuity - SortRepeatedPoints (Lunchbox) SurfaceFromPoints - Contour
52
W06_exploration: definitions
53
W07_waffle for breakfast
Assignment 7 due 5 PM Tuesday October 17th _________________________ Instructions Create a waffle model of topography. This may be associated with the site you have used for GHSP (this class) or with a studio project. Unless your studio exploration suggests otherwise, the site for the topography should be at a neighborhood scale. Make an intervention in your source topography using one of the methods suggested in class. Use a photograph of your model for your portfolio, and bring your topo model to class. (In case of an inability to obtain time on the laser-cutter, ask for permission to extend the deadline until October 24th.) The topographic source can be: IMG files (disk image) for the continental US or EarthExplorer GeoTiff files You may also use contour geometry from GIS (constructed in GH as a surface using Divide Length and Delaunay mesh) provided that you compare this with one of the IMG or Tiff formats above. You may construct the waffle model using chipboard, butterboard, or plexiglass or masonite. In advance of constructing your model, experiment with a model fragment to determine the precise width needed for the slits. Extra Credit: construct your waffle with integrated buildings.
54
W07_screen shots
.osm + topo file (.tiff from EarthExplorer) Project (crv to srf) Extrude topo srf to provide model thickness
55
SolidTrim thickened mesh with thickened geodata geometry BBWaffle
56
RecGrid + ShortestList adjust layout
57
W07_model
58
W07_definition
59
60
W06_definition
61
W08_une petit mort
Assignment 8 due 5 PM Tuesday October 24th _________________________ Instructions Find a neighborhood scale site (preferably the one you used for project 7) and populate it with structures that have elements (pavement; walls; roof; extensions in u, v, or w; openings) that relate to topographic information (elevation, surface tangent, slope direction, etc.). Your objects should include linear edges. In other words, no circles, cylinders, or spheres. You may have a variety of different objects, or variations of one object type. Please include 5 distinct ways in which your instantiated objects relate to topographic information. Be sure to use frames, deconstructed vectors, expressions, and booleans (>, <, =, Gate And, etc.)
62
W08_screen shots
Base geometry from .osm + EarthExplorer
63
Tomb placement at grid pts perpendicular to contours, dispatched by vector length Show ponds at low elev
64
Trees like humidity: grow trees around wetland areas Shortest walk across wetlands and railway
65
Nature takes it back when weâ&#x20AC;&#x2122;re all gone.
66
W08_definition
67
68
W09_Fly, weaverbird!
Assignment 9 due 5 PM Tuesday October 31st* _________________________ Instructions Please review the project 9 example files in Collab for Thursday October 26th. 1 Using your topographic surface from project 5, 8, or your studio project, please create a low resolution faceted surface. If you think that it is appropriate, you are free to exaggerate the Z dimension of your surface for improved visibility of slopes for surfaces covering a large area. 2 Create a pattern of holes in some or all of the facets. The holes may be placed using distancebased gradation (as in the class example) or by any of the topographic-based methods demonstrated in project 8. 3 Lay out the facets with tabs and numbers and assemble these to make a model of your surface. Bristol board and chipboard are good materials for this project. 4 It will be preferable to lay out your model using the Ivy plug-in for grasshopper. 5 Note that it will be most useful to conduct experiments in advance to achieve the optimum width for tabs as well as the best dash pattern for folding the tabs. 6 The tabs may be connected using staples, cable ties, needle and thread, or glue. (Letâ&#x20AC;&#x2122;s find a fast and elegant way to do this!) * The project is due on 10.31.17 at 5 PM and a GH screen capture of your definition and Rhino screen captures of your model and fabrication layout should be placed in your Classes folder at the time. Please bring your facet models to class on Thursday November 2nd. If (only if) insufficient time on a laser cutter is unavailable, you may bring your model to class on November 7th. Please keep all fabrications in a safe place so that they can appear in the class exhibition at the end of the semester.
69
W09_screen shots
Tabs from offsetting each edge Layout with RecGrid and ShortestList
70
71
W09_definition
72
73
74
W10_two meshes
PSEUDO CODE: ASSIGNMENT 10 - WALK AND CANOPY #1 MAKE CANOPY ##1_1 Get topo from .tiff image of site ##1_2 Find closest walk along longitudinal central axis on site ##3 Use this walk (crv) and its relationship to the original pts from topo srf to create a canopy, with offset height greater towards the crv #2 MAKE COLUMNS TO SUPPORT CANOPY ##2_1 From the 2 srf, delete 1 row of faces on either the canopy or the topo srf in a corresponding way ##2_2 Extract the negative space created by correspondingly lofting these faces as column structure (some steps such as “loft” and “mesh” were done in rhino to simplify workflow) #3 CONNECTING THE GROUND, THE COLUMNS AND THE CANOPY #3_1 WB join and weld all meshes ---This is where i got stuck: these meshes aren’t actually joined, or at least not doing what i expected it to do...I wanted it to become smooth like the example we saw in class! Other than that the surface looks fine. Another question: what else could i do (or would i need to do) to make this a printable structure? I know i have to thicken it, just wanted it to be more interesting in a way now (thickness vs. thin, more information - i still have the river in the definition, just didn’t use it). Could you suggest something? Thank you!!!:)
75
W10.1_screen shots
Changing grid with GraphMapper
76
W10.1_definition
77
W10.2_screen shots
Make canopy with a walk based on original topo Columns from triangulated pieces from both meshes
78
W10.2_definition
79
80