A projection mapping installation based around visualising the concept of phosphenes through code. Drawing from Laurie Anderson’s spoken word piece where she describes them as “kind of eternal, plotless, avant-garde, animated movie. Or maybe they're just screensavers. Holding patterns that just sit there, so your brain won't fall asleep.”
produced by: Adrian Everett
My starting point was the concept of phosphenes, which are the rings and other shapes and colours you see when you close your eyes or seeing flashes when you sneeze. I wanted to see how I could replicate that using code based on what I learnt over the course of the module.
Concept and background research
I wanted to create my own visual metaphors around this idea, using rings and other shapes and trying to emulate the way that phosphenes tend to multiply and move inside your eye. I wanted to incorporate other parallels to these and build on the idea Laurie Anderson is getting at of a plotless film, which lead me to watch to incorporate video, the clips are people close to me - the faces that would flash up inside your eyes when you haven't had enough sleep. I created a static effect, playing on the idea of "prisoners cinema", morphing these fleeting glimpses of faces and memories through the static and playing with the idea of screensaver style graphics with bright flashes of action.
Old school screensaver graphics were one of my visual reference points, both in style and also for their similarity to creative coding projects. I used a neon colour palette that is reminiscent of phosphenes, to bring the scenes. In each different scene I used one face on each cube as a ‘hero’ panel to pull a highlight out of the visual noise.
I used the shapesFromPixels homework as a base for the video scene, adapting it from taking a webcam input to playing a video file. I mapped the video brightness to the alpha channel of the grid to bring it through and interspersed with static by randomising the alpha channel. The videos are scheduled to appear seemingly at random by changing between static and video if it fell within a certain timeframe. To create the backing squares with the static waves, I mapped a sin wave to the alpha channel and multiplied this by the iteration on the horizontal axis. I divided this by a randomised number up to the maximum width (600) to add an element of static to tie it into the scene.
For the second scene, I began with the pulsatingRings project as my starting point, experimenting with ways I could make it feel as if the shapes were swarming in an organic fashion, consuming your field of view. I did this by translating the coordinates to random values, and setting the shapes to pulse in radius and alpha channel. To add visual interest, I changed this based on the timeRunning to mix the colours with .getLerped and eventually switch shapes from circle to square to triangle. Then I used a single pulsing shape alongside as a highlight that increases in size and fades away.
The final scene I wanted create a series of flashing and overlapping shapes to give them impression of the the flashing shapes and lights you see inside your eyes. I built from something I created for the algorithmic thinking homework as the basis for this, but added in alternating shapes using the same colours and randomising values to create the bright flashes.
One difficulty I encountered was the framerate was very low when video was playing. I found on the openframeworks forum that this was exacerbated running in debug mode so I changed to release mode and set vsync to false, which helped get it running at full speed.
I had an intended filming location in mind when I was coding - I wanted to film this in my parent's currently derelict house (seen below), as this tied in with the idea of memory and the footage used. I would still like to try running this there once we can move around the country more freely.
Overall, I think what I have produced fills out what I was trying to get across with my concept. I had to redevelop my ideas from where I started on my storyboard to make something that was more achievable, but I hope it still communicates and replicates the ideas I set out with.
If I developed this further, there were a couple of points where I would try and smooth the transitions between sections of code - there were moments where I couldn't make the transition eg from circle to square happen at the most opportune time. I would also try and mix the boxes between the scenes up so there was a clearer sense of flow between each of the scenes. I think with a more in-depth knowledge of coding I could have made more organic-like shapes and motion.