CHROMAtex GH Definition

CHROMAtex GH Definition

The following code was developed by SOFTLab_nyc, who worked on an installation called CHROMAtex which opened at the Bridge Gallery on August 26th, 2010. The piece is comprised of over 4400 separate colorful panels. It is being made possible by all of our kind and generous friends who have donated to our Kickstarter page

Follow along, watch for updates and donate if you feel like it! There are still plenty of spaces for names and messages.

So far the list of communal GH thanks extends to the following (the definition’s not quite done yet… there may be more people to thank in the end):

Chris Chalmers of BIOS : Unrolling Surfaces in Grasshopper…

@ [ u t o ] : Mesh Analysis and Utility Component

Giulio Piacentino : Grasshopper tools in C# : txtLines

Damien Alomar : JPEG file output consultation

Here is the Grasshopper definition that we have been tangled in the past few weeks. By no means is this the most efficient way to go about a project this large but since we basically had to start printing and cutting right away we went with the first thing that worked. It runs a little slow but after we broke the mesh up into separate chunks things became more manageable.

Too busy right now with production to explain everything step by step so I will just outline the basic steps that we (Troy and I) took to tackle the monster.

To read more click on read more.


First we broke the mesh into smaller chunks to work with

Then we needed to index the order of the mesh faces, since it was built in Maya and imported to rhino the ordering of the panels was out of whack.

Next we check to make sure all of the mesh faces are pointed in the same direction to ensure that the color is unrolled properly.

Then to unroll the mesh faces we used a scripted unroll component we found at

This Definition was develoed by
Chris Chalmers of BIOSDesign collective ( and Ripon DeLeon of California College of the Arts, with help from Andrew Kudless of Matsys (

They are all stacked on top of each other now at the origin so we set up a simple 8.5″x11″ grid and move the panels in a more printer friendly fashion.

Next we need to map the color of each mesh face to its unrolled panel.

Now the challenge was how to label the panels, we needed to know the adjacent panels for each panel but the mesh was in no apparent order.

First decompose the mesh into all of its faces. Then decompose the face into its numbered sides and use this to item cull the vertices of the mesh. This makes sure that your list contains all vertices in the (0 or 1 or 2 or 3) positions and is in the chaotic order of the mesh. Next check to see if the vertex in position 0 matches any vertex in position; if vertex 1 matches 2, vertex 2 matches 3, vertex 3 matches 0. Do this by first getting the vector length of each vertex position and checking for equality using cross reference as the option.

Next to sort through all of these results make 2 lists one for the panel in which you are testing and the other to match the panel that is adjacent to it.  Set up a series that counts the number of faces in the mesh and duplicate it by the amount of faces.  Set up 2 of these and turn off retain order on 1 of them.  Finally duplicate the unrolled faces by the same amount. So all together there are 3 lists; one of the unrolled faces, one that counts (0,0,0,0…1,1,1,…2,2,2…etc) and one that counts (0,1,2,3,…)

Then cull these lists with the vertices that were cross checked. Do this for each vertex position. Now the lists are reordered to correspond to each vertex (list 1) with its appropriate number (list 2) and the number of the face adjacent to it (list 3). Next graft lists 2 and 3 so that they can be matched up for labeling. Take the wire-frame of each face and cull the position that was tested. i.e. position 0 = true, false, false, false position 1 = false,true,false,false.

Test to see if it works by placing text on the corresponding sides of each panel.

Add Tabs via offsets and lines

The piece calls for a special detail on the ends and connections so we isolated the end panels by searching to see what panels only had 3 neighbors instead of 4.

Repeat for other end

Draw and position edge detail on tabs.

And finally add and orient name and custom message of each pledge.

Now print and cut until your colorblind!

And finally here is the grasshopper file

and the Rhino file

Here is the Grasshopper definition that I’ve been tangled in the past few weeks. We are working on an installation called CHROMAtex that is set to open at the bridgegallery on August 26th. The piece is comprised of over 4400 separate colorful panels.