More selected projects

Generative Cubes

This video shows my projection mapping submission for the end of Term 1 Creative Coding assignment for Goldsmiths Computational Arts programme.

produced by: Sarah Cook


For this assignment I wanted to take the opportunity to reinforce some of the key coding concepts that we have been learning over the past few months. I decided to focus on code that we explored during weeks 2-4 including Generative Triangles, Bouncing Ball, Breathing Wall and Magnetic Grid. Each of my scripts are based on adaptations of these source codes.

Concept and background research

I decided to use the geometry of the shape as a source of inspiration for my project. I wanted to include square elements in each scene to compliment the cube, and experimented with designs such as grids and spirals. The first scene in the video generates 50 random size and color rectangles that float around the shape. I think the use of ofRandom makes it a bit manic and I would probably use a more gradual color change if I were to do it again. The second scene shows spiralling ellipses that use the ofGetLerped function to gradually change colour from red to blue depending on their proximity to the centre. I think this scene is much more visually effective. The third scene shows two spiralling squares gradually coming into view. I used the alpha color value to create the illusion of a trail. I think this scene could do with speeding up, but I like the final effect that makes the cubes look like power generators. My final scene shows a bouncing ball gradually growing in size inside a cage. Upon reaching a certain size, the angles of the grid rotate towards it which was supposed to create an illusion of the cage breaking. My initial intention was to make a bird rather than a ball but I was unsuccessful. 


The coding elements that I used include nested for loops, vectors, ofTranslate, ofMap, if statements and various data types including int, float and bool. The main challenges I faced was getting to grips with the ofxPiMapper add on. I have found many aspects of openframeworks challenging due to the lack of documentation but I think it's developed a good sense of teamwork and community amongst the course as we rely on eachother to explore and share solutions.

Self evaluation

Overall I don't really like the final outcome. I think the aspects that worked well are the geometry and the reflections seen in the final video. The process definitely helped me to gain confidence in learning covered during term one, however I would have liked to have been a bit more ambitious with my scripts. I think I gained confidence with each FBO source but should have made more to see how much further I could develop it.

I also found after gaining access to a projector and trying my script out on real world shapes that some of the initial designs weren’t as visually effective. I had to change some of the colours and sizes in order for the designs to be visible. I also identified errors such as my use of ofGetWidth()/2 to centre my FBO sources. This resulted in off-centre designs that I had to amend using FBO->ofGetWidth().

I also think I approach it too much like a coding assignment and neglected the creative aspect. Seeing others outcome and exploring generative art projections has expanded my perception on the potential of this medium that I think would have been helpful if I'd thought about more earlier on. The area I have struggled with most during term one is algorithmic thinking and reverse engineering. It led to my approach being less planned and more experimental, which limited my ability to direct the outcome. This assignment helped me to identify that as a weakness and is an area I would like to focus on improving during term two. Having gained confidence in some of the core concepts through this assignment, I already feel more confident at dissecting a piece of generative art and identifying the key elements at play.


Theo, Lab Assignments ( Bouncing Ball, Generative Shapes, Magnetic Grid

The Nature of Code, Daniel Shiffman