Introduction: NAAG XY

About: Interdisciplinary Artist

NAAG XY, 2015
14' x 8' x 4'
Gabriel L Dunne
Vishal K Dar
eps foam, plaster of paris, computer, custom software, projectors

This Instructable is a documentation of the process of creating "NAAG XY" by Gabriel Dunne and Vishal K Dar. The sculpture is roughly 14' x 8' x 4', and has a generative skin created by light projections, resulting in an illusion that the form is moving and alive.

We refer to NAAG XY as a neo-sculpture because it sits directly at the intersection of classical sculpting methods within the context of contemporary digital fabrication and optical projection mapping technology.

Vishal and I have been collaborating on ideas that challenge the notion of sculpture as static objects. Over the last 4 years, between Vishals studio in India and my studio in the Bay Area, we've honed a process of across the world communication and collaboration to create works that satisfies these concepts.

For NAAG, it's organic form has its roots in digital software process and classical sculptural techniques, including wax and clay and digital scanning experiments. Later, it is skinned with projection mapped interference patterns. Various parts of the sculpture are illuminated dynamically and appear to move independently as if a form had coiled onto itself.

NAAG XY is featured in the exhibition "NEAT" : New Experiments with Art and Technology, an exhibition that is open at the Contemporary Jewish Museum in San Francisco, from Oct 15th 2015 to Jan 17th, 2016.


Interview with Vishal and I about the installation in the CJM:

Step 1: Origins

The form was the result of 3-months of work with Vishal and I in his studio on the outskirts of New Delhi, India. We installed the work in a small, abandoned factory space in Mehrauli in late 2011 (supported by Outset India) and then again during the India Art Fair 2012.

We used 2 channels of projection on a 12' form that wrapped itself around a vertical column. On the fringe of the community’s development, the children of this neighborhood had immediately made up their minds about the creature's true nature and the reasons for its appearance. To them it was a wish fulfilling sea-serpent, silent and evocative, which had found abode in this unused space to hibernate during the cold winter months of Delhi. It was the local children of the neighborhood that inspired the name "NAAG", referring to the mythical Hindu serpent deity. We were interested in experiences that trigger dialogue in communities that are untouched by contemporary art and technology. Their chancing upon an object that is beyond comprehension, allows them to put their faith in notions of folk-lore and myth making.

Later, a free-standing 16' version, NAAG Z, was designed to use 4x projectors for a full 360 degree experience, which made its debut in 2015 at the National Performing Arts Center in Mumbai.

Step 2: Modelling

The form originates from ZBrush's organic sculpting tools and further modified in Maya.

ZBrush retopology tools help create a smooth, even mesh that retains enough details without using too many polygons.

Step 3: 3D Printed Maquette

Printing a reference macquette using our trusty LULZBot TAZ-4 in the SF studio. Done in two parts using 3.5mm white ABS. It was useful to print few versions at various sizes for reference throughout the production.

Step 4: Installation Design

For the N.E.A.T. show, NAAG XY utilized the false wall in the Koshland gallery at the Contemporary Jewish Museum as the supporting structure. The form is CNC milled out of lightweight foam. A plaster of paris and muslin cloth surface is applied to its surface, like a mummification. Hooks on the back of the sculpture allows it to hang off the top of the wall.

2 projectors will blend together to illuminate the form with precisely optically mapped patterns.

Step 5: CNC Prep: Splitting Into Modules

The form of NAAG XY is computer milled 1lb EPS foam. The bit we intended to use for milling at Pier9 is 10" long, so we ordered foam blocks in the dimension of 48" x 36" x 10", which is an ideal size for the bed of DMS Router.

The form therefore had to be is split into modules of the material size.

First, a labeling system was created based on z-dept, and each module is grouped in its own layer.

I arrange the modules by hand, balancing ease of assembly with grid like patterns and efficient use of materal.

Once I'm happy with the module layout, I use this MEL script to do the splitting. I select the all the shapes I intend to boolean and then paste this into the script editor. The result are groups of modules.

string $selection[] = `ls -selection`; // current selection as a list
string $orig = "_orig1"; // the object
/* loop through all objects */
string $object;
for ( $object in $selection ) {
  select $object $orig; 
  duplicate -rr; // duplicate both
  string $objs[] = `ls -selection`; // store the duplicates into a variable for the bool op
  polyCBoolOp -op 3 -classification 2 -constructionHistory 0 -name $objs[0] $objs[0] $objs[1]; // the bool op
  parent  $objs[0] final_parts; // parent the new object into final_parts
  select -cl; // deselect all

Step 6: Module Layout

This step is a puzzle-piece process. Parts need to be oriented optimally with no overhangs, because we planned to do 3-axis machining, even though the DMS is capable of 5. The reason for this is mainly for machining speed, and less margin for error.

As we milled the parts, I would move pieces to a new layer in Maya and label it a different color to keep track as parts were completed.

There are clever methods to lay out parts like this. Some of it can be scripted or solved with a space-filling algorithm or solid-body solver. I preferred to do this part by hand so I could be in control of the layout and make on the fly decisions with how the parts were laid out and milled.

Step 7: Creating Solids for Each Module: Maya to MeshMixer

Each module is exported from Maya and imported into MeshMixer

  1. Export each module as OBJ from Maya
  2. Import into MeshMixer

In MeshMixer:

  1. Select All (Ctrl-a)
  2. Convert To -> Solid Part
  3. Analysis -> Inspector
    • Make sure there's no holes, repair as needed
  4. Analysis -> Units
    • Make sure units are correct -- I had to convert Maya's cm's to inches for Inventor
  5. Export -> STL Format

Step 8: Importing STL Meshs Into Inventor and Converting to Base Features

Each STL then was imported into Autodesk Inventor and saved as a new .prt file.

I used the Autodesk Mesh Enabler plugin to convert the mesh into a Base Feature.

This method works best with meshes under 12k triangles in the mesh. As the tri-count goes over 12k, it starts to bog down and you'll need to split up your mesh into modules. Thanks to Xander for the tips in this process.

  1. New Part
  2. Manage -> Import
  3. Right Click on the imported part in the Model Menu
  4. Select "Convert to Base Feature"
    • In the popup, select the "Solid" icon, and "Delete Original", and click "OK".
  5. The mesh is now a solid body.

Step 9: Creating Toolpaths in Inventor

We planned to do a bit of handwork on the finished parts, so we used a tool path that would give us an acceptable surface finish in a fast single pass. After discussing with the amazing and invaluable Vanessa Sigurdson, Pier9's Air Traffic Controller and CNC magician, we came up with an operation that used a 10" ball-end bit with 1" diameter. The majority of clearing is done with a parallel pass, followed by a contour pass to cut the parts out of the block. We used tabs when needed to hold the parts in place.

The final process included:

  • A part setup that was quick to switch out parts. We duct-taped the pieces to a 1" foam spoiler.
  • Parallel Pass
  • 2D Contour Pass

Another huge thanks to Vanessa for steering us on the right CNC "path"! Her help was immeasurable, as it slashed my CNC tool time from hours to minutes. This is one of the incredible perks of working on projects at the Pier9 workshop, there's so many people with a huge amount of experience and knowledge in this community.

Step 10: Foam Materials

We ordered 3 pallets of 48 x 36 x 10" EPS foam blocks from FoamDist in Hayward, CA, shipped to our studio in Emeryville.

Material costs for this amount of foam totally to over $1400 USD. That is a LOOOOOT of foam!

Step 11: Milling on the DMS Router

Foam mills extremely quick. Foam flecks can also easily be cleaned up and harder to inhale than say, MDF. We needed to be very careful with cleanup, as the foam chips completely fill the dust collector after milling just one or two pieces.

The day Vishal arrived to SFO was the same day we started milling. We went straight to Pier9 after his flight got in.

On average, we were milling a 48" x 36" x 10" block in under 45 minutes, allowing us to rip through up to 6 a day. We had about 30 blocks to get through.

The parallel and contour passes resulted in visible tool paths, but we ended up keeping some of the artifacts in the final piece as a reminder of its CNC origins.

Step 12: Cleaning the Milled Pieces

We carefully cleaned out the milled pieces from waste by brushing out debris, and then trimming them out with the bandsaw.

Step 13: Cleanup.

Cleanup took multiple hours per day, and is a big part of the process. Foam dust is incredibly hard to clean!

Step 14: Logistics to the Studio

Loading finished pieces back into my Jeep, and then driving them to the studio.

Every load was packed to the gills! Huge thanks to Stephanie Sherriff for help with shuttling materials.

Step 15: Laying Out Pieces in the Studio

Laying out pieces in the studio in preparation for assembly. We match a layout sheet with a naming scheme. This had to match the layout in Maya to make sure we had all the parts.

Step 16: Assembly Test Fitting

Parts are test fit and labels are applied to stay organized.

Step 17: Assembly

Final assembly is done with with two adhesives.

  • 3M 78 Polystyrene Foam Spray Adhesive -- used for initial placement and tack
  • Loctite PL300 Low VOC Foam Board Adhesive -- applied with a calk gun

Clear packing tape is used to hold parts together as the adhesive cures. Fine edges are cleaned up with sandpaper and Japanese pull-saw.

Step 18: Temp Wall

A temporary wall is constructed from 2x4's to mount the sculpture in the studio, emulating how it will hang at the museum

Step 19: Steel Mounting Brackets

Back at the Pier, I created 1/4" steel hooks that would be mounted to the back of the sculpture to anchor it to the wall.

Their mounting holes are countersunk, and then bent on the metal break.

Step 20: Aluminum Frames

Two aluminum frames are created from tubular and right-angle aluminum which hang on the temp wall. The large steel hooks from are attached with bolts.

Step 21: Cutting Frame Channels

Channels are cut into the back of the foam forms with a handheld hot-wire foam cutter and a wire bent into the shape of the metal frame. The frames fit flush to the back of the sculpture.

The foam cutter we ended up using was great. I used a cutter by Proxxon:

  • Proxxon 27082 Thermocut 12/E Hot Wire Cutter for Free Modelling in Styrofoam

  • Proxxon 38706 Transformer NG 2/S Power Supply

Step 22: Threaded Rods

1/2" threaded rods with bolts and 2" fender washers are used to hold sculpture modules to the frames, and trimmed with a jigsaw and/or hacksaw.

Additional filler and adhesive is applied to the holes after bolts are trimmed.

Step 23: Brackets From Behind the Wall

A view of the brackets from behind the wall.

Step 24: The Containment Chamber

Quarantined in preparation for plaster!

Step 25: Mixing Plaster of Paris

Smaller batches were done because plaster "goes" very, very fast. Maybe about 10 minutes of working time, tops, so smaller batches are much easier to work with otherwise plaster goes to waste.

A good ratio mix between three of us working at full speed was about 2 to 1 water to PoP.

Step 26: Plaster of Paris and Muslin

Muslin patches are cut to various sizes, dipped into the wet plaster, and applied to the foam surface to dry.

This gives the sculpture strength and texture. It also results in a surface that resembles a cocoon, or something with organic origins.

Step 27: Transport Dolly's

Dolly's with casters are fabricated to allow the forms to be moved around while the final layer is applied. Also, this helped the surface to dry evenly.

Step 28: Set to Dry in the Studio Sun

Forms are set to dry and cure over a period of days.

Step 29: Final Cleanup and Fixes Before Shipping

Vishal executing some final plastering touch-ups before the piece ships to the museum.

Step 30: Museum Installation

Forms are arrive at the Museum to be installed.

Working with the amazing CJM gallery team was a pleasure.

Step 31: Projector Installation

The two projectors are installed in stereo for maximum coverage.

Step 32: Projection Surface Texture

The graphics that flow across the surface of NAAG are based on non-periodic interference patterns, called "quasicrystals". Mathematically, they are the sum of waves on a plane. Visually, the geometry is reminiscent of classical Islamic tiling patterns and crystalline structures both mineral and organic in nature. They can be mesmerizing.

The quasicrystals are implemented in GLSL, rendered to a quad texture map, and applied to the mesh UV's. A fun thing about quasicrystals is that they require a relatively minimal amount GLSL code to create something quite interesting.

Load a base example at GLSL Sandbox:

Start by editing line #15 in the GLSL code where it says:

#define N 5.0

Change this number, start from 0 and go up in numbers to explore how these patterns emerge.

Further References:

More Quasicrystals in GLSL Shaders

Another Instructables that uses quasicrystals:

Step 33: Mesh UV Layout

The UV layout is really the secrete sauce in having the surface animate in the way it does. A custom UV layout is done in Maya. This layout defines how a 2D texture flows over the surface of the 3D mesh.

Step 34: Proxy Mesh for Mapping

The projections are done with an optical mapping technique that utilizes manually placed control-points projected onto the surface. A proxy mesh is created with a minimal number of control points (<100 points is ideal). This proxy mesh is created by hand in Maya and imported into TouchDesigner as an FBX.

Step 35: Surface Animation Sequence

The surfance animation sequence is generated in real time, driven by three random noise channel operators in Derivative TouchDesigner v88.

The patch modulates a distortion applied to the pixel shader. Because the sequence is completely random, the sculpture never repeated the same sequence. It will be in a unique state every time a viewer experiences the piece.

An ambient occlusion map is also implemented to reduce light in between the seams of the bulbous areas. All these elements are "tweaked to taste" during installation.

Step 36: Mapping With CamShnapper

Mapping the sculpture is done with CamShnapper, an interactive mapping patch for TouchDesigner based on MapaMok by Kyle McDonald, a mapping technique that leverages optical functions in OpenCV.

The proxy mesh is imported into TouchDesigner for use as control points, and CamSchnapper modifies the camera's POV to optically warp the scene to match.

Each projector requires its own camera, so each projector requires to be mapped individually

Step 37: Mapping, Blending and Masking

Blending between projectors must be done to compensate for artifacts from overlapping textures created from multiple projectors. Occasionally I leave some overlap because it creates a beautiful and strange optical effect.

Blending is done with TouchDesigner's PhotoshopIn texture operator. This works by having a canvas open in Photoshop, and its pixel buffer gets referenced in TouchDesigner in real time as the mask is painted.

As I paint in Photoshop with a Wacom tablet, I can see the mask applied to the sculpture in real time.

Sometimes I colorize the individual channels to isolate which projector I am blending, like in the image, the left side is tinted red.

This is also the step where I clean up any projector bleed that may happen due to projector settling or imprecise mapping. It is useful to have a partner who can walk around the sculpture and know how to point out errors and areas to focus on. When mapping solo, it helps to create an interface on a tablet device so you're not chained to the main computer as the mapping takes place.

Vishal and I work together on this step -- one of us walks around the piece to discover where bleed and mapping errors occur, while another does the masking and blending until it's close to perfect.

There are tools like TouchOSC and Lemur which can control CamShnapper and ToucHDesigner from a wireless tablet allowing one to walk around the sculpture as they map it.

Installation Timelapse:

Step 38: Final Presentation and Auto-restart Schedule.

The computer runs the entire time the installation us up (+3 Months), so an auto-restart that's scheduled nightly clear out its memory to guarantees that the frame rate of the animation will stay at a smooth 60fps.

The scheduling is done with Windows' built-in task scheduler.

Step 39: Finished!

We couldn't have created this piece without the incredible help from Noah Weinstein, Vanessa Sigurdson, shop-staff, fellow A.I.R.'s, and all the knowledge and talent at Pier9, and countless others.

See NAAG XY at the Contemporary Jewish Museum in San Francisco until January 17th, 2016.