The Start 

Before I dive into my final project, I will be sharing why and how it came to be.

I started this course with a simple assignment of “reflecting an example of generative art that I found interesting” and one of the examples I chance upon was Patrick Huebner “Generative Physics System”. What amazed me was the autonomous particle interactions. Furthermore, the development of this project was coded and compiled using Processing.

Generative Physics Systems


This example shows me the interlink of programming and art, and what we can achieve if we are to combine these two elements. Therefore, I decided that Processing will be my choice of medium.

Exploratory Process


For my first project, exploratory sketch, I wanted to depict the movement of the non-linear and unpredictability element of fish movements. I explored and did research on the behaviours of fishes and used the particle system in Processing to simulate the flocking movement of fishes based on a simple set of algorithm rules.






Basic Mechanism


Exploratory Sketch: Movement with Neurons

Pushing the project further, I tweaked the behaviour of the particles to be less constrained and create room for the particles to make mistakes by detaching themselves from the flock. As a result, instead of one group of flocking particles, now there are multiple groups of particles. Moreover,  I improved the visual aesthetics and immersive experience of the art yet still retaining the generative element.

Final Project Process

After my first project, I felt that I have a better understanding of particle systems in Processing, and I wanted to take a step further by developing something new. One of the generative artworks introduced during the second week of class was William Anastasi, Subway Drawing.

Key takeaway: Simple generative system yet producing a surprising result. (Applying this methodology to the basic mechanism of the code)



The Aim

My aim was to translate his analogue generative artwork into a digital piece. Therefore, I observed his methodology and created my own autonomous line drawing particle in a 3D space. Additionally, in this artwork, the audience is able to control the perspective of the sketch and observe the illusion of different elements and nuances that were not seen in the previous viewpoint. In other words, every angle in the generative sketch will showcase a new form of abstract drawing.


First Iteration

Referencing from Casey Reas Path, the first iteration of the project focused on the basic mechanism, which is the fluid path movement of the lines.



The first blocking of the code aims to create a visually dynamic moving line using Processing’s particle system. As the particles move around the canvas, they leave a trail of lines. The behaviour of the particle was created with references to my exploratory sketch, with less complicated characteristics and solely focusing on the fluid movement of the line.


Next part of the code aims to create the abstract mechanism. The idea is to create an abstract drawing based on the movement of the particles. Therefore, I extended the length of the lines, and if the lines reach a certain length, it will fade away to prevent an overload of lines.


Abstract Perception

The final iteration of the project focused on the visuals of the lines. I implemented different colours that are applied to each of the line groups. Additionally, tweaking the alpha channel, a subtle mixing of colours appears when the lines of different colours are aligned with each other.


Live Demo

Further Development

To push the idea of “Abstract Perception” or “Movement with Neurons” further, both of these artworks can be translated to Virtual Reality technology using the software, Unity. In this context, it can provide a richer immersive experience and the audience can experience the artwork with all of their senses.

Second Iteration

For the second iteration, I was focused on improving the visuals of the lines and made two significant changes.

  1. Implement different colour for different groups of lines.
  2. Increased visual width of the lines, when the lines are viewed closer.

Implementation of Different Colours

Lesson from my exploratory sketch, the colours in this project will not be changing continuously to avoid confusion. However, colouration will be statically applied to be distinct to all members of each line group. I explored with different colours and chose colours that contrast well with a white background.

Colours: Red, Yellow-Orange & Grey-Blue


Colours Mixing 

Additionally, based on the audience’s viewpoint, there is also a subtle colour mixing when the lines of different colours are aligned with each other. Nonetheless, the colour mixing was not made explicit to the audience, because I prefer such nuances to be discovered through the audience’s perspectives and remind them that there is always more to learn in this art.

Example of colour mixing

There is a green line in the sketch (left side) created not by code, but through an overlay of two different lines.


Video Example


Width of The Lines

For the next implementation, I took Prof Dejan advice on increasing the width of the lines when it is viewed in close up (zoomed in). Initially, I had some problems implementing the code using Processing’s mouseWheel() function because the way the function works and the data produced from scrolling was not suitable for my project. Hence, I came up with a simple solution of modifying the strokeWeight() based on the camera distance calculation, which is controlled by scrolling. I will be showcasing this during the live demo.

Live Demo 

Further Progress

For my next iteration, I will be attempting to implement a function whereby when the audience moves around “something” happens. However, I have not yet think what that “something” could be because I do not want to complicate the essence of this sketch; therefore, this will be an idea on hold first.

Lines and Interpretations,

Final Project Idea:

The final project aims to create a digital abstract line drawing in a 3D space. Additionally, the audience is able to control their perspective and observe the illusion of different elements and nuances that were not seen in the previous viewpoint.

First Iteration

For the first iteration, I will be focusing on the basic mechanism of the system. There will be two parts of the basic mechanisms:

  1. Create a fluid path movement similar to Casey Reas’ Path
  2. Translate the logic of William Anastasi’s Subway Drawing generative system into the code

The First Block of the Code: The Path system

The first blocking of the code aims to create a visually dynamic moving line using Processing’s particle system. As the particles move around the canvas, they leave a trail of lines. The behaviour of the particle was created with references to my exploratory sketch, with less complicated characteristics and solely focusing on the fluid movement of the line.



The Second Part of the Code: Inserting the Abstract

Next part of the code aims to create the abstract mechanism. The idea is to create an abstract drawing based on the movement of the particles. Therefore, I extended the length of the lines, and if the lines reach a certain length, it will fade away to prevent an overload of lines.






The illusion

The generative art was designed to allow the audience to view the abstract path in 3D; therefore, at every different angle, the audience will see a new perspective and meaning of the art. This will be better illustrated in a live demo.

Live Demo 


Further Progress

Different Colours to the Lines?


For my next iteration, I will be exploring the implementation of different colours to different groups of lines, and examine how the colour combinations can play off one another, and in turn how they can influence the viewers.


New Idea | Brain Storming Phase

For my final project, I will be creating a new sketch but using the lessons from my exploratory sketch. Before developing a sketch, I will look at what has already been created and understand their methodology and the process behind the art piece and not just the final outcome of the work. Next, I will block out the basic mechanisms of the code in my head, before actually writing and executing the code. Hence, for this week I will just be solely focusing on the conceptualization process of my final project.

Process Inspirations

William Anastasi, Subway Drawing

One of the artworks that inspired me was “Subway Drawing” not because of his abstract drawing, however his methodology of building a simple with a set of simple rules yet producing such a surprising result. I always tried to create and structure my code based on real-life examples, so this could be one of the methodologies to apply for my basic mechanism.

Key takeaway: Simple system yet producing a surprising result. (Applying this methodology to the basic mechanism of the code)

Casey Reas, Path

A sketch by Casey Reas, who is also the co-founder of Processing. “Path” creates a very smooth flowing of lines, that may look a simple piece of artwork to the audience, yet behind the scenes requires complicated coding to develop such an aesthetic experience.

Programming nowadays serves as a mathematical expression, but also as an aesthetic experience.

Concept Idea for Final Project

For my final project, I will continue to use Processing as my medium. Drawing the idea of abstract drawing and trail from both of these artists, I will be creating an abstract path drawing using processing. What distinct my idea from both of the artists is the ability to translate this abstract path drawing into 3D. Referencing from my past exploratory sketch experience, I will be using a similar particle system; however, with a new set of behaviour and characteristics (Number of lines, Speed of the lines, size, the separation between each line)

Element of Surprise 


The element of surprise comes from the experiences and interpretation of the viewer. The viewing of the abstract paths can change completely depending on the angle from which the audience views it. As such, at every different angle of the 3D abstract path, it will display a new meaning to the artwork based on our unconscious visual bias. For instance, the position of the photographer, the angle of the sun and the formation of the clouds can make all the difference in a landscape shot. Hence, the audience will see different elements and notice nuances that one single perspective cannot accommodate.


This is still a work in progress idea but I believe this idea will be more apparent once the basic mechanism of the sketch is completed. 

Time Frame

This will be the draft project schedule, to ensure that I keep track of my progress.

Week 8 – Conceptualise

Week 9 – Basic mechanism of the sketch

Week 10-12  – Sketch Improvements

Week 13 – Presentation of Final Project





Movement with Neurons

A quick recap of my sketch, I wanted to depict the movement of the non-linear and unpredictability element of fish movements. To make my idea possible, I used processing as my medium.



I started by exploring the various behaviours and movements of the fishes influenced by their neurons’ connectivity. I felt that it is essential first to acquire the understanding of the fish mechanisms and the nature that comes along with it before I could start to digitalise it using processing. Besides that, I also explored various artist’s works to be inspired, especially on artwork that was created digitally.


Guiding Reference

Mandelbrot Fractal (1979) by Benoit Mandelbrot

One of the artworks that inspired me was Mandelbrot Fractal (1979) by Benoit Mandelbrot, which was one of the first computer graphics to display fractal geometric images using a computer algorithm. What it does is using a mathematical formula to create endless repeating patterns of aesthetic properties. This was something similar to my sketch idea, so I always referred to his methodology as guiding points throughout my experimentation with processing.


First iteration (Basic Mechanism)

I started with the basic mechanics that simulate the patterns of a flocking fish. The first iteration was solely focused on the basic mechanism of flocking behaviours using particles simulation. As this was the foundational block of the sketch, I felt that the rules have to be written in a simple manner such that my future self will be able to understand and make changes to the parameters easily.


The basic rules/behaviour of the algorithm was created simplistically with only three actions.

  • B1. Alignment: follow the heading of a local particle
  • B2. Cohesion: Move towards the average position of a local particle
  • B3. Separation: Avoid crowding local particle



While the basic mechanism was achieved, I felt that it was too rigid. It did not have this perception of chaos and order. My rules were constraining the particle, such that there was less room for a mistake to occur, and to me, that was not generative enough.


Second Iteration (Order & Disorder)

For my second iteration, I focused on blending order and disorder to mimic the patterns similar to the biological life of fishes in the ocean. I looked upon some examples made using Unity and found a work that I could relate on back to my sketch.


I tried to create something similar; however, I was constrained with the number of particles I can produce due to hardware limitations. Nonetheless, I still managed to tweak the particle behaviour to reflect something like the example.


Further Tweaks

Additionally, I took Professor Dejan suggestion and made further tweaks to the properties of the particles, to portray a more reactive and natural form of particle behaviour. Now the particles are less constrained, and it creates room for the particles to make mistakes. Furthermore, instead of one group of flocking fish, now there are multiple groups of fishes. However, it still lacks that visual aesthetic touch and immersive experience.



Third Iteration (Aesthetics & Immersive)

My last iteration of the sketch was focused more on the visual aesthetics and immersive enhancement. One of the artworks that intrigued me was Artist Refik Anadol. I felt that his artwork was mesmerizing and something that I am inspired to achieve.


Melting Memories

Further Tweaks

I explored the different variation of colours that can be used to complement the sketch, and I decided to implement a system that could change the colour of the particles over time. Furthermore, I have also ramped up the particle count to 2,500 (it was quite demanding for my computer). To add a final touch, I switched my sketch from 2D to 3D. 



Strong & Weak Aspects of The Finished Work

Weak Aspects

There were two stumbling blocks that I felt restricted in my explorative sketch. First, I was limited by my computer processing capabilities. As much as I want to render 100,000 particles simulation to create a visually appealing artwork like Artist Refik Anadol, I couldn’t expand my sketch beyond what my computer is capable of producing. Perhaps is the lack of understanding of how processing works behind the scene, such as how the algorithm is processed. 


Next, I couldn’t achieve some suggestion by Prof, as I was limited to the library functions in Processing. One of the suggestions was to create a “predator” particle that could influence the dynamic of the particle’s behaviour. 

However, I could not create the “predator” particle due to frequent crash when I tried to generate two separate particle systems (One for normal fish, Another for Predator). 


Strong Aspects

The finalised work was less rigid and dull as compared to the first iteration, in terms of aesthetics and randomness. There was an evolution in terms of the behaviour of the particles; the algorithm is now optimised for particles to make mistakes and in a sense, make the particle appear alive and natural. Also, the system is built such that countless possible variations can be produced with just a tweak to the parameters of the code.


What I have learned in the process.

Ironically, I learnt that generative art is neither programming nor art. Generative art is the meeting point between the two disciplines; it’s the discipline of taking logical, systematic and rigid processes and subverting them into illogical, unpredictable and expressive results.


Therefore, I have learnt to remove this logical thinking that I had previously, to be more flexible with my ideas and exploration. Throughout the process, I also learnt to explore with various artworks, and just be inspired and open-minded to different works on the internet. Most importantly, incorporate the different ideas by the various artists into my sketch.


Everything else that was important.

During the guest talk by Professor Vladimir Todorovic, I raised the question with regards to finding the fine line between abstract and concrete, and he mentioned that there is ‘no perfect fine line between abstract and concrete’. I tried to relate this to my exploratory sketch process to understand what he meant.


Indeed, the process has shown me that order and chaos, simplicity and complexity, abstract and concrete aren’t necessarily the opposite ends of a spectrum. They can be easily intertwined. However, at the same time, we have to be careful not to stray too far into one spectrum or the other. Thus, I find that it is crucial to find this balance when we are creating generative pieces.


A Possible Generative Sketch Idea


Moving forward, I would like to explore further the use of particle movement to create abstract drawings, similar to William Anastasi’s subway drawings.




Sketch Exploration/Changes


Reactive Trails

I have modified the particle trails to be more reactive based on its speed. For example, particles that are moving slower will have a shorter trail; particles that are moving fast will have a longer trail.

Initial Appearance of the Sketch

The initial sequence of the sketch is modified, whereby particles will “explode” with some particles leaving outside the sketch window, and slowly transit to the various school of fishes. I aim to create a perception of chaos at the start, whereby it slowly transits to groups of fishes. The live demo will better illustrate my point.



Different Species

I have included different variations of particle behaviours. The particles create their group, but there are also instances whereby the particle moves alone. Particles may also eventually leave their group to join another group or proceed as an individual particle.

Small changes

  • Particles now can leave outside the sketch window
  • Particles have different generated behaviour based on the rules of the algorithm
    • E.g. Speed, groups, separation, etc.


Introducing a “predator” to a school of single species to influence the shape dynamics.

  • I tried to introduce a “predator” as suggested by Prof Dejan, but somehow my code always crashes whenever I introduce a new particle system with a distinct set of behaviours. I am assuming that the library of the code only allows one particle system, and I may have to find other alternatives to create the “predator”.

Next Iteration

  • Will be exploring on incorporating colours into the particles
  • Add a background music
  • Will explore 3D Geometrics for the particles (hopefully it doesn’t crash)

Demo of the Simulation

Particle Prototype

Quick Exploration

To begin understanding how to move particles,  I did a quick research on the 3 properties that are commonly used to control particles simulation.

  • Alignment: steer toward the average heading of local flockmates
  • Cohesion: steer to move toward the average position of local flockmates
  • Separation: steer to avoid crowding local flockmates

The intention is to simulate the rhythm and harmonic movement of a fish, to give my viewers a sense of oneness (unity) in their mind.

Prototyping & Testing


With the basic knowledge of the 3 properties, I used a physic library in processing to formulate the behaviour of the particles. In the beginning, there were some errors with the physics system whereby the particles are not constrained (anchor) to each other. This was quickly solved by constraining the particle into a “sphere”.


Further tweaks

After the particle mechanism is much more stable, I introduced more particles into the system. I have also added “trails” behind the particle, for aesthetic purpose. Every time the code is executed, a different result will be displayed. Perhaps, further, improvement will be to add colours? Flashing lights? Calming background music using minim?


Live Demo of the Simulation

Video Examples




Essentially, these two videos depict the fish movement, but more precisely, it is based on an invisible path that is created from the connection of multiple fish neurons.


“Soon, so many neurons are interacting in so many different ways at once, that the system becomes chaotic.”


Generative systems often include chaotic behaviour. Like the fish, while the neurons of the fish is a simplistic system following a strict sequence of cause and effect, there is a dynamic nonlinear and unpredictability element.


Generative Sketch

Therefore, for my chosen medium, I will be using Processing whereby I will be exploring the feasibility of particles to simulate the movement of the fish.


To do so, I will be learning ways to create particle simulation and on how to move particles in a unison manner. The unpredictability element comes from the procedural coding,

  1. whereby the manipulation of the number of particles,
  2. the characteristics of the behaviours of the particle (Separation, Alignment, Cohesion, Speed)
  3. and the size of the boundary will offer a new result.


One challenge I foresee will be the manipulation of the characteristics of the particle to achieve a desirable outcome, such as moving the particles in a unison manner. However, that is part of the learning journey and I look forward to the challenges that lie ahead.