History

How Luxels came to be?

Fractals and Algorithmic Art

Many scientists have found that some experiments gave some results that were not only interesting for our understanding of our universe, but also had real aesthetic and artistic value. A pretty good example of this is the popularity of the space pictures published by NASA on social networks.

Among those scientific discoveries, one that holds a special place in my heart is the famous Mandelbrot Set. In 1975, Benoit Mandelbrot not only coined the word “fractals” but also led to the set that is forever associated to its name, and has not finished revealing mesmerizing views of the complex space.

“Being a language, mathematics may be used not only to inform but also, among other things, to seduce.”
- Benoit B. Mandelbrot

Then in the 1990s, a group of scientist-artists came together as people who used algorithms to generate art, and started calling themselves Algorists, a contraction between the words “algorithm” and “artist”.

The Algorists group included artists such as Jean-Pierre Hébert, Ken Musgrave, Roman Verostko, Mark Wilson, Manfred Mohr, Hiroshi Kawano and many others. The definition of Algorist was given by J.-P. Hébert in 1995 in the form of an algorithm, stating that an Algorist should fulfill the following requirements:

if (creation && object of art && algorithm && one's own algorithm) {
    include * an algorist *
} elseif (!creation || !object of art || !algorithm || !one's own algorithm) {
    exclude * not an algorist *
}
- Jean-Pierre Hébert, 1995

During my studies in Computer Graphics and Virtual Reality in the mid 2000s, I met a french group of Algorists, and started playing with ways to generate art based on algorithmic logic. We used to meet once a month, exchanging over our projects, and brainstorming ideas. At the time, we already had discussions about whether or not AI could do something artistic (a very philosophical question, and to this day unanswered).

Melinda Green's Buddhabrot

Back in 1993, Melinda Green, a computer scientist and artist, came up with a new way to visualize the Mandlebrot set: since the interrogates whether an infinite series of complex numbers diverges or converges, she thought to visualize which points on the complex plane were the most visited.

Put simply, the image is like a photographic film, and every iteration of the zn+1 = zn2 + c formula is like a photon hitting that film at a specific location, ever so slightly brightening that pixel.

“When I first tried using the new technique, I had no idea what the images might look like and was completely surprised by the results.”
- Melinda Green

The image that resulted became almost as famous as the Mandlebrot Set itself, and Lori Gardi, another computer artist, coined the name “Buddhabrot”, hinting at the similarity between the image and the traditional representation of Buddha.

Buddhabrot — Melinda Green, 1993


The first experiments: 2008-2011

When I started playing with Processing in 2008, I spent a few days trying to implement famous works, including the Buddhabrot. Soon, I eventually thought about reusing the same principle of having a series of position guided by some arbitrary mathematical rules, to slowly add colored light to a film.

I first created my Aether series in Processing, soon followed by the Pixie Dust series.Both were based on that same idea, with simple rules, and results that I grew found of. At the time it was still just me tinkering without giving much thoughts about what I expected, just playing around with a new toy I wrote by myself.

Aether — Xavier F. Gouchet, 2008

Luxels: Pixie Dust — Xavier F. Gouchet, 2009


The first period: 2012-2016

When I thought of writing another series based on the same principle, I realised that I needed more structure. I wrote a first version of my engine in Processing (so it was mostly Java based) and added a couple of very basic animation logic.

This allowed me to make my first animation based on my Luxels Gravity series, where each particle would be affected by a force loosely based on the equations that govern the motion of the stars (hence the name).

Luxels: Gravity — Xavier F. Gouchet, 2012

Along the years, I experimented with many different rules, trying to come up algorithmically with the pictures I had in mind, sometimes successfully, sometimes not.


The second period: 2017-2023

In 2017, the Processing framework felt like a constraint, and I wanted to allow more out of the Luxels concept. I decided it was time to write my own engine from scratch (ish).

That same year, Kotlin started to get some traction, especially in the Android community (which is where I make a living). Google announced first class citizen support for the language, and along with a few colleagues, I started to play with that language.

This lead to a logical conclusion. Why note write my Luxels engine in Kotlin. It would allow me more flexibility, and also give me a project to learn Kotlin. As I worked on that core engine, I kept working on new series, among which Aura was published.

Luxels: Aura — Xavier F. Gouchet, 2017

I kept on working on those experiments, on an off. Some series never passed the draft stage, others would not reach a satisfying result, and are kept as work-in-progress-that-I-will-work-on-again-probably. I did eventually released another series from that period, named Smoke.

Luxels: Smoke — Xavier F. Gouchet, 2021


The third period: 2024-…

In 2024, I realised that my Kotlin engine, although much better than my original Processing scripts, still had room for improvement. The language itself had evolved, and my knowledge of it too. I decided to make a luxel engine, Mark 3 if you will, with a couple of global objectives.

First, it had to give me room to experiment and play with the concept of Luxels, and make new series. Hopefully with more ease to bring to the digital world the images I have in my mind.

Second, it had to follow best practices in terms of coding. Better structure, automated tests, strict static analysis, everything that I use in my daily job, and is often forgotten in pet projects. Also, to make things more complex, I decided to make it as a Kotlin Multiplatform project. The idea being that I could eventually decline it as a website sandbox (similar to Shadertoy), or as an Android live wallpaper application.

Third, I decided to make the whole thing completely Open Source. I've been an Open Source afficionado since my first year learning about programming, and I've contributed to countless project. Sharing is caring, and I'd be delighted if some people could make things out of the Luxel engine I share.

The adventure is just starting, and I'm thrilled to see what's coming next.