Posts Tagged 'openFrameworks'

Here’s a cheeky little thing I made at a Kinect Hackathon that was hosted by Microsoft last year. The aim was to create a surreal and creative experience that resulted in a kaleidoscopic 3D collage. It was supposed to be a “vase generator” but it ended up being so much more…

I’ve looked into the possibility of adapting the app to be able to create zoetrope-like physical sculptures using a colour 3D printer. The cost of commercial printing made this unrealistic though. I think this could be a brilliant storytelling platform so if anyone can help bring this 21st century totem to life please get in touch.

Oh, and just to clarify, I’m not a huge narcissist and I haven’t gone completely bonkers 🙂

Last train is a project by Ron Arad that I have been involved in over the last couple of years. The piece was commissioned by the diamond company Steinmetz, and inspired by a story from Arad’s youth where, as he attempted to catch the last train out of Naples, he saw a young man scratching an elaborate image onto a train window with a diamond ring. Arad missed his train but felt that he had been rewarded by seeing this beautiful work. This piece is inspired by that memory. It is an interactive drawing tool that allows participants to create glass etchings using an iPad. The lines sketched on the device are sent to a custom built CMC machine where they are recreated by a mechanical fist adorned with a ring designed by Arad.

Many artists were invited to contribute a sketch to this project – Anthony Gormley, Grayson Perry, David Shrigley, Tim Noble, Sue Webster, Richard Wilson to name just a few. Ai Weiwei also recorded a sketch remotely from China. The resulting Glass etchings are exhibited next to the piece in illuminated glass frames.

My role was in this project was to design and build the software that would record the drawings and send them to the separately contracted machine. There are 2 pieces of software, both built using openFrameworks. The iPad app records drawn lines and continuously sends them wirelessly to the PC software via OSC. The PC app then receives this data, formats it and sends it in a timely fashion to the CMC machine via ofSerial (monitoring the machine’s internal buffer to avoid overloading). Finally the machine perfectly recreates the sketch by moving the cast of Arad’s fist and running the extruded the diamond across the glass.

I take a great deal of satisfaction working on tools that allow people to express themselves in new forms so this was a particularly rewarding project to be a part of. To see so many esteemed artists use the piece to produce new work was a particular highlight.

Bipolar is an experiment in using the human form as a medium for sound visualisation. It is an audiovisual virtual mirror that warps the participant’s body as they wander through the space. A soundscape designed by Liam Paton is generated from the presence and motion of the participants. The data from this (in addition to sounds from the user and environment) is used to transform the body into a distorted portrait that fluctuates between states of chaos and order.

This piece has evolved from an experiment I made 18 months ago when exploring the possibilities for using the body as a canvas for visualising sound – have a look here for more information on the technology. Since then it has been exhibited at a number of events including Digital Shoreditch, The Wired Popup Store in Regent St, The New Sublime exhibition at Brighton Digital festival and The BIMA awards. There are plans to install it at several more spaces in the coming months.

Bipolar at Wired Popup Store

Bipolar at Digital Shoreditch

In the time since the original experiment, Bipolar has gone through several changes and optimisations. The biggest addition is the interactive sound aspect which was designed by Liam Paton, composer and co-founder of Silent Studios. The idea was to build a dark, abstract soundscape to compliment the visuals and react to motion, location and distance. He built the software using Max/MSP and I was able to communicate with it from my openFrameworks app via OSC.

Visually, I wanted to retain the chaotic nature of the original but with a few refinements and optimisations. The main issue with the original version was the fact that the extrusions appeared to be fairly random. Each spike is achieved by extruding a vertex in the direction of its normal but the normals weren’t very smooth. This was down to the way in which the depth data from the Kinect is presented. In order to get round this I implemented a custom smoothing algorithm that took place on the GPU (the vertex normals were also calculated by making a normal map on the GPU) which allowed me to create a much more pleasing looking super optimised organised chaos.

Another addition was some fake ambient occlusion. The original piece could seem a little flat in places, so this effect was added to create what look like shadows surrounding the spikes. I achieved this by darkening the colour of certain vertices surrounding the extruded vertex. The results should be visible in the image below.

At the moment all of the mesh processing is tightly interweaved into the application. I intend to release an addon in the coming weeks that will include most of this functionality along with some simple hole filling.

It was great to be invited to speak at DotBrighton (formerly FlashBrighton) by Flash maverick Seb Lee-Delisle. I saw this as an excellent opportunity to talk about getting started with openFrameworks from the perspective of an Actionscript developer. The session was pretty tech heavy but it went well with plenty of questions throughout and lots of positive feedback afterward.

As promised, the source code is now available here. You can also get the slideshow in PDF format here.

If you missed the talk and you’re based in or around London on 25th November, I’ll be doing it again at LFPUG. This will actually be hosted by the digital agency I work for, Skive. Also speaking that night is Filip Visnjic of creativeapplications.net so it should be an interesting evening.

****** UPDATE ******

The video of this talk has just been put online for all to enjoy:

***** EDIT *****

I should point out that there’s a bit of confusion around 18:40. Just to clear up, the main.cpp file is not part of the testApp class. It is there purely to start the program up.