Voronoi Cell structure



Here is a definition to create panels out of a 3D Voronoi cluster. Creating the panels needed to make the frame is not so difficult. The nature of the voronoir partitioning is that it places a plane in at the midpoint between two points normal to that line and then trims it, so all of the faces are planar. Flattening that is pretty easy as it just needs to be oriented to the XY plane.

The tricky part is the labeling. The strategy for this can a follow a couple of directions. In this definition the cells are all fully built including every face and then connected with shared faces, rather than all cells sharing one common face. We have found that this is easier to construct as the cells are stable when they are separate and act more like bricks. If you have adjacent cells share a common face it means one cell is partially assembled before everything goes together, it is unstable and hard to work with. The connections are difficult because they are all at different angles. A custom connector could be made, but we have found that tape, custom cut vinyl, or zip ties works best. Zip ties are particularly great because they can be tightened. We have used zip ties with an aluminum structure, depending on the specs they can have a greater strength than the shear strength of small bolts. These structures are amazing light for how much volume they take up, similar to a sponge or soap bubbles.

Download the definition: cell_flatten

This has been used on a couple of projects like the GAUD13 Exhibition below and a heavily modified version for Rise Nation.



Random Color Pixel Blend



Really excited to get started on an installation for Behance’s new office’s in NYC! It will be a very three dimensional piece and we are thinking of a way to tile it with both a defined palette and a random color blend that is made of pixels instead of a smooth gradient. A kind of three dimensional version of Gerhard Richetr’s stained glass window for the cathedral in Cologne. We created this quick sketch to test variations. Its pretty straight forward but there are a couple of tweaks so the random colors don’t constantly update. There is a copy of the code after the jump…

Continue reading

RAB NYC Install

First full scale tests of our installation for RAB Lighting’s Chelsea showroom. The overall structure contains around 70 meters of individually addressable LED strands. The LEDs are activated by sound with various behaviors through a UI that we create in Processing that sends a map of segments to turn and off to a series of Arduino boards.

Light Cloud Prototype

The latest prototype for an interactive light and sound installation we are creating for RAB Lighting’s NYC showroom in Chelsea for design week. Still sorting out the various behaviors, the final install will be a large cluster of these reacting together to environmental sound. More info soon on the opening details!

Minimum Length Joints


We have been experimenting a lot lately with 3D printed joinery for complex piped networks. A major effort has been to find a way to reduce the amount of material in the print in order to minimize the cost.  Naturally, we wanted to automate this process so we developed a script in grasshopper that takes any network of curves and generates  the smallest joint possible at every intersection.   A bit of math made this possible and if you click through you’ll see the logic.

In the meantime you can grab the definition here:  Min_Length_Joint (note: The RemoveDuplicateLines component from Kangaroo is necessary)

Continue reading

Sound Cell Test


We have been messing around with the idea of making a physical structure interactive. In this case it will be through lighting. The physical part of the installation will most likely be made of parts coming out of rhino + grasshopper, but the UI for how it will behave will most likely be in processing. During the design phase it is important for us to not only see various iterations of the structure, but also how it will behave. We came up with a workflow that allows us to quickly export the three dimensional points from the cells created in grasshopper so they can easily be imported into the processing sketch.

Here are the source files for the grasshopper definition and the above processing sketch: cell

In the rest of this post you can find a simplified version of the processing code above that simply regenerates the structure from rhino in processing using a *.txt file.

Continue reading

Sound Structure

Starting a new interactive lighting project and trying to figure out ways to break away from regular structure. Here is a quick processing sketch that just takes simply brownian motion and makes each segment reactive to sound. As the structure grows and the resolution becomes greater you can begin to see the sound travel through the structure. Click continue below for the code.

Continue reading

Colored Surface Panels




Here is the  basic definition we have used in the past to flatten a complex surface into 4 sided panels. The definition creates the tooling to cut out the panels and etch a label as well as a colored mesh that can be printed at any resolution to the paper before cutting. You can find the grasshopper definition here that was used to map the color to the mesh.

This is a much more consolidated version of what was used on CHROMAtex  a number of years ago. The new definition was used to make this model for an exhibition we were a part of at Carnegie Mellon.

Download the definition and a sample rhino file: color_flatten

Custom Panel Details


A lot of the work we do with thin paneled surfaces starts simple with flattening a model, after a lot of work goes into creating prototypes and the necessary details to assemble the piece and potentially give it various material textures or additional assemblies. Automating these details with grasshopper is a lot like producing a drawing with construction lines. The final tooling is created with the original panel shape as the base. Below are two examples of how we have approached these assembly details.


Panel with tabs: Panel_Tabs.zip Click on image to enlarge


X Panel with eyelets:X-panel.zip Click on image to enlarge.