Appendix
Tutorials
Grasshopper
a. Quick Start
b. Adding Plug Ins
c. Data Flow: Trees and Lists
d. Clusters
Coursework
Episode 1: On Scale
a. Quick guide to AggregateFill_v002.gh
b. File preparation: Bitmap “etching” and Photoshop Actions
c. Details: basic physics, PhysX and Kangarood. Details: Slurry Filler
e. Details: Thick Bitmaps
Episode 2: On Depth
a. Digital weaving resources
b. Photocomposites
c. Indexing Color
d. Image Threading
e. Weaving Patterns
f. 3D Image Weaving
g. Weave Object
h. Animate Weaving
Grasshopper
a. Quick Start
The best way to learn grasshopper (or any software) is to follow these recommendations:
1. Refer to many sources for tutorials. Every instructor and designer uses the software in a different way. The tutorials here will emphasize building tools for design. It’s best to watch the introduction video to both refresh basic concepts and to see what details are highlighted. You can find several tutorails on the Grasshopper3d.com website.
2. Jump straight in and do not be afraid to break things. Grasshopper has a very generous community of makers that will post their definitions (gh term for script) on Grasshopper3D.com, the discourse.mcneel.com, and other personal websites like this. Download the definition, read forward and back, then try to remake it from scratch. When you are feeling a bit more confident, try to combine two found definitions.
3. Start with simple tasks that you might otherwise do in Rhino. This is the best way to learn how to navigate the various tabs and components of grasshopper. Starting suggestion: make a grid of lines.
4. Pay attention to the terminology used in the tutorials. This will help you make effective searches when you get stuck.
5. Teach or tutor a peer what you’ve learned, even without mastering the software yourself. This will reinforce the knowledge and understanding you have of how the software works.
Resources
grasshopper3D.com - The original community website, this has a vast archive of useful material.
discourse.mcneel.com - Most of the discussion boards from grasshopper3d were carried over here to consolidate all of the Rhino product forums.
Food4Rhino.com - A fantastic source of Rhino and Grasshopper plug-ins. In the next few years, most of these will be added to the Package Manager described below.
Modelab’s Grasshopper Primer - A super clear pdf describing the core components of grasshopper.
b. Adding Plug-Ins
*note: it is recommended you install the requisite plug-ins prior to the start of the tutorials.Plug-Ins are an essential part of extending the functionality of Grasshopper, and for Rhino as a tool that can compete with other advanced digital softwares. Most plug-in are created by members of the Grasshopper community independent from McNeel, the makers of Rhino. They are updated regularly and require independent tracking of those updates for new components and function. Plug-ins will be formatted as .gha or .ghuser files. The former are library plugins, the latter “User Objects.” These will get installed in different folders described below. There are two common ways of finding and installing plugins, the first (and easiest) is through the PackageManager command in Rhino. The second is by finding the plugin on Food4Rhino.com and manually installing into the plug ins folder. Follow the instructions for each below and/or watch this video.
PackageManager Install
Manual Installation
![2. Search for your plug-in here. Install, then restart Rhino.](https://freight.cargo.site/t/original/i/f77edcc16bd2a829953b86c5383fd47effdf176d90b0bd2a7d61ebafd9cec5bf/07.jpg)
![1. In Rhino, type PackageManager into the command line.](https://freight.cargo.site/t/original/i/9bc334b46c11db6cce0b7c61fed50b0f0d27183d919886d7d6bb80677f4ee208/06.jpg)
![](https://freight.cargo.site/t/original/i/41cd30245e0d88ed7040e8306346698b8f81bae94b334cf8370ff58aeda6e7df/PackageManager.gif)
![1. Find your plugIn on Food4Rhino.com](https://freight.cargo.site/t/original/i/94e49f0742ab3206380157136098e5835acbe3e494a57adca21656cdcda2b314/01.jpg)
![2. If using PC, right click on the file and select Properties. If the file is block, check the Unblock option.](https://freight.cargo.site/t/original/i/b3762186f263f3659eac6b74f99f9067550cadf6cb54b7cbf56d8c0349d67f7b/02.jpg)
![3. In Grasshopper, find and open the components folder. This should be User/AppData/Roaming/Grasshopper/ Libraries (for normal plugins) or UserObjects for ghuser files.](https://freight.cargo.site/t/original/i/40954c4eb6ae7997571c22509b53c04dd76913d4ebd4e66609cc524d054f4b34/03.jpg)
![4. Drag and drop all files that come with the plug in into the Libraries or UserObjects folder](https://freight.cargo.site/t/original/i/ea8b550dcc5ccae7bfd0974c3098b63b0cd673da5df396eef422ef1c38ab8c6d/05.gif)
![](https://freight.cargo.site/t/original/i/ed56299a9545e78c61f508c81493040748cbbe1a65f7fb2597dea53e377c6919/Manual-Install-2.gif)
Recommended PackageManager PlugIns:
Corgi, Dendro, Elefront, Fennec, Human, Heteroptera, Ivy, Ngon, OpenNest, SidePanel, Stripper, VoxelTools, Weaverbird, Wombat
Corgi, Dendro, Elefront, Fennec, Human, Heteroptera, Ivy, Ngon, OpenNest, SidePanel, Stripper, VoxelTools, Weaverbird, Wombat
Recommended Food4Rhino.com PlugIns:
Anemone, Bitmap+, MeshEdit, PhysX, pOd, Pufferfish, Rooster, TreeSloth
Anemone, Bitmap+, MeshEdit, PhysX, pOd, Pufferfish, Rooster, TreeSloth
c. Data Flow - Trees and Lists
The most difficult to learn but fundamental aspect to understanding Grasshopper (GH) is how data in the form of geometry, numbers, and text flow through a Grasshopper definition. This is what makes the tool powerful - the ability to moderate and direct extremely large quantities of information. Grasshopper does this with what it calls a Data-tree path.
The Tree represents the overall organizational structure of the GH definition. Think of everything starting from the trunk, our state {0}. Each Branch is a sub-group within the larger tree structure. There can be an unlimited number of sub groups within sub groups. This is represented as {0; 1; 1; ...}, each number from left to right is the subgroup with the subgroup. The last subgroup with in the tree structure contains a List of items - geometry, numbers, etc. that are in a linear order. Think of this as the leaves on the branches.
+ note: the list order of objects always begins with 0 rather than 1. So a list of 10 looks like “0, 1, 2, 3, 4, 5, 6, 7, 8, 9”
![1. [0] There are 100 circles in this tree.](https://freight.cargo.site/t/original/i/d7ad09122170094a63ff5f8f6b67b8977f6243f8b9b3390114585a8c758c585d/sortin-0.jpeg)
![2. [0],[1],[2],...The tree is divided into 7 branches, each a different color. All but the last branch contain a list of 15 circles, in order. Notice the change in tree structure in the panel on the right.](https://freight.cargo.site/t/original/i/c9e89a4cbd1f40e7b7b8b83375e6f67e103f8a66465b3881973ff5960a968673/sortin-1.jpeg)
![3. [0;0], [0;1], ...[6;0],[6;1] Each of the 7 branches are split into to subbranches, one solid, the other hollow.](https://freight.cargo.site/t/original/i/94cfc92efcc65a5a93e869bead50aa843c5364e202834063a5c149477b422765/sortin-2.jpeg)
![4. [0;0;0], [0;0;1], [0;0;2], [0;0;3]...[6;1;0] Each sub branch is divided into pairs.](https://freight.cargo.site/t/original/i/b10c443241f67a39ef93c33389da2fb5eeb908eec1d716663c63380cbee23afc/sortin-3.jpeg)
![The components form managing the flow of data can be found in the Sets tab. Additional plugins TreeSloth and Human provide additional tools for managing data.](https://freight.cargo.site/t/original/i/9d0b91a3b08126b3d42e65ed0a8d16b1eeb18c1c52d81fa9eb1f33e8adc3f066/2X.jpg)
The components for managing the flow of data can be found in the Sets tab. Additional plugins TreeSloth and Human provide additional tools for managing data.
Flatten, Graft, and Simplify
![Graft creates a new tree branch (b) from every item on a list (a). This can be achieved with a graft component (b) or by right-clicking the output of the last component and selecting "Graft" (c)](https://freight.cargo.site/t/original/i/2e4c61a4c0b0f0d1079fc6b081ecff6c22100b154be651b23cf07c12df4062a6/graft-flatten-0.jpeg)
![Simplify cleans the labeling of a tree structure by removing excessive branch notation. (a to b/c). This can be done through a Simplify component or on the output of the last component by right-clicking and selecting "Simplify" (c)](https://freight.cargo.site/t/original/i/f93210e05e375561fe97afd160fff926ec4803d112dab1c8835285c12bfe9d1c/graft-flatten-1.jpeg)
![Flatten collapses all tree hierarchy into a single branch (a to b/c). This can be done through a Flatten component or on the output of the last component by right-clicking and selecting "Flatten" (c)](https://freight.cargo.site/t/original/i/0f265fbde3f9787a85891b383705b5ca868b3fff8f92c6b2ce9dfac40218e0e5/graft-flatten-2.jpeg)
![Combining single and multi-branch trees is a way to multiply and distribute inputs. Note here (a) and (b) tree structure match at start. When the X and Y values are input to the MakePt (c) component, each index item is matched to the corresponding index to create a single coordinate location. When one input is grafted, each index item in (a) is multiplied against the individual index in each tree branch.](https://freight.cargo.site/t/original/i/29f67eb3cc473ce9274aed70e051f5a91b2d8993b08cb406da3129981590f0bb/flattengif.gif)
List Components
Tree Components
![List Item retrieves the index value specified from a list.](https://freight.cargo.site/t/original/i/077f19ac4ff364a0e4e4851a1c0658e30e27c530ab30511381ae96427da51b8d/list-item.gif)
![Split List will divide the data stream in two at a given index](https://freight.cargo.site/t/original/i/52a0e607ed95f7ee2c0499dcfb28104a26cbc712cc27d0c9aa9371c426b09e00/misc-lists-1.jpeg)
![Pick n Choose requires two of more lists of equal size and an equal size pattern of Integers of True/False. In this example, False=0, True=1. So at index 0, the component will pull from the list input into the 1](https://freight.cargo.site/t/original/i/0c1164662ca6b8b445e6e24eded75e6ea4edef1b6b3f0ac7b45fb920404873ca/misc-lists-3.jpeg)
![Partition List will divide a list into new branches the length of the input size.](https://freight.cargo.site/t/original/i/4e960dfdbd8d9b1baa3a0d6acc9773691c72edeec3119221f1bd5c285f5a3de1/partition-list.gif)
![Sort List will take a numerical value list (ie, 1, 2, 3,,,,) that can be sorted from smallest to largest to sort another list equal in length but is not inherently sortable such as geometry or boolean values.](https://freight.cargo.site/t/original/i/2b20f8f587378ece599dc4ef6a88a4791d0457a337287ed467215395869a0bca/misc-lists-0.jpeg)
![Shift List will shift the order of the list index the number of the S input. If W is False it will simply remove those items. If W is True it will relocate those index items to the end of the list.](https://freight.cargo.site/t/original/i/ae50e1a50d13717f4093379ba18a5fc11a9e30f35cf89853a6e2abb8f41c38a4/shift-list.gif)
![List Length returns the number of items on a list.](https://freight.cargo.site/t/original/i/2fba5dbfe4a2a1224b28d3df8782d989e5787934475ab9be6338b43c54b16123/misc-lists-2.jpeg)
d. Clusters
Grasshopper definitions get visually complicated fast. Clusters are a way to nest chunks of a definition into a single modular component. This practice helps when problem solving errors in large definitions. You can quickly track the flow of inputs and outputs to identify issues.
To create a cluster, add Cluster Input and Cluster Output to input parameters and output parameters. Select all components, middle-mouse button click, and choose the Cluster Icon.
You can rename the parameter input/outputs to have them labled in the cluster.
Clusters can also be converted into UserObjects, which saves an icon component in the tabs for commonly used definitions. Select the cluster, and in Files choose Create User Object
![](https://freight.cargo.site/t/original/i/665bce6d8cd2f06f6397f563fca06833ff4ed8b12a5f710d5cb6119310124215/Cluster.gif)
Coursework
Episode 1: On Scale
a. Quick Guide to AggregateFill_v002.gh
download the file here
This definition requires the follow plugins pre-installed:
PackageManager: Corgi, Dendro, Elefront, Faerie, Fennec, Heteroptera, Human, Stripper, VoxelTools, Weaverbird, Wombat
Manual Install: Bitmap+, MeshEdit, PhysX, Pufferfish, Rooster
+ plugin install directions here
b. File preparation: Bitmap “etching” and Photoshop Actions
Using Photoshop, this tutorial will show how to set up Action scripts and process ‘etching-like’ bitmaps.
c. Details: basic physics, PhysX and Kangaroo
d. Details: Slurry Filler
This tutorial shows how to use Volumetric modeling (voxels) in grasshopper using Dendro to quickly model irregular geometrys. We’ll combine it with an agent based plugin Faerie to model wormholes through a solid.
e. Details: Thick Bitmaps
Here we’ll use the plugin Bitmap+ to create noise based animations that can fill the interior sections of your aggregate.
Coursework
Episode 2: On Depth
a. Digital Weaving Resources
FiberArt.com - digital jacquard, custom color palettes
Weft.com - digital jacquard, limited color palettes, varied weave patterns
WOVNS.com - digital jacquard, fixed color palettes
BYBORRE.com - 3D knitting
KnitUp.io - custom knit (low res) images
b. Photocomposites
We’ll first collect and composite photographs in Photoshop into a densely saturated image.
c. Indexing Colors
Download ACT or ACO swatch libraries that match the digital weaving vendor’s color line:
FiberArts
WOVNS
d. Image Threading
This quick grasshopper script requires the plugins: Bitmap+ and Human. Install prior to opening.
ImageThreading.gh
e. Weaving Pattern
This quick grasshopper script requires the plugins: Bitmap+ and Human. Install prior to opening.
WeavingPattern.gh
f. 3D Image Weaving
This step uses the Weave3D.gh script found here. You will need to install MeshTools, Human, Weaverbird, and Wombat prior to opening.Download MeshTools.gha here.
1. Prepare a set of Images and Weave Patterns from steps d and e. Organize into folders. You may increase the resolution from the Images in step d.
2. Open Weave3D.gh and click through the following slides for instruction:
![1. 'Right-click' the Weave Card Directory to set the location where the B&W Weave Files are located. Choose a weave pattern from the blue drop down menu.](https://freight.cargo.site/t/original/i/1fff4b450b6226b1c6bc35401b33cb790f592d5a28a01228aa5ecfdcbffae2f6/ImageWeave01.gif)
![2. Set the Scale from the previous script to match the weave pattern spacing. A larger number here will result in fewer weaves. Set the LowRes/HiRes toggle to 'True'](https://freight.cargo.site/t/original/i/c0bcf9ad7a39cee8e9ff883440f298b3c4a92e618cb38d1fa1c556a714a1295f/ImageWeave03.gif)
![3. Set up a light in Rhino. The sun or directional light will work fine. In the render settings, set the skylight environment to 'No Environment'](https://freight.cargo.site/t/original/i/28aa94511cd7fb02bdf1c37fe56c567270c581c16bca6a1756abb27af1c1c8cb/WeaveImage04.gif)
![4. Create one or more custom materials with your images made in step d. You may decide to increase the resolution of the original image depending on the fineness of the weave. In Grasshopper, right click the "M" on the preview component to set the material. Do this to both previews.](https://freight.cargo.site/t/original/i/939b766ced9aac3a911b045a776b7b7645c81a3acc26de7b120de8d17638390b/WeaveImage05.gif)
![5. Set the MapUV Toggle to 'True' to map the image to the weave. Warning, this will take several minutes to process.](https://freight.cargo.site/t/original/i/df12d466534707469cb3bbfcd5d736c574692c22b70510cdc05f1ed2bccdb8d4/WeaveImage07.gif)
![6. Set the Save location and file name to save the Image. Press the Save button to save.](https://freight.cargo.site/t/original/i/6dcd5f3c2c081c5321ff1765a461c4edd724e2844a38f0e01490132d6e6288d5/WeaveImage08.gif)
![7. Crop and scale your image to the resolution specified below. Rerun the Indexical color mode with the Fiber arts colors.](https://freight.cargo.site/t/original/i/be01341bdced6526b18b2169fcb15f97726f0c1b803f9d94f7b624c417c9ff59/WeaveImage09.gif)
Resolution of Images for FiberArts Weaving:
Upholstery Weight
54” x 36” = 1600 x 1059 ppi
54” x 72” = 1600 x 2118 ppi
Soft Tapestry
62” x 62” = 850 x 850 ppi
72” x 54” = 768 x 1025 ppi
62” x 54” = 850 x 768 ppi
62” x 84” = 850 x 1150 ppi
![](https://freight.cargo.site/t/original/i/3b3a71a4be4f9c169ffb480524c48ae39d067ce0533b6d67bf94bfca2f0a0b06/WeaveImage-02.png)
g. Weave Object
Addendum to the video: Before “FlowAlongSurface” you can convert the mesh to a SubD geometry. This will give smooth results, but caution will take extra time to process.h. Weave Animation
This update to the weaving script makes animating the weave possible.download Animate Weave.gh