About the Piece

Methods of Dispersal extends my fascination with dot-based, ink-like spattering over a squared-off canvas. A simple tweet heralded the starting point for this piece:

“1. Source image is created and slightly blurred.
2. Random points are chosen from the source image.
3. An opacity is determined from the source point.
4. Maths happens.
5. A point is plotted as a small patch of variably-sized pixels.
6. Repeat.”

As it happens, step four allows for a whole range of exciting events: the shaping of random processes between curated values, spreading a subtle dance between order and chaos across the canvas.

The Generative Process

First, a source image is created. It may be Fibonacci-based, sine-, line-, ellipse-, or rectangle-based. It will be faded and slightly distorted. It may be rotated. It will look something like these.

The two Fibonacci-based images are clearly visible—those spiralling ones. One has closely-filled dots, the other is slightly more open.

There are a couple of densely-filled images, as well: the two at the top- and bottom-left. One might expect these pieces to produce dense outputs, but this is dependent on the next phase of the generation process, meaning that the more open, white-space-filled images, such as the bottom-right, have as much opportunity to produce interesting, spatter-filled spaces.

A mapping function is then generated. This takes the greyscale value of any point on this starting render, and maps it to a different greyscale value.

The number of points varies, and the overall shape is guided by curated random numbers, so there is the possiblity of spiky sequences, or a smoother ramp up or down. The top-left, for example, decreases overall as the grey-intensity increases, whereas the bottom-left is more of a rough bell curve. Grey values in the middle will be emphasised, whilst those around it will appear lighter.

The top-right mapping function will produce a striated image, as a sweeping greyscale curve would lead to spikes in near-adjacent values.

From these starting points, locations are chosen on the source canvas, manipulated according to the mapping function and some variations taken from Perlin noise, before being placed on a larger buffer canvas and finally rendered to the screen. This takes place over three hundred and sixty frames, with between 568 and 1024 points being added per frame. Other effects are also generated: some shading, distortion, overlaid marbling and a contrasting colour.

This image shows the relationship between the source image, mapping function, and the final render.

In the final piece, this source image can be displayed by using shift-m to type a capital 'M'. Ah, spoilers…


This piece may be available on the fxhash marketplace.



Source Code

Source code is available on request, should your interest be sufficiently piqued…!