Introduction Grasshopper Geometry
NURBS: an introduction
To be able to effectively use Grasshopper you will have to know with what the properties of the geometry are which you use during the design process. This basic knowledge is necessary because component editing form the basis for editing and manipulation of the design geometry. In Grasshopper we use primarily NURBS geometry. Certain properties of NURBS geometry make the NURBS perfectly suitable for accurately designing Cartesian and free form geometries. NURBS geometry enables the designer to accurately describe Cartesian and curved surfaces because the whole surface can mathematically be defined. The resulting accuracy of the digital geometry makes it a standard for design software. To be able to make the right decision a designer will need a basic understanding of the topology of the geometry which will be used in the design process. NURBS geometry is widely used in computer aided design CAD, computer aided manufacturing CAM and computer aided engineering CAE software. It supports industry standards like IGES, STEP and ACIS. The ability to intuitively and predictable adjust the curves and surfaces make it an power full geometry suitable for design. The NURBS are a generalized derivative of the Bezier curve. (Pierre Bezier worked as engineer for Renault, development started in the 1960’s to find a method to represent accurately mathematical defined curved lines and surfaces for car design).
There are similarities between the properties of the Bezier curve and the NURBS geometry. Lines created are called CURVES, that are based on Bezier Curves and are used as the basis for NURBS modeling. The way the lines are defined make is possible to draw rectangular and smooth curves. The concept of the structure of the lines where inspired on techniques used in the shipbuilding industry at the beginning of the 19th century. The wooden planks of the ship hull where bend by adding weights at different points on the plank. The amount of bend of shape of the bend could be adjusted by increasing the weight or the position of the weights.
Curves themselves are often used as a basis for geometry.
This concept of deformation was digitally implemented in to the Bezier curves definition. With the result that the curve in not only defined by the start and end point of the line but also by the control vertices and their weights between the two. These weights and the location of the control vertices will determine the amount of bending of the curve. The amount of weights between the start and end point are defined by the Degree .
- A degree 1 curve will create a curve that is defined by the start and the end point. This will generate a straight line.
- A degree 3 curve differs from the degree 1 by the two additional points which are added between the start and end point. These two additional points are called control vertices, they give the control over the curvature of the curve. By moving the control vertices the curve is deformed by the “pulling force” or weight of the control vertices.
There are other degrees available for generating a curve like the degree 2 curve which will behave like a Catenary chain. Degrees higher than 3 will have more control vertices added in between the start and end vertices. For a curved line we use the degree 3 curve and for a straight line we will use the degree 1 curve.
The curve contains Control Vertices. Except for the start and end vertices these Control Vertices don’t have to be situated on the line itself. This makes drawing a curve with Control Vertices less intuitive as the curvature is defined by the offset of the Control Vertices and their weight from the curve itself.
Edit Point are points on the curve itself and can be used for generating a curve. The Edit Point give control on where the curve will intersect with the points. The Control Vertices will be automatically generated based on the position of the Edit Points and the resulting curve.
The curve itself is defined as a 1 dimensional object with a length in the U direction. This information can be important for division of the line or defining positions on the line. The length of the curve can represent the actual length of the curve or it can be re parameterized to a length of 1. This will mean that the actual length of the curve is replaced by the value 1. This re parameterized will make the definition of relative positions along the length of the curve possible. The middle position of a point of the curve can in this case be defined as 0,5.
When the Control Vertices or the weights are adjusted the curve will change its curvature. At the ends of the curve the tangency will therefore also change. This tangency of the endpoints are of special interest when a curve is attached. If the lines have to be aligned the tangency of both ends can be aligned to create a smooth connection. This option is called a C1 alignment. C0 is a hard connect with no change in tangency. C2 is an alignment based of the curvature of the curve. These alignments will be discussed later.
When we create a curve in Rhino we will use one of the viewports. The curve will be created on a plane perpendicular to the view and positioned on the centre axis of the digital space. The grid is positioned on this plane. In Grasshopper and Rhino these planes can be transformed to re orient the plane on which you will construct your geometry. The curve will be generated on this re oriented plane. This ability to reorient the plane in Grasshopper can be a very powerful tool in creating an array of different oriented curves.
The structure of a NURBS surface is comparable with the NURBS curve. The surface supports the same use of weighted vertices to define the curvature and shape of the geometry. The geometry itself can be seen as a combination of two sets of an infinite amount of "parallel" curves placed at a crosswise angle. Unlike a Polygon a single NURBS surface can never define a closed object. NURBS surfaces always have a "rectangular" topology. This can be illustrated with the analogy of the two sets of curves which define the geometry.
The organization of vertices and the parameterization of the geometry are basically crosswise organized to each other to create basically a surface with four edges. Forms like spheres and tubes are basically deformed rectangular surfaces. By welding (closing) the connection of one of the directions of the iso curves the surface can be closed in one direction creating a tube like structure.. However the other direction can’s be welded or closed. The surface remains open.
2 Dimensional geometry
The NURBS surface has a 2 dimensional structure defined by the U and V direction. The U and V direction can be defined in the actual length of the surface in the U and V direction or it can be similar to the NURBS curve be re parameterized. In that case the U and the V direction will have a maximum value of 1. The U V parameter space differs from world coordinate system which is the virtual space you work in. World coordinate system has 3 dimensions. A point on the surface of the plane can therefore be defined in parameter space p(u,v)and by the world coordinate system w(x,y,z)
Resulting effect is that the surface can support two different degrees, one in each direction. These curves on the surface are called ISO curves. The ISO curve will behave the same as a NURBS curve. Selecting and moving a Control Vertex on a surface will basically deform the ISO curve causing the surface to deform.
The more ISO curves on a surface, the more vertices are generated to deform the surface OR the higher the degree of the curves, the more vertices will be generated per ISO curve and surface as a whole. The Iso curves can be extracted and converted to a curve. These curves in turn can be the basis of new geometry.
Because the NURBS surface is mathematically defined any ISO curve in the U or V direction can be extracted. That also implies that every point on the surface can be defined.
The edges of the surface can be defined and for example used for making additional geometry. These edges are the outer Iso curves of the surface.
The normal vectors
When a surface is generated the surface will be defined with a top and bottom direction. This definition will help to define the inside and outside of an enclosed surface or poly surface. The top or outside is defined by the normal of the surface. The normal is perpendicular to the surface.
All these components of the NURBS surface can be used or edited in Grasshopper in support of the design process. It is therefore necessary that if you want to effectively use software like Grasshopper you need to know what these components of the curve and surface are. These components can form a basis for manipulation of generation of new curves or surfaces.