- Categories:
- memory
- Tags:
- face tracking, glass, installation, opencv, openframeworks, pictures, source code
I’ve recently finished up a project in collaboration with a Glass Artist, Agelos Papadakis. We built a structure of 25 glass neurons the size of a face and chainded them together in a 3x3x5 meter sculpture. We had 2 cameras hidden in the piece tracking peoples faces and a projector then creating visualizations of the recorded faces resembling something like a cloud of neurons firing in different patterns. We presented it first in Edinburgh at Lauriston Castle’s Glasshouse, and then at the Passing Through exhibit in the James Taylor Gallery in Hackney: http://jamestaylorgallery.co.uk/exhibitions/2009/03/passing-through.html
It’s a bit tricky trying to film the piece since it uses projection onto glass. Sadly I’m left with only a few images that try to portray what went on.
Here’s the code, http://ccrma.stanford.edu/~pkmital/share/Memory.zip It makes use of the openframeworks library so you will need to be familiar with how to setup an XCode project with the openframeworks library if you plan on using it.
The original idea was to use glass balls so that’s why all the code says glassBalls instead of say glassNeurons. If you manage to get it running, press ‘d’ to see the live video input. As it collects faces, it fills up the image buffers with each “glassBalls”. Once all the glassBalls are loaded with images of faces, then the visualization begins. Neurons will “fire” and brightness values of each neuron will go up and down based on Gaussian functions and these values are sent to the brightness shader.
It was a bit of a sculptural challenge placing all the glass pieces within view of the projector, avoiding any other glass pieces or chains in the line of sight of it, having it fit within our view of what we wanted, and also within the amount of time we had. We did the projection mapping by just creating the object with a bounding box. Once you moused over an image of a person’s face, you could drag it around, use ‘-‘, ‘=’, ‘_’, or ‘+’ to resize it. I used a text file to store (‘w’) and read (‘r’) the positions of the faces in case I had to reload the program. I think memo has some MSAInteractiveObject class now which would be 1000x nicer to use.
Just a note as well, I wrote this against of573. I also ended up extending ofxCvColorImage with a few functions so I’ve just included all of ofxCv* files in the project. There may very well be other functions that I’ve edited and forgotten about so please let me know if you have any problems with it. Have a look through and please let me know what you think!