A generative art series by Andries Odendaal

Hosted on the Etherium Network and available on opensea.io

FABRIK is an algorithm designed to produce a unique set of digital artefacts through the algorithmic arangement of simple elements on a grid. It is capable of generating complex variety from a few simple rules and elements.

Each work within the series employs the repeating and interlocking parallelogram motif. These simple geometric shapes are algorithmically woven into intricate geometric tapestries. Their interlocking angles and slants initially create a sense of patterned stability, reminiscent of three-dimensional architectural structures or scaffolding. At very small sizes, these shapes cluster together and form intricate detail reminiscent of the layered strata found in geological formations or inorganic corrosion growths.

The contrast in scale and texture is used to evoke a sense of tension between stability, structure, order and the forces of change, entropy, and impermanence. In these works, the same recursive algorithms that are responsible for its structural integrity are also the source of disruption, and the illusion of decay and disintegration.


Repeating parallelograms are arranged in a variety of patterns, sizes and proportions. The angles formed by their diagonal sides mimic those of dimetric projections found in many early computer games.

figure isometric

This provides a near isometric projection, by using a 2:1 pixel ratio to draw the diagonals, which lends a three-dimensional quality to the generated structures while also perfectly aligning with a two-dimensional Cartesian grid system.


The underlying grid provides a system for modular scaling by a factor of 2. The rectangular canvas has a proportional width to height ratio of 1:1.5, offering grid sizes ranging from 2 x 3 to 128 x 192. The variation in size of the visual elements is achieved by alignment to grids of various resolutions. The grid affords increased detail as the resolution of the grid increases and becomes the primary mechanism for the gradual disclosure of intricate details.

figure grid


Scaffolds are algorithmic arrangements of containers that provide boundary rectangles for the generation of visual geometry elements. They are defined as a set of cells arranged on the grid of any supported resolution. They provide an additional underlying structure for the arrangements of elements and play a key role in determining the final composition. Space is first partitioned vertically, providing the horizontal rhythm of the layout.

figure scafolding

The resulting columns are then populated vertically with rectangular cells using a variety of methods. These rectangles are then used as a boundaries for placing geometry.

figure scafolding

Scaffolds of varying resolutions are used to layer and add interlacing detail at different frequencies. The modular scaling system ensures that layers align even at different grid resolutions.


Each composition is generated by filling one or more scaffolds with shapes and assigning colours and textures to these. The size of the the shapes are determined by the boundaries of the cells of the scaffold. Due to the varying resolution of each scaffold, shapes can vary dramatically in size, forming areas that exhibit intricate detail contrasted with larger planes, sometimes cutting across the entire canvas.

Shapes are first rendered to a “virtual canvas”, which is essentially a render queue holding instructions. This means that the final render can be executed in a different order than the order in which the shapes were created. This affords the ability to reshuffle the render queue, rendering areas from unrelated scaffolds together, or execute the queue in a random order. The result is drawn to an HTML canvas but can also be rendered as an SVG for resolution-independent printing.


Each parallelogram motif can be further subdivided into horizontal or vertical divisions, creating hatch-like line patterns that overlap in different directions to create vibrant optical colour mixing. At larger sizes the directionality enforces a sense of structure and the illusion of three-dimensionality.

figure pattern

At smaller size these details can optically merge to create a type of patterned noise, or corrosion, that encroach and erode the structural integrity of the surrounding geometry.


FABRIKuses 12 base colours as its primary palette. This palette was crafted to facilitate the combination of any of the colours into a variety of sub-palettes ranging in colour complexity. Sub-palettes can range from simple duotone combinations to complex colour expressions containing all of the colours. This ensures outputs with significant variety while maintaining a sense of consistency and logical colour progression throughout the collection.

figure color palette

Within the sub-palettes, each colour weighted to affect its frequency. For instance, accent colours can be weighted with low probability. When selecting the palette, the artwork is also assigned a colour sequencer. This affects the way colours are selected from the palette when drawing an element. These can vary from linear repetition, bounce, ping-pong or random.


The following is a sample set of the script output.


Andries Odendaal is a Cape Town based digital artist, designer and programmer. He has been exploring computation as a means to produce visual outputs and interactive experiences for nearly three decades. His body of work spans art and design, interactive installations, virtual environments, game design, digital toys, theater set design. generative brand identities and UX and UI design. Internationally recognized, he has shared his expertise at numerous conferences, workshops, and lectures over the years.