In conjunction with a form-finding exercise in Kangaroo, I was searching for a way to render a single, closed mesh as if it were an inflatable form made of individual, stretchy panels – think soccer ball. Since I was already starting with a mesh, I needed something that could extrude and manipulate individual mesh faces normal to the face centroid with a certain degree of flexibility. I couldn’t find much online, so I put together a super basic, simple grasshopper file. Aside from some of the typical drawbacks with using meshes in Rhino (which have actually become a lot more workable in Rhino 5), I think it’s reasonably clean.
Download here: http://gracefulspoon.com/downloads/EXTRUDE_MESH_FACE-NORMAL_FINAL.gh

Parametric facade apertures on swooping surfaces are out, parametric emoticons are in. A quick experiment using the image sampler node in Grasshopper to parametrically control the relative ecstatic to furious expression of an emoticon. A sampled pure white pixel on the original background image produces full-mouthed, googly-eyed happiness, while a sampled black pixel will unleash furrowed-brow, pursed-mouth rage. Grayscale pixels produce the range of conflicted emotions in between. Grasshopper definition can be downloaded here, works with any image, but simpler images with fewer colors tend to produce more legible results.
]]>


I’ve used genetic algorithms for form finding with a previous project, and that time I was using a tenuous connection between catia, modeFrontier and Robot. So I was excited to see grasshopper begin to natively implement an evolutionary solver with Galapagos. As an initial experiment I started with a classic, something simple – I wanted to find a tessellated form that would enclose the maximum volume using the smallest surface area. I’d like to think that this would produce something unexpected, but it’s pretty much the definition of a sphere. I set up the parametric model to wiggle all over the place with various triangulated densities and differing number sided polygons at each joining segment. My hypothesis was that the form would tend toward symmetry and evolve into the aforementioned spherical shape. I believed that the polygons would tend toward the most sides possible to more closely approximate a circle, later generations evolving away from a triangle toward an icosagon. (Just like on Flatland!)
A couple of observations: Galapagos pretty quickly found the overall shape – smaller radii at the extremes and bulging in the middle – the beginning of a sphere. However, while it tended toward bilateral symmetry, it kept a kink in the first segment that prevented the shape from being perfectly symmetrical. I think the solver got stuck in a local minimum as opposed to a global minimum. Perhaps with a higher mutation level or letting it run for a longer amount it could have jumped out of this. On further checks I found that it was correct, after 30 generations and over 2500 iterations, the surviving croissant-like shape of the optimal designs did have a better SF:V ratio than a perfectly symmetrical design. Perhaps it had something to do with the setup of the parametric model or the way the facets resolve themselves at the extremities?
But in general my hypothesis was proven correct. Which leads to the initial problem with Galapagos. There are a lot of opportunities with this type of experiment and people more clever than me will surely do them, but when you can only solve for one objective it becomes difficult to create truly complex solutions. For instance, with my surface area/volume problem there is only one true pareto solution. Eventually Galapagos will find it, or with enough time and a calculator I could calculate this myself. There is one single, optimal solution, it’s just hidden somewhere amongst a number of parametric sliders. Unless you start getting into multiple, competing objectives, then the pareto point becomes a curve and there are multiple valid solutions, each one involving certain trade offs and a criteria for selection. Say you wanted to find a form with the minimum srf area:volume ratio, but also that form had to have the fewest structural members, or provide the most shade on June 21st, or spatially provide the most potential revenue stream for a project stakeholder. That’s when it gets really interesting and opens the possibility for a design space that includes high performing, unexpected results. It’s a great start, and I can’t wait to see Galapagos evolve.
Download the grasshopper definition for version 0.8.0004 here: http://gracefulspoon.com/downloads/Grasshopper_GALAPAGOS_TEST.rar
]]>
Spent the better part of the day playing around with the incredibly cool Kangaroo, the live 3D physics engine for Rhino, developed by Daniel Piker. Images are poor substitutes for showing just how fun this tool is to experiment with, so to get a better idea of the program’s potential see Daniel’s great vimeo page. The above images were part of a series of experiments in dropping a series of cubes through an obstacle course, and pulling points around on a 3D space frame. They were based on tutorials found at the always helpful and inspiring Kangaroo google group page.


concept
The gesture of the “i want you” poster was extruded and placed in a cylindrical shape for maximum exposure. Each arm becomes a customizable exhortation to vote and the end cap can be written and erased with a dry erase marker. The gesture is returned by the prospective voter who has to reach into the arms and place the completed form inside the unit.

The “Curve CP” node in Grasshopper allows a curve to act in a similar manner to a point attractor, but checks the distance for the closest points along the entire length of the curve as opposed to one single, solitary point. Here, the curves are generated from a text object. It basically becomes multiple attractor curves, something that could be used for super graphics or possible a glazing frit pattern. Things get a little hairy in the grasshopper definition (see below) when you start getting a lot of letters, so that needs to get resolved for this to work with an entire sentence, or anything longer than four letters. A script font that creates one continuous line would work perfect, but is something of a cop-out, so in the meantime I may have to consult the pros on the grasshopper forum.

A simple test based on Sanghoon Yoon’s Grasshopper definition for using the new image sampler node, I swapped out a text image for an image image, because, well I just like fonts and 3D I guess. One of the things that’s cool is that the image is “live,” so as you change the text, the grasshopper definition updates. And of course you can also parametrically control the size of the pixels, the multiplication of the heightfield and the overall size of the surface. To get a random color on each polysurface, I modified Dale Fugier’s script located on the rhinoscript wiki page to include a function to assign the object color to the material color so it will render out in vray. See grasshopper definition and code below:
Edit: Added Link to download grasshopper definition and source image file. Click Here (zip file).

From Dale Fugier’s ObjectColor.rvb:
Sub SetObjectColorRandom
Dim objects, red, green, blue, i, material
objects = Rhino.GetObjects(“Select objects for randomly color change”, 0, True, True)
If IsNull(objects) Then Exit Sub
Rhino.EnableRedraw False
For i = 0 To UBound(objects)
red = Int(125 * Rnd)
green = Int(200 * Rnd)
blue = Int(180)
Rhino.ObjectColor objects(i), RGB(red, green, blue)
Call Rhino.ObjectColor (objects(i), RGB(red, green, blue))
material = rhino.AddMaterialToObject (objects(i))
Call rhino.MaterialColor (material, RGB(red, green, blue))
Call rhino.MaterialShine (material, 255)
Next
Rhino.EnableRedraw True
End Sub

Detail from my final studio presentation of one symbiotic cell. See also a sankey diagram of the flows of energy through this system here.
]]>
Single Parametric Cell from John Locke on Vimeo.
Multiple Cell Network from John Locke on Vimeo.
]]>