More selected projects

Particle Fun Times

This was a project I did based around the idea of learning a particle system. I wanted to create something intially based on natural motion and colours found in nature. Each scene was loosely based on seasons. The final result became more experimental as I found I enjoyed playing with colours and forces. I learned a lot about code structure and custom classes from this project.

produced by: Zoë O'Shea

For this project, I wanted to focus on expression of the seasons. I liked the idea of “nature” and using different colour palettes. I tried to achieve this by calling each one of my scenes after the seasons. For 'Spring', I chose pastel colours and tried to create movement that was evocative of growth and forward momentum. I felt as though this should be the opening scene, as often spring is the beginning of new cycles. For 'Summer', I tried to capture the idea of summer fireworks, which is traditional in many countries. The background of the image was darkened to create a night-time sky and the colours were bright and contrasting. The force exerted on the particles was increased but short lived like explosions. 'Autumn' is a season where we transition into a darker period in the year and everything begins to change. The weather becomes damp and movement is often slowed by this. The growth from the start of the cycle is now turning red and falling away. To represent this, I reversed the direction that the particles travelled, as well as keep their lifetime trails. Their trails signify the falling of the leaves and showers of rain. Finally, for 'Winter' the sky has turned a light purple, as we can sometimes see in early, hazy mornings. The colours are from a cold palette and the change from circles (to lines of particles) creates a movement like snow and sleet falling erratically from the clouds.

Originally for the project I wanted to change the particles into image sprites, to exert more control over the piece and be able to express the ideas of the seasons more realistically. For example, I wanted to use images of actual cherry blossom petals to simulate them falling from trees in spring and snowflakes in the winter. However, I found that as I was still learning to utilise and understand the particle system I chose, issues relating to frame-rate and speed had developed. As a result, I felt it was better to use a style of expressionism rather than literal representation.

As an extension of my learning curve, and change from the literal to metaphorical, I also simplified how the particles interacted with each other. Initially, I had hoped to produce a force that could affect each particle separately within a certain range of values. The results of this experimentation is still located in my code. However, at points where I wanted to affect the particles uniformly, I encountered significant reduction in render quality.  Having found it difficult to alternate as effectively (while retaining frame-rate, etc.) between uniform and individual forces, I favoured uniform application, and chose to develop the work within my own constraints.  

Ultimately, I am happy with what I have achieved as I learned a great deal regarding large code structures and the creation of particle systems in openFrameworks. This is the largest codebase I have dealt with and initially the idea of creating a particle system was very intimidating. The greatest contribution to my code was from the book, “Mastering openFrameworks: Creative Coding Demystified,” Chapter 3 by Denis Perevalov.  The code provided, as well as the literature in the book really helped me to understand why the code behaved as it did and how I could develop it into something personal. In conjunction with this, I used the “Scene Switching” template that Theo provided to help the piece the work together and have it create interest by switching scenes independently of the user. 

References
  • Chapter 3 of "Mastering openFrameworks: Creative Coding Demystified (2013)", by Denis Perevalov; and the accompanying code 03-Particle/04-ParticlesGUI.