Final Project — Painting with Light

For the final project, I wanted to create something that encouraged movement to initiate a response with processing. My idea was vague to begin with, which allowed me to explore and learn a variety of different concepts in processing whilst I tried to find the response I wanted. For instance, I learnt how to pixelate video feedback, and how to de-pixelate regions with light. Although this response was cool, the video lagged. My main priority with this project was to establish something that was intuitive, fun, and worked as perfectly as I could make it. Having video lag did not line up with these design principles. I decided to aim for having the core components of my project working perfectly, rather than having lots of components that only half work.

Consequently, I created ‘Painting with Light.’ It is a simple interactive installation where the user controls the array of circles painted on the screen with a cube of blue light.

The array of circles take on the brightest value colour. As you paint, the circles that trail slowly fade in a way that replicates painting with water colours. The background changes colour very slowly between different blue/ purple values. Below is a video demonstrating only the gradual background colour change (it is difficult to see in the interaction videos).

These are simple factors of my project that I think are very important in creating the overall, calming experience. I found it interesting that some users would try to make the program react faster by waving the box around sporadically, but the calm nature of the program would make them slow their interaction.

Users could simply pick up the box and without any explanation could play with the program — which was exactly the type of intuitive interaction I wanted.

Painting with Light also tended to encourage a meditative interaction.

This program technically works without a controller and follows the brightest part of the user’s body. However, this does not allow for directed interaction i.e. the painted circles would appear all over the screen and would be difficult to control. Thus, I made a light box that acts as a controller and allows the user to make directed movements. It’s like painting with a brush rather than a large sponge.



The box consists of a small inner box that contains the LED circuit and battery pack. This smaller box is then suspended within the larger controller. A switch is mounted on the outside to conserve battery power.

(The controller circuit)

To keep the circuit neat, I kept most of the circuit on the breadboard except for the switch’s resistor, which I soldered and encased with heat shrink tubing. The breadboard has 6 LEDs in parallel, with three on each side so that the entire cube will be lit from within (not just one face). A 9V rechargeable battery powers the circuit.


The exterior of the box is transparent acrylic that I sanded so that it became opaque to better refract the light from the LEDs inside.

The smaller box is suspended within the controller by cylinders of acrylic mounted on three of the six faces. This allows the circuit to remain compact/ unmoving within the smaller box, and and also means the circuitry cannot by easily seen when looking in from the outer shell. I purposefully choose  only cylinders to use as these mounts, as I knew they would be visible and wanted a consistent aesthetic. A small hole is left for the switch in the outer shell. All faces are hot glued together along the box seams, except for the top face of the interior box. I simply taped this shut (securely) so that the circuit could be easily removed and recycled at the completion of the project.

With its blue glow and circular mounts, the box reminds me of energy sources in scifi movies e.g. the tesseract in Thor. I like this reference, because it makes it fell like there is a subliminal force within the cube that is allowing you to generate a response on the screen.

 (The tesseract in Thor — source)



The comments within the code describe the different elements I used. The code’s main components reference processing’s brightnessTracking example (see examples within processing) and array example. James showed me a technique to generate the slow change in background colour. Numbers are randomly generated, but at increments, like reading values along a gently curving graph. These numbers are then mapped to the range of colour values I want for r,g, and b. I was also having some trouble with the web cam being recognised by processing, so I included code that registers and prints the cameras available, before using the first one to source pixels (which should be the web cam). 

Processing CODE:

One of the three most difficult components of my project was trying to simplify my idea to its core components. I was overly ambitious with my first concept, but am very happy that I simplified to a more manageable project. The result was simple, yet was successful in the design elements I wanted. 

Another area of difficulty was making the circuit stable and working. I enjoyed soldering, and learnt a lot about making a good circuit whilst creating this project. I had to do a lot of debugging to finally get the circuit to work, but it was fulfilling as it made me realise the importance of soldering correctly and ensuring the integrity of all elements. The final controller was able to be thrown around by participants yet still remained functional, which was exactly the type of integrity I wanted to ensure. 

Finally, my last area of difficulty was figuring out the best way to code what I wanted to achieve. I still have a lot to learn here with respect to the coding process. Pierre gave me some really helpful advice when I asked him how to code a certain element. He basically said that I should break down what I am trying to achieve into its simplest components e.g. if I wanted to pixelate something, I could also say that I want to break an image up into individual boxes, where each box is a single pixel taken from the range of pixels that would otherwise inhabit that boxed section of the image. This type of thinking is something I hope to manifest in my future coding projects.

For a future iteration of this project, I would like to include RGB LEDs in the controller so that the colour of light can be changed, like choosing colours from a palette. This would require an arduino be used, with an XBee unit installed within the controller to enable the controller to remain wireless. I would also like to have this project work in 3D space, so the user moving in the z plane would also create a response in the processing z plane. 

Leave a Reply

Your email address will not be published. Required fields are marked *