Читать книгу Grasshopper: Visual Scripting for Rhinoceros 3D - David Bachman - Страница 8

Оглавление

1

Getting Started


FIGURE 1.1. The Grasshopper window with the Geometry panel expanded.

When you first start up Grasshopper you’ll see something like Figure 1.1, a mostly blank window with a menu of little boxes along the top. The blank part is called the canvas, and it is where you’ll build your programs, called scripts. Each object and operation in Rhino is represented by a box, called a component. For example, there are components corresponding to Rhino primitive objects like spheres and cylinders, components corresponding to Rhino transformations like revolve and translate, and components for building one object from others, such as loft.

A menu of the most basic components initially appears across the top of the Rhino window. Those components are put into panels, and more components in each panel can be accessed by clicking on the name of the panel. For example, clicking on the word Geometry at the top of the screen expands that panel, as shown in Figure 1.1, giving you access to many more components. Furthermore, many more panels of components are in different tabs.

To build a Grasshopper script, you simply drag components onto the canvas, and connect them with “wires,” represented as arcs. The input and output to each component is either an object (e.g., a sphere), a piece of data (e.g., a number), or an operation (e.g., a rotation). Information always passes between components from left to right. Hence, wires connected to the left side of a component represent a flow of input data, and wires connected on the right represent output.

As with any design package, there are often several ways to create a desired object in Grasshopper. For our first examples of Grasshopper scripts, we will see five different ways to create the simple cylinder shown in Figure 1.2.

The Cylinder Component

Since a cylinder is a basic object in Rhino, there is a built-in Grasshopper component that does the same thing. Click on the Surface tab to bring up the panels of components for working with surfaces. Then click on the Primitive panel, and finally select Cylinder. Now click anywhere on the canvas to place a Cylinder component there.


FIGURE 1.2. A cylinder in Rhino, generated by a Grasshopper script.

Immediately you should notice several things about this component. On the left side of the box there are three little white bumps. These are places where you can connect wires from other components for input data. The bumps correspond to the letters “B,” “R,” and “L,” which stand for “Base Plane,” “Radius,” and “Length.” If you rest the pointer over each of these letters, a little callout window will pop up telling you what the input represents, and its default value. The “Base Plane” is the plane on which the cylinder will sit. This not only sets the 3-dimensional orientation of the cylinder, but also its location in space, since the center of the base of the cylinder is the origin of the Base Plane.

In the Rhino viewports you should see the cylinder created by this component.

To change the radius of the cylinder, right-click on the letter “R.” A secondary pop-up menu will appear. Select “Set Number,” type any number in the window, and click “Commit Changes.” The cylinder in the Rhino viewport will now change.

One of the most powerful things about Grasshopper is its ability to dynamically interact with the user. To see this, go to the Params tab, and select the Number Slider component from the Input panel. By default, this slider outputs a real number between 0 and 1. Place this component on the canvas to the left of the Cylinder component. Then move the pointer to the white bump on the right side of the slider, hold down the left mouse button, and drag a wire to the “R” input of the Cylinder component. Notice that the name of the slider automatically changes to the word “Radius.”

Watch the Rhino viewport as you play with the Grasshopper slider. You should see the cylinder expanding and contracting as its radius changes. You can also place a second slider on the canvas, and connect it to the “L” input. Adjusting that slider will change the height of the cylinder. See Figure 1.3.


FIGURE 1.3. Building an adjustable cylinder with the Cylinder component.

Now try double-clicking on the name of either slider. A new window will pop up, where you can adjust the minimum and maximum values of the slider (among other things). Changing these will allow you to make the cylinder as big as you want.

At this point, the cylinder you see in the Rhino window is only a preview of what Grasshopper is generating. It is not a Rhino object, and thus cannot be manipulated within Rhino. Once you are satisfied with the look of your cylinder, you can turn it into a Rhino object by right-clicking on the “C” output of the Cylinder component, and selecting “Bake.”

Extruding a Circle

For our second method, we’ll do a vertical extrusion of a circle, as in Figure 1.4. Start with the Circle component (Curve tab, Primitive panel). By default, this creates a circle of radius 1 in the XY-plane. To make a cylinder we’ll do a vertical extrusion. Place an Extrude component (Surface tab, Freeform panel) on the canvas to the right of the Circle component. Then connect the output of the Circle component to the “B” input of the Extrude component.


FIGURE 1.4. Vertically extruding a circle produces a cylinder.

At this point the Extrude component should be orange, indicating that it needs more information in order to function. A small bubble appears in its top-right corner, and hovering over it reveals the message “Input parameter D failed to collect data.” The “D” input is waiting for a vector to tell the Extrude component which direction to do the extrusion, and how far. Drop a Unit Z component (Vector tab, Vector panel), representing a unit vector in the Z-direction, on the canvas and connect it to the “D” input of the Extrude component. All components should now be their usual gray, representing the fact that they are functioning properly, and a cylinder should appear in the Rhino viewport.

Hovering over the output of each component reveals a description of what that component is generating. For example, hovering over the output of the Unit Z component displays “{0.0,0.0,1,0},” which is a vertical vector of length one. As with the previous method, to change the radius of the cylinder, just attach a number slider to the “R” input of the Circle component. To change the height, attach a number slider to the “F” input of the Unit Z component. This has the effect of rescaling the vector coming out of that component, which in turn tells the Extrude component to create a surface of a different height.

At this point there are two components outputting geometry to the Rhino viewport: the Circle component and the Extrude component. When we build more complicated objects, you will want to display only the object generated by one particular component. To do this, click on the small icon in the top-right corner of the Grasshopper window that looks like a half-green, half-gray surface, as shown in Figure 1.5. Now you’ll only see objects in the Rhino viewport when you select them on the canvas, and they will appear there green.


FIGURE 1.5. Click here to change the display mode to only draw a preview of selected objects.


FIGURE 1.6. Lofting two circles will make a cylinder.

Lofting Two Circles

Following the previous method, select the Extrude component and delete it. In its place, drop a Move component (Transform tab, Euclidean panel). Connect the output of the Circle component to the “G” input, and the output of the Unit Z component to the “T” input. As you would likely guess, the Move component will now move the circle up in the Z-direction.

Now place a Loft component (Surface tab, Freeform panel) on the canvas, above and to the right of the Move component. Connect the output of the Move component to the “C” input of the Loft component. Then, holding down the shift key, also connect the output of the Circle component to the “C” input of the Loft component, as in Figure 1.6. The Loft component is now being given two circles, and will create a surface between them.

Piping a Line Segment

Our fourth method is depicted in Figure 1.7. Begin with a Line component (Curve tab, Primitive panel). Right-click on the “A” input, and choose “Set one Point.” The Grasshopper window will temporarily disappear, leaving you looking at the Rhino viewport. Select the origin. Do the same thing for the “B” input, but this time select the point (0, 0,1). (You’ll have to do this in Rhino’s Front or Right viewport. If you want to select these points exactly, it is helpful to have Grid Snaps on in Rhino.) The Line component should now make a line connecting these two points.


FIGURE 1.7. Piping a line segment.

Now drop a Pipe component (Surface tab, Freeform panel) onto the canvas. Connect the output of the Line component to the “C” input of the pipe. Just as in the Rhino “Pipe” command, the Pipe component puts a tube around the curve that is fed into it. A tube around the line segment constructed above is again a cylinder. The radius of the resulting cylinder can be adjusted at the “R” input of the Pipe component.

Revolving a Line Segment

Begin with the line segment from the previous method. As in the third method demonstrated previously, move this line segment one unit in the X-direction by feeding it to the “G” input of a Move component, with a Unit X component connected to the “T” input. Place a Revolution component (Surface tab, Freeform panel) on the right side of the canvas. Connect the output of the Line component to the “A” input (thus defining the axis of revolution), and the output of the Move component to the “P” input (defining the curve to be revolved). See Figure 1.8. By default, the input curve is revolved a full 2π radians (360 degrees) around the axis line, in this case creating a full cylinder.


FIGURE 1.8. Making a cylinder by revolving a line segment.

Grasshopper: Visual Scripting for Rhinoceros 3D

Подняться наверх