Template:Introduction Grasshopper

From TOI-Pedia

Grasshopper introduction:

Grasshopper is an explicit history interface for Rhino. In contrast to Maya and other 3d software programs Rhino doesn’t, or better hardly supports, information on how the geometry was made. In Maya for example we can create a surface from a set of curves, similar to Rhino. However Maya will remember how the surface was made from the curves. By altering the curves in Maya the surface will change also. It remembers that the surface is made from the curves. This is called a history. Most of the 3D programs like Maya, 3DS Max, Studio, etc support the concept of history. There is a good reason for this implementing the concept of history. It effectively supports the design process by the option of changing earlier steps in the modelling process and thereby changing the end result. Although Rhino supports history, it is very limited and not an integrated feature of every command as with other software. Therefore Rhino developed the concept of Explicit History. This Explicit History in Rhino is accessed through the plug-in called Grasshopper.


Explicit History works differently from the traditional History which we can find in other 3D software. The name suggests the difference. It is explicit. This will mean that in Grasshopper you will build the History and thereby the object in contrast to the traditional form where the history is the result of a set of commands generating an object. The capability of explicit building and manipulating the History can be very effective in the design process as it enables you the specify complex relationships between components in the design process.

Explicit History

The concept of Explicit History will thereby ask for a design approach which differs from traditional 3D software environment. The design concentrates on the interrelations of the components and parameters which in turn make up the design. Resulting in a parametric and associative design environment.

Grasshopper has its own interface and viewport. The geometry in Rhino is a preview of the result of the interrelations of the components and parameters made in the Grasshopper interface. The geometry is linked to Grasshopper and is called a BRep or Boundary Representation. A BRep is a preview and is only partially editable in Rhino itself as long as the link remains with Grasshopper. The edit ability depends on what objects where defined in Rhino which were used as parameters for the Grasshopper BRep. When the BRep is baked in Grasshopper the BRep will be converted from a preview to Rhino geometry.



Grasshopper uses a variety of modules which can be interconnected to generate the Explicit History. There a 3 types of modules.

  • The parameter
  • The component
  • The utility or special


These modules can be connected with each other to form a network of relations and parameters. Connecting the parameters and components is quite simple, drag the cursor of the mouse from the output of a parameter or component to the input of the component. To disconnect use the CRTL + LMB and drag the connection in the opposite direction.

connecting and disconnecting

The result is a complex network of relations and parameters defining the design geometry. The network can be edited and extended during the design process, as a result the design geometry will change as a result.

The parameter

The parameter contains data. This can be geometry or primitives. If a geometry type is selected as parameter, the geometry can be:

  • selected from existing Rhino geometry
  • or can be made in the Rhino viewports.

When a parameter is defined by existing geometry in Rhino an relation is created between the geometry and the resulting Brep of Grasshopper. This will mean that if the existing geometry is edited in Rhino the resulting Brep of Grasshopper will also change. A relation is made which is similar to the traditional history as used in most 3D software.


When the parameter is defined in the context of Grasshopper, when asked for a single or multiple object, the geometry is made as a Grasshopper object. This object can’t be edited in Rhino itself. Only is Grasshopper.

This difference is important for the design strategy. If the design geometry has to be explored in an intuitive manner , a combination of editable Rhino geometry and resulting Brep geometry in Grasshopper can be an effective approach. In this case there is a combination of a traditional history structure with the powerful options of Grasshopper. If this approach is preferred, the decision has to be made what will be generated in Rhino as a basis of the design geometry and what will be part of the geometry defined by Grasshopper.

A single parameter can have multiple outputs, for example multiple curves or points. These multiple objects are placed in a list. This list can be edited to extract parts of the list , part of the objects.


Examples of a parameter are the curve or curves, surfaces , points , numbers , text and vectors. A parameter doesn't do anything but holding certain data. This data can be the basis for manipulation.

The component

The component contains an action.This means that there is most of the times an input and an output. For example the actions of generating geometry based on curves like : Loft , Sweep 1 rail and Extrude The component has input options and output options depending on the action of the component. In the component node an action is calculated and an output generated. This output can be connected again with another component or utility. This production and manipulation of the resulting network of parameters , components and utilities form the result of the associated design process.The design is in this case a result of the network of parameters and components (actions),where variables are pre defined in support of the design process.Components ( actions) often need an input. Without an input the action can’t take place. If we want to create a loft, we need a parameter of multiple curves or parameters of single curves to generate the loft.


Hovering with the cursor over the input or output of the component will display the properties of the input or output. If you want to change the settings of the input or output use the right mouse button. The editable functionality ,preview and data management of the component can be accessed by the RMB click on the name of the component.



The specials contain a variety of functions which support the easy access and manipulation of the network. We can in some cases also use a Special for the input or output of a component. The most used are the

  • Number slider
  • The Panel

The number slider will enable you to define a number within a certain range and type. If you want to be able to move a curve of a loft , you can add a transform component to the curve and manually define the transformation with the help of the slider. The panel will give you feedback on the output of the components. This can be of use when you want to explore the list you want to edit.


The List.

List creation and editing forms a crucial role in the functionality of Grasshopper. The list is the organization of multiple data in a data tree which is the result of the action or definition of the parameter/s. In the case of the loft, we can define, for example, 3 curves and place them all together in 1 parameter. This parameter will contain and therefore has an output of 3 curves. These curves are placed in a list. The component (action) of loft will have an input of the 3 curves and will make a loft between the 3 curves. If we however want to add two tubes to the edge of the surface we only need two curves of that list. So we have to extract only the two edge curves from the list and ignore the middle one. To make this possible Grasshopper provides us with a range of list editing tools. They can be found under the tab of Sets. Understanding these list editing tools is crucial for understanding Grasshopper. In the case of the loft we can use the Cull Index component ( action) to tell the computer to ignore the second curve of the list. By defining the index number of the curve , in this case 1 ( index curves 0,1,2) the middle one this curve will be ignored by the action of creating pipes. List editing can be quite complex because the data is not only listed with an index number but can also be defined in various levels. This will be discussed later.


In contrast to scripting the objects you create in Grasshopper don't have their own name. They are part of a list , where the object is identified with an index number. Accessing the object is therefore more problematic then in a scripting environment. This is further complicated by the structure of the lists in different data branches. This structure will be further explained later.


Personal tools