COMPUTER
AIDED
ARCHITECTURAL DESIGN
Workshop 5 Notes,
Week of September 12, 2021
During this workshop we more fully introduce Grasshopper. We will introduce the Python programming plugin for Grasshopper in the next workshop. In these examples there's a continuing emphasis on vectors to help with constructing 3D geometry and related projection techniques.
A few external tutorials and references may be helpful in addition to the workshop notes published on the class web site. For a quick immersion, I would recommend browsing through any of the following online introductory guides to Grasshoppers:
1. A number of published guides on Grasshopper are at:
https://www.grasshopper3d.com/page/tutorials-1
This includes a focused introductory tutorial by David Rutten, the creator of Grasshopper:
https://vimeo.com/channels/basicgh (video)
2. A separate 30 minute introduction is available by Paul Jeffries, an alternative first tutorial.
https://3dgyaan.com/2019/12/13/a-beginners-guide-to-visual-scripting-with-grasshopper/ (animated tutorial with basic kinds of constructions)
3. Although it is slightly outdated, a more detailed introduction is provided by Andy Payne that is well structured.
http://www.liftarchitects.com/blog/2009/3/25/grasshopper-primer-english-edition
VECTOR ARRAYS AND MAPPED OBJECTS TO 3D SURFACES
These workshop notes describe some commonly use techniques using vectors to translate objects. In first two examples below, we set into place two similar 2D arrays that produce the same result though related but distinct methods. In the third example, we take on the more complex case of mapping of 3D object (or collection of objects) to a doubly curved surface.PART 1. 2D translation.
1. Within this the front view place a 1' x 2' corner point to corner point rectangular surface at the origin and one above it along the Y-Axis. In addition, place points along the X-Axis at 0,0,0 and 0,2,0 and also one at the lower left hand croner of the upper rectangle surface.PART
2: 3D Vector Mapping of Objects to Surfaces.
We can apply a similar strategy to mapping an objecton the ground to the UV coordinate system of a doubly curved surface and also taking advantage of surface normals.
1. Create a 20 x 20 rectangular surface from the location 0, 0, 0 to the location 20, 20, 0 in the XY plane.
2. Turn on the control points and then select the ones on it's lower left and upper right corner in the X-Y plane. Wtih the Gumball tool move the control points above the ground plane to create a simple saddle shape.
3 . Next place a point at at the location -2, -2, 0 and a solid cylinder of radius 0.2 at the same location. Move the cynlinder downward so that it is bisected by the ground plane.
Save the Rhino file, open Grasshopper and initiate a new Grasshopper file.
4. Within the Grasshopper "Params" (parameter tab), add a "Geo" and "Pt" component and connect them to the Cylinder and to the point in Rhino respectively.
Similarly, add a surface component and connect it to the simple saddle shape.
Add two integer sliders ranging in value from 2 to 100 and labelled "U" and "V" for the surface coordinate system.
5. In the next step we establish a set of vectors from the point at the center of the cylinder on the ground to U V points along the saddle surface. Begin by going to the "Surface" tab, and in the area labelled "Uti" (utility) select a "Divide Surface" component (to the upper left of the "Util" lable and place it in the canvas window.
Connect the "U" and "V" numerical sliders to the "U" and "V" input ports of the "SDivide" (divide surface) component, and also connect the "Srf" component to the "S" input port of the "SDivide" component, and see the points generated along the saddle shape. The grid consists 11 spaces along each side of the surface as defined by 12 points (there's always one more point than the number of spaces).
Similar to Part 1 and the previous linear array example go to the "Vec" (vector) tab and place a point to point "Vec2Pt" vector component in the canvas window.
Connect the original "Pt" component that was connected the point located at the center of the cylinder to the input port "A" on the "Vec2Pt" component, and connect the output port "P" of the "SDivide" component to the input port "B" on the "Vec2Pt" component.. Note that the double line connecting port "P" to port "B" indicates a list of points coming off the saddle shape rather than a single point.
Now go to the "Trns" (transform) tab, and from above the "Euclidean" area add a "Move" component (the orange arrow symbol between two white dots). Attach the "Geo" component to the input for "G" of the "Move" component, and attach the output port "V" from the "Vec2Pt" component to the input port "T" of the "Vec2Pt" component. When completed, the cylinders will map to the U V points on the saddle shape. They will also bisect the saddle shape similarly to how the original cylinder is bisected by the point on the ground and at its center.
Upon closer examination, however, the cylinders are perpendiclar to the ground plane and not to the surface locations where they are mapped. In order to address this we can rotate them from their current orientation to the orientations of the surface normals. First, staying witin the "Trns" tabl, select the down arrow in the "Euclidean" and then the "Rotate" icon that has one vector rotating towards another one with input ports G, C, F, and T. Next, returning to the "Vec" tab and the icons that can be viewed by selecting the down area labelled "Vector" on the right hand side, add a "unitZ" vector to the canvas window as highlighed in green below.
To activate the rotation of the cylinders, connect the output port "G" from the "Move" component to the input port "G" of the "Rotate" component, connect the output port "P" from the "Subdivide" component" to the input port "C" (Centers of rotation) of the "Rotate" component, connect the output port "N" (surface Normals) to the input port "T" (the vector to rotate To) of the "Rotate" component, and connect the output port "V" of the "UnitZ" component to the input port "F" (the the vector to rotate From) of the the "Rotate Component".