slicing things up

I've been playing with this idea for a while and finally spent a few grueling hours with an exact-o knife in order to knock out a little proof of concept before I spend the time and money having a bunch of material cut out via CNC or something.  This process involves sampling "slices" of a depth map at fixed intervals and using each slice to create a vector profile.  The resulting output is a set of long vector shapes that collectively approximate the original model and can be rendered in any size and from any material (well, any flat material).

This set of images shows the initial depth map, an example of the vector output from my processing sketch, and a paper prototype.

The first few paper prototypes look good and I'm confident this process will scale up very well.  Imagine a 20 foot wide 3d wall-scape made from stained birch plywood strips, connected vertically by steel rod.  If you're looking for some stunning artwork for your home or business then look no further!

This whole idea started with a topological map of mount St. Helens I found online.  Soon after that I started looking for methods of generating depth maps so I could use any arbitrary 3d geometry.  As luck would have it, rather than having to familiarize myself Blender I found a tutorial video for faking depth of field in SketchUp which works great as a way of creating depth maps.

projection mapping - augmenting detailed surfaces

After tackling projection onto rectangular surfaces, the next step in this process has been to register a projection with a complex surface.  In this test, I used a letter press print by Colleen Romike.  The print is a pangram and contains many highly detailed shapes which provided a nice test for this process. 

I took a single hand-held reference photo without paying much attention to the lighting, then did a bit of processing in photoshop to create a mask of the letters.  The rest of the registration is taken care of by my projection mapping code and some simple behavioral logic to illuminate the individual letters.

poster mask

The result was actually much better than I was expecting.  With more attention paid to the reference photos, this process should be able to yield stunning results with very little time and effort.

connecting lots of things

Quite some time ago I built an LED matrix to use with a Maxim 7219 display driver.  The project was just for fun and a good excuse to do some learning.  I dusted it off the other day and decided to hook it up to the internet because everything is better when it's hooked up to the internet. 

The result is what can only be described as a very round-about way of getting some LEDs to light up.  The signal path goes like this:

  1. web form is loaded from a public web server
  2. message is sent via ajax to a php script on the web server
  3. php script connects to a processing sketch
  4. processing sends the message via serial connection to the arduino
  5. arduino takes the message apart and sends a lot of bytes to the MAX7219

On a side note, I've learned that if you accept incoming connections from the internet, you will get a lot of unexpected traffic. As a result  I have to filter for the IP of my web server or I get lots of strange garbled messages from what I can only assume are clandestine hacking groups who are trying to get my top secret documents.


Found these while looking for a sketch in my (slightly out of control) processing sketchbook.  It's sort of like an easter egg hunt when I stumble across stuff like this.  Except I hid the eggs from myself, and then forgot where I put them, and then forgot that there were ever any eggs to begin with.


minecraft in real life

Now that I'm working on projection mapping it was only a matter of time before this happened.  Thanks to my brother for the inspiration, he mentioned that one of the other projection mapping examples looked a bit like a minecraft block.  Once the idea popped into my head I had to give it a try.

There's a piezo element taped to the box and hooked up to an arduino.  The arduino senses the physical impact with the piezo element and sends serial data to my PC.  Processing picks up the serial signal and takes care of the projection and interaction (particles, etc).

As seen on: