Archive for the 'Visualisation' Category

Lipton T.O

This was a collaboration between myself and DigitasLBi Labs Paris to help launch the T.O machine from Lipton. The end result was a digital bar set up at the Marais BHV in Paris. The idea was to build a bar that visually augmented the flavour of the tea as the user was drinking it. I was commissioned to create a series of realtime animated simulations that were inspired by flavour, story and colour of 10 of the teas.

Here is the video documentation:

And here is a short video showcasing the graphics a little more:

The animation, effects, normal calculation etc took place entirely on the GPU. This allowed me to procedurally animate scenes containing over 1 million particles/geometry points, to use a variety of shading and post processing effects (including realtime shadows), to draw to a canvas of 4920 x 2160 (4K + 1080p combined) and to maintain a solid 60fps. It all ran on an Alienware PC with an NVIDIA GeForce GTX 980 graphics card, and, as usual, the app was programmed using C++ and openFrameworks.

Here are a few screenshots taken at various stages of the project:



Bipolar is the result of a short experimental journey into visualising sound using computer vision. The initial idea was to capture a mesh of my face in realtime, and warp it using the sound buffer data coming in from the microphone as I speak. Initially I explored ofxFaceTracker but had trouble segmenting the mesh so moved to the Kinect camera. I had a rough idea of how the final result might look but it turned out quite differently.

As this intense spiky effect began to take shape I realised this would be perfect for the chaotic and dark sound of Dubstep. Thankfully I know just the guy to help here. I met the DJ and producer Sam Pool AKA SPL at the Fractal ’11 event in Colombia. He kindly offered to contribute some music to any future projects so I checked out his offerings on SoundCloud and found the perfect track in Lootin ’92 by 12th Planet and SPL. This, of course, meant I would have to perform to the music. Apologies in advance for any offence caused by my “dancing” 🙂

This was build using openFrameworks and Theo Watson’s ofxKinect addon which now offers excellent depth->RGB calibration. I’m building a mesh from this data and calculating all the face and vertex normals. Every second vertex is then extruded in the direction of it’s normal using values taken from the microphone.

The project is still at the prototype stage and needs some refactoring and optimisation. Once it is looking a little better I will release the code.

New Vimeo Channel – Tech Art

I love Vimeo. Along with Twitter I find it to be one of my most valuable sources for creative inspiration. Also the constructive community is far far away from the usual FAIL/WTF/LOL/First/Fake types you regularly encounter on YouTube.

On my travels I’m constantly adding interesting videos to my favourites (or ‘likes’ as Vimeo calls them). There are so many incredibly inspiring artworks in there that I’ve decided to create a new channel – Tech Art – to showcase the best examples of creative code. It is a collection of pieces that fall into the categories of installation art, projection mapping, music/data/math visualisation, augmented/mixed reality, multi-touch, physical computing and anything else that utilises technology in a creative manner.

If this type of work floats your boat, then have a look here and don’t forget to subscribe if you have a Vimeo account.

Prisoner’s Dilemma Visualisation

I recently read Richard Dawkins’ The Selfish Gene and was fascinated with his discussion of Prisoners Dilemma (PD), a classic example of game theory, in relation to evolution. On the lookout for inspiration for my first Processing project, I decided to use this idea to create a visualisation of the game in progress.

First a brief explanation. PD involves two players and a banker. Each player has the choice to either cooperate or defect and are awarded points for the various outcomes of the game. If they both cooperate they each get 3 points, if they both defect, they each get 1 point and if one cooperates and the other defects, the defector gets 5 points and the cooperator gets no points. Iterated PD is where this game is played a number of times. The winner is the player with the most points after the last game has been played. For more detailed information click here.

Within my Processing sketch, there are 8 different “animals”. Each uses a classic PD strategy. They are as follows:

Green = Tit-For-Tat – Always begin by cooperating then copy the last move of the opposition.
Blue = Tit-For-Two-Tats – Like Tit-For-Tat but the opponent must defect twice before the player retaliates.
Red = Always Defect.
Yellow = Random. Each play has a 50% probability.
Purple = Always Cooperate.
Turquoise = Grudger – The player cooperates every move until the opponent defects once. The Grudger defects every move after this.
Orange = Naive Prober – Tit-For-Tat but with random defection.
Grey = Adaptive – Starts with c,c,c,c,c,c,d,d,d,d,d and then makes each choice by calculating the best average scores for defection and cooperation.

Each time two animals come into contact with each other, they have 40 games of Iterated PD. The scores of these games are gathered and once an animal scores over 250 points, it reproduces. Each animal is given a limited lifespan at birth which depends upon the amount of animals. As the amount goes up, the given lifespans decrease. This “disease” avoids overcrowding by limiting the population to 600-800.

Click here to see the full size video on Vimeo


This visualisation differs from the original experiments in that the games are not played in an organised structure but through random interactions. However, the results are quite similar to reports from the original scenario. The more negative strategies, “Always defect”, “Random Prober” and “Random” are always the first to go. These are usually followed by “Always cooperate” and “Adaptive”. The last three “Tit-For-Tat”, “Tit-For-Two-Tats” and “Grudger” (who always cooperate with each other regardless) tend to hold the top 3 positions in a random order.


Flickr Photos