Light. It forms the very essence of what our visual perception is based upon. Its path, right from its inception, being catapulted against the myriad of particles it bounces off of, right until it strikes our retinas has always left me wondering about how incredibly complex everything around us is.

It was one of those daydreams that had me thinking about light, it’s form and how it can be manipulated but never really stopped that formed the generative experiment I so mundanely called “a different lamp”.

There’s this little miracle hidden inside all of our houses and flats that everyone just stopped to admire or even really think about once it became so ubiquitous: Lamps. Maybe it’s just my IKEA-inspired, minimal interior decoration talking but it seems that, for most of the lamps I own or see around me, they have been degraded to simple tools, illuminating our everyday lives, going unnoticed besides its potential to inspire and awe us.

So I set out to re-imagine the forms of our bright companions, to give them the freedom to manifest themselves and their playful interaction with light, itself and the things around us in the most diverse possible way.


But how do you go about that?

Naturally (because, well, who in their right mindset wouldn’t… right?) I turned to another miracle of our modern days, my beloved MacBook, to develop a generative design system that would allow me to create a virtually unlimited amount of three-dimensional forms that could be used as shades. As I wanted this system to be controllable but at the same time unpredictable, I decided to create an approach that uses a simple two-dimensional coordinate-system as the starting point to generate three-dimensional points in space. Those points make up what us nerds call “meshes”. The “essence” of the script feeds various simple mathematical functions like sine and cosine with those two-dimensional coordinates to create natural forms in an almost unlimited amount of variations.

If that sounds complicated: It’s really not – but have a look for yourself:

The animation above depicts one possible result of the generative system. The parameters for the underlying mathematical functions change every iteration so no two results will be alike. The x-,y- and z-coordinates are calculated as follows:

float u = map(iu, 0, uCount, uMin, uMax);
float v = map(iv, 0, vCount, vMin, vMax);
float x = v;
float y = sin(u)*cos(v);
float z = cos(u)*cos(v);

The mesh you saw above is not just limited to that rather boring wireframe visualization but can also be further exported into 3D-formats that allow a more realistic visualization of what lamps generated by this system would look like.

I decided to pick four variations that I most definitely would trade my trusted old IKEA MAGNARP-lamp in for and rendered them in the most photorealistic way my humble 3D-skills would allow me to.