More selected projects

Psychedlic Revolving Doors

Inspired by the 'Revolving Door' example and Saskia Freeke's generative pieces, i developed a projection mapped sequence using rectangles morphing into other forms with a psychedelic twist. 

produced by: Alex Fletcher


This project is a generative psychedelic animation that utilises the rectangle form to transform and morph into more complex structures. 

Concept and background research

I picked the accordian shape which fitted in with my idea to expand upon a previous assignment whereby I re-engineered from saskia's pieces. It was a personal milestone and as a musician i particularly liked using waveforms for animation. 

I wanted to use rectangles that morphed into other forms. With ofDrawRectRounded() i could round the edges!

I decided to represent the shape's four rectangles as their own door. As they rotate together, they morph and combine to form a more complex structure.


Created a function to pass through location, size, rotationY, color and roundness of the ofDrawRectRounded(). I then experimented with movement variables created from the re-engineering assignment, and mapped sin to a localphase variable to separate the individual door movement. As well as animating the rectangles width, height, and rotationY. Combined with adjusting the roundness by a small amount created wonderful effects.

I moved on to the borders for the shape's rectangles with four spread equally to the screen width with my revolving door inside each one. This give a pleasing result. Adding in 90/180 offsets to width/height and using phase - i * ofMap gave me the effect i was looking for.

I coded a timer picked up from David Shiffman's 'Beginners guide to processing'. I created a beginning sequence that had a forward motion and reversed after a certain time. I made if statements running phase and roundness variables to spin and morph the doors one way and then reverse. After some more adjustments i had a 3 minute sequence that had three distinct sections.

Adding another interval timer and linked to a variable to count down every second. With this i made a slow fade out mapping the color alpha to this variable. Added a boolean to finish all running code.

I took the idea of combining two ofColors to lerp from the pulsating rings example we did in class. I liked this use of color separation.  I varied the color schemes in sync with the sequenced changes.  With the border rectangles i use a combination of ofMap with cos, sin and ofSignedNoise to cause a strobe effect.

For the door lights i used the movement variables on a custom atom shape i had created to be used for a particle system. 

Similar to the thought processes to the main scene, i made the atom function spin within itself (made of a 6 rotating rings) and mapped its scale to pop in and out in a sequence in a grid of atoms along with color change. This achieved the desired effect.

In piMapper i set two fbos (door sequence and door lights) and uv wrapped the shape to the corresponding border rectangles in main scene and two triangles inside the door lights FBO square.

Future development

To expand on this i could create further sequences that tell a story. Using particle systems and vectors i wish to suggest to the viewer that the door sequence opens to a new dimension. This also feels like a natural progression to more advanced coding techniques. 

Self evaluation

I had spent i long time working on other sequences that used more advanced techniques (particle systems) but realised this was a step too far at my level of experience. 

I decided to focus expanding what i could do with the previous assignments. This approach worked for me to be able to take elements i liked from each and adapt to conceptualise my initial idea for the project. 

I noticed there were a couple of bugs during the popup exhibition.  Each cycle was silightly different, for example the ending should be round shapes but for one time it did not do this. Possibly to do with my timer vectors in piMapper?  

I am overjoyed by the final result and the progress has cemented a passion to further develop as a creative coder.  


In Class Examples: Revolving door and Pulsating RIngs

Learning Processing A Beginner's guide programming images, animation, and interaction by David Shiffman