More selected projects


SEA~NES is a computationally created seascape inspired by the recursive functions in maths and nature.  
produced by: Kerrie O'Leary


As with all of my projects this semester, my inspiration is the sea. With CoVid ruling out travel, I wanted to recreate a seascape, with clear water and clear skies. Often people find it relaxing watching time-lapses of landscapes and the ocean which I've tried to mimic here with the movement of the moon and sun and how they effect the backdrops. I chose to project my scenes on to rectangular boxes to go with the panoramic style. The ebb and flow movements of the sea creates and the coral reef are soothing.

Concept and background research

Margaret Wertheim and her sister Christine's work influenced my approach. Using crochet, they create coral reef sculptures out of crochet. Their work reminded me of the beauty of math. Without the use of sine, cosine, recursion and stochastic fractals my coral reef and sea creatures would be static.

Margaret Wertheim in the Föhr Reef, Museum Kunst der Westküste, Föhr, Germany, 2012

screenshot of coral reef detail achieved with recursion



Initially I had planned to import sketches and drawings of sea creatures and have them moving in the background of the scenes but when experimenting I decided that the generative design looked better alone.
I used two subclasses which I feel were necessary for the more complex scenes. The multiple sea-creatures in the opening and closing scenes are created with an array of a sea-creature class. These creatures were drawn using recursive functions which helped to reduce the amount of code required to create the level of detail in the sketches. The other subclass used a star-function that was used by two classes, the day and night surfaces.

These 'octo-fish' were achieved using a recursive function that uses stochastic fractals/branching to create their tentacles. The swimming like motion is created with random scaling and rotation. Below, I have included an image of them in detail. They are created at random points each time and once they swims to the edge of the frame it reproduces. Often they disappear and come back, this is achieved with colour lerping on the dark background. As the number of creatures increases the surface begins to look like an abstract painting.

Detailed shot of the recursive sea creatures

As the moon rises, the sky goes a darker navy. The shooting starts disappear as they fall closer to the sea. Along the horizon, noise is used to create small waves. These waves can be seen best when the viewer is looking head on at the surfaces. As the moon sets, the sky becomes brighter...

The sea-surface is created using a 2D array drawing ellipses. The colours are chosen at random from two colour palettes, day and night. After the first scene this surface uses time to switch between night and day in sync with the sky surfaces

As the moon sets the sun rises and as the sun gets higher, the sky becomes brighter. The rotating sun is achieved using the star class and rotates. As with the night sky, there are waves along the bottom of this surface. I flipped both the day and night surface along the y-axis so they join in the middle between the two surfaces that way the sun/moon is visible as the viewer walks around the shapes.

Using a 2D array the tree like coral structures are positioned randomly each time the program is run. Noise is used achieve movement of the sand along the ocean bed. The colour of the water gets brighter as it gets the the surface to reflect the sun shining through. The bubbles emerging from the coral reef were also used with a recursive circle function.


Future development

An idea that I had during this project was to link it to real time, using API keys or switch into different time zones pre-determined by the user. Using the tidal times of local areas is also another idea I am considering for development. Projecting on to life size surfaces would open up the opportunity for human-interaction and with the use of sensors, the user could even 'catch' the shooting stars or determine the direction the sea-creatures swim in.

Self evaluation

I feel the movement in each of the different scenes has worked really well and there is a clear transition from one to the other.  One of the objectives of the brief was to keep the viewer engaged. Watching the sea-creatures move is fascinating. They are drawn at random points each time the sketch is run and often disappear for a few moments and then reappear a different colour as a result of using the lerp function. This function as well as the scaling function really helped to keep the scenes unpredictable. 

With the two sky surfaces, I was conscious not to add too much more movement in case it distracted from the coral and the sea-creature scenes but if I had more time I would have liked to have developed the day sky more. Whispy clouds, flying birds or even a floating hot air balloon on the horizon would add nice depth to the scenes. The night stars could be developed too with disappearing particles following them. When I projected the scenes on to the boxes I was disappointed with the quality of the images on the surfaces. This is a natural occurrence when projecting but next time I would consider projecting on to larger surfaces and perhaps reduce the number of ‘limbs’ the sea-creatures to have the details visible. While all the randomness involved in the positioning and movement of these scene make it very interesting it made videoing it tricky to capture 'the best parts' and is something I will consider for my future projects.


[1] Star Function: Theo Papatheodorou's Week 4 Mandela assignment, this function is used in the star class that is called on in the NightSky scene and the DaySky for the rotating sun
[2] Noisy Loop: Theo Papatheodorou's Week 4-I amended this noisy loop and reduced the steps to create the sea-creatures outer body layer
[3] Sea Surface: Raging Sea, by Jerome Herr for the sea surface
I was inspired by this sketch for the sea surface. I adapted Jerome sketch, removing the noise and looped though a normal 2D array to achieve a similar result. I created a two colour palettes to alternate depending on the time.
[4] Daniel Shiffman: The Nature of Code, Chapter 4, Fractals

Detailed shot of the recursive sea creaturesDetailed shot of the recursive sea creatures

detailed view of the sea-creatures created with recursion