More selected projects

Sunken Paths

This work aims to reframe the concept of digital interaction by building on the morphological formation of the sunken lanes. 

The video below captured the system 20 minutes inside its growth. This is only a short excerpt, this work is meant to exist as an ever-growing structure. Runs at 60fps/1080p

produced by: Pietro Bardini


Sunken lanes, or Holloways, are tracks worn down by the traffic of ages and the fretting of water, and in places reduced sixteen or eighteen feet beneath the level of the fields. The youngest paths are at least 300 years while the oldest date back to the iron age. They are landmarks that speak of habit rather than of suddenness. They connect the past with the present, living with non-living. Sunken paths are testaments of agencies, assemblages bearing the indelible marks of the bodies that passed through them.


  • gallery-image
  • gallery-image
  • gallery-image
Concept and background research

In this work, interaction is not seen as an extemporary connection between interactor and interacted, but as an accumulation of actions. In this light, interaction is the emergent product of habit.

As opposed to a naturally occurring Holloway, Sunken Paths shows an ever-growing, tentacular path shaped by the movements of more-than-human, inorganic forces. This work is not programmed to have any shape or direction, but the paths that emerge are the fruit of a genetic algorithm, informed by solar energetic particles and solar magnetic winds. In this interactive work, all actions are equally important, building on top of each other - each new growth relies on the previous generation to know where to grow.

Solar activity data is retrieved in real-time from The Space Weather Prediction Center. Incoming values are not mapped to any range, this means that the resulting path can take unexpected turns and that the algorithm is not controlling these forces but is subject to them.


Sunken Paths relies on a space colonisation algorithm to calculate an ever-growing, tentacular shape. The algorithm is an openFrameworks implementation of the paper Modeling Trees with a Space Colonization Algorithm by Adam Runions, Brendan Lane, and Przemyslaw Prusinkiewicz, translated as an addon by Davide Prati. In space colonisation multiple branch-like shapes grow until they reach a destination, represented by points in space.

In Sunken Paths, the space colonisation addon is extended with a genetic algorithm to calculate the position of each point and the properties of each branch. The behaviour of the genetic algorithm is informed by solar forces retrieved in real-time. The forces that shape its paths are:

High Energy solar protons (SIS):  The Solar Isotope Spectrometer(SIS), is designed to provide high-resolution measurements of the isotopic composition of energetic nuclei. During large solar events SIS will measure the isotopic abundances of solar energetic particles to directly determine the composition of the solar corona and to study particle acceleration processes. During solar quiet times SIS will measure the isotopes of low-energy cosmic rays from the Galaxy and isotopes of the anomalous cosmic-ray component, which originates in the nearby interstellar medium.

This proton flux informs a noise value that affects the growth of each branch.

Solar Magnetic field: The solar magnetic field not only surrounds the Sun itself, the solar wind carries it out into the solar system to form the interplanetary magnetic field or IMF. The strength of the interplanetary magnetic field is given a value called Bt and is measured in nanoTesla (nT).

The magnetic field has four values, x,y,z coordinate of the field and the intensity  (Bt). The coordinates inform the position of a target and Bt how far the target is.

This target is used to determine the fitness model of the genetic algorithm – the closer the space colonisation points are to the target, the more fit they are. This results in having points getting progressively closer to the target while maintaining a certain degree of randomness. When they get close, the algorithm retrieves new solar activity data which pushes the target away again, this way creating a path in space.

At each new growth, the camera is moved in the space using exponential functions to smooth its movements.

To retrieve data without overloading the system which would cause the frame rate to drop, it uses an even scheduler via multi-threading in the background.

ofxSpaceColoniser is used as a class and I have extended its functionalities.

Future development

I would like to extend this system by providing it with a built-in synth engine so that it can generate and evolve sounds with each new growth.

Self evaluation

The main issue was the documentation. With lockdowns has been hard to access spaces and the equipment necessary for this work to exist as a large-scale projection as initially intended. Therefore, after recording this as a projection I decided to instead present it as a digital work. This was possible due to the nature of the work, a self-sustaining, self-growing piece that does not require human interaction. This will hopefully be homed once facilities will be available to access.

I also faced some drawbacks trying to make the system grow indefinitely without getting stuck. To solve this, I used multi-threading to retrieve data and added a timer to only grow every 12 seconds. The mesh can easily reach >1mil vertices, it uses an ever-growing vboMesh and I was able to keep it growing for 2 hours without a big loss in framerate.

An issue was also recording in HD, as screen recording would slow it down too much. To solve this, I used ofxFFmpegRecorder by Furkan Üzümcü and ofxFastFboReader by Satoru Higa to efficiently save all pixels to ffmpeg every frame.

References and Addons

Holloway: Dan Richards, Robert Macfarlane (2013, Faber)

Space Weather Prediction Center (

Theo Papatheodorou (2020) Genetic Trees in Workshops in Creative Coding 2.


ofxSpaceColonisation by Davide Prati. Used to calculate the growths;

ofxBranchesPrimitive by Davide Prati. Used to draw the branches;

ofxEasing by Arturo (arturoc). Used to interpolate camera movements;

ofxPostProcessing by Neil Mendoza. Used for post-processing effects;

ofxFFmpegRecorder by Furkan Üzümcü and ofxFastFboReader by  Satoru Higa used to screen record within the system.