clew

My genesis generative art collection.

created by abstractment

Clew - generative abstract art collection

My genesis generative art collection.

This is a summary of my first journey to find balance between diverse outputs and a cohesive collection. Below, I've shared details about each trait, as well as some of my own reflections after completing my genesis generative art project. Thanks for visiting.

Clew #236 - Featured piece from the collection

Clew #236

a note on traits and/or rarity features

I'm a creator and a collector. As a collector, it's hard for me to appreciate a trait that I don't understand, hence why I felt the need to put together this thorough explanation of clew. You'll also notice that I avoid numeric scales, primarily because they are typically vague and I have no idea how to differentiate "[Insert Mathematical Phrase] Level 16" from "[Insert Mathematical Phrase] Level 17" when looking at the art.

To avoid any confusion, I also use the terms traits, rarity features, and properties interchangeably.

color palettes

I hadn't prioritized the color palettes until I studied Tyler Hobbs' various essays on color theory in generative art. Finding these essays was a groundbreaking moment for me, as a generative artist, and for this project. Once I developed more complex color palettes (and switched everything into HSB), the outputs really began to come together and I saw a lot more potential in the collection.

The final collection has 27 color palettes, inspired by photos, real life art, and/or other generative art projects (including Fidenza, Archetype, and Edifice), and then revised to my preferences. Each palette has ten different colors (except for Black & White) and, because the colors blend together and don't have probabilities applied to them, you can see a lot of variation even within one palette.

shapes

This all started with circles, but as I shared this with the gen.art community, they inspired me to consider other shapes. At one point I had about six different shapes incorporated into the code. When I found myself skipping through the other shapes to get to the squares and circles, I slowly began cutting out everything else. As you'll likely notice, I softened the corners of all squares to help this feel more cohesive. In addition, while the rounded corners of squares can create another shape entirely, they are all considered squares for rarity purposes.

Clew #548 - circles

circles

53.1%

Clew #411 - squares

squares

24.2%

Clew #559 - squircles

squircles

22.7%

clew size

I wanted to create variation in the number of clew members, but found it difficult to hone in on the other variables when it was completely randomized. Eventually, I figured out a way to manage this, but ultimately decided that the additional variation wasn't needed or useful, so I landed on three clew sizes.

In my early iterations, there were two things I didn't like—all clew members ended up about the same size in the final output, and they would regularly run through each other. With some advice from rich (one of gen.art's mentors), I used the p5.collide2d library to stop one member of a colliding pair. When I got this to work, it was a huge step in the right direction. Not all clew sizes are created equal. For example, one microclew can have more clew members than another microclew because a new clew member is generated every time one stops due to a collision and whenever one runs too far off the canvas.

Clew #207 - Microclew

Microclew

4.9%

Clew #410 - Megaclew

Megaclew

68.3%

Clew #256 - Gigaclew

Gigaclew

26.3%

Clew #234 - Yottaclew

Yottaclew

0.5%

color distribution

Originally, the clew members were all one unchanging color, but this uniform approach didn't result in a great composition. After exploring various options, I cut the original approach and developed out four alternatives.

Clew #125 - diverse color distribution

diverse

different colors that don't change

65%

Clew #244 - inside out color distribution

inside out

unchanging different colors which turn inside out

10%

Clew #494 - switch color distribution

switch

colors change on a randomly assigned schedule

10%

Clew #238 - sporadic chaos color distribution

sporadic chaos

colors change rapidly and then pause

10%

Clew #338 - chaos color distribution

chaos

colors change non stop

10%

body type

While I didn't start with it, the dense body type just felt right to me so I wanted to incorporate it into the collection. As I may have already mentioned, creating depth was really important to me, and the translucent body facilitated that. I also tried an almost entirely transparent version of the clew members but this resulted in the clew members becoming unrecognizable in a mess of blended colors. Of those clew members with a translucent body type, they can be assigned three different types of fill.

Clew #50 - varied body type

varied

11.6%

Clew #518 - dense body type

dense

11.6%

Clew #20 - translucent black body type

translucent: black

11.6%

Clew #521 - translucent light and dark body type

translucent: light & dark

11.6%

Clew #155 - translucent palette body type

translucent: palette

11.6%

core

For translucent clews, they also have a core. One challenge that I faced with this specific trait was ensuring an appropriate level of transparency on the outside layer of the clew members. Too little transparency and the clew member loses depth and looks like a moving blur of solid color; too much transparency and the translucent clew members look like wire frames.

44.3% of Clew had N/A for this trait since they were not translucent.

Clew #182 - translucent, no core

translucent, none

14.3%

Clew #311 - translucent, external core

translucent, external

9.7%

Clew #198 - translucent, middle core

translucent, middle

11.8%

Clew #279 - translucent, internal core

translucent, internal

10%

Clew #406 - translucent, dense core

translucent, dense

9.9%

direction

In sharing my progress with the gen.art community, one of our gold members (Oxenford) asked how it would look if the clew members went big and then small again, so I gave it a try and liked how the clew members appeared to be recoiling (especially in the live view). When developing this, I originally had them diminishing all the way back to their starting size but ultimately decided against it because the shapes disappeared (almost entirely) in the final output. Without those shapes, there was no clear focal point and I was concerned that the collection began to feel less cohesive.

Note that with the forward/backward trait, it is still possible to have larger shapes in the final output when they collide with another and therefore stop in the middle of the production cycle.

Clew #89 - forward direction

forward

97.0%

Clew #446 - forward/backward direction

forward/backward

3.0%

reproduction

I stumbled upon this intentionally but unexpectedly. I was implementing general advice for generative artists (i.e., change your variables to extremes and see what happens). In this case, I changed the starting size of the clew members to a negative number. This basically flipped them inside out. As they grew, the outside shape began to emerge from its inner core, giving the effect of them emerging from a cocoon (eclosion trait). I liked the way it looked, and therefore decided to replicate it (albeit using a slightly different technique). The germination trait has them emerging from a small seed.

Clew #392 - eclosion reproduction

eclosion

51.1%

Clew #356 - germination reproduction

germination

48.9%

rotation

Adding a rotation allowed the final outputs (and live views) to demonstrate more movement, and I was fully sold on the rotation trait once I saw it combined with an indirect perspective. Because the rotation is really only evident in the square shapes, I've eliminated it for clews with only circles. As you can see below, when rotation is turned off the clew appears much more organized and structured.

Clew #463 - rotation off

off

73.0%

Clew #82 - rotation on

on

27.0%

survivors

This was the last property that I added and it's activated when two clew members collide. "Small" survivors will result in smaller clew members stopping the larger ones while "big" survivors will result in the opposite. "Random" will stop one of the clew members in a manner unassociated with size.

Note that this property somewhat resembles "proximity" in that it changes how close the clew members appear in the final output. The one difference is that "survivors" (when big or small) will result in more equally-sized clew members. It will also accentuate the extremes of proximity.

Clew #110 - random survivors

random

62.4%

Clew #364 - big survivors

big

19.6%

Clew #192 - small survivors

small

18.0%

canvas

I found it really important to get the canvas color right given the fact that everything layers on top of it. Black was an obvious starting point, but I also challenged myself to incorporate a white canvas. After trying it for several weeks, it just never felt right. I then realized I was overlooking the most obvious option—using the actual color palette. Doing so allowed me to incorporate lighter canvas colors and also improve the overall cohesiveness of the outputs.

Rather than name every color within the palette, I decided to categorize them as "dark" and "light." Some outputs have different colored canvases because there are five colors assigned to each, so it's locked to "light" or "dark" but not to a specific color within those categories.

Clew #342 - light canvas

light

38.6%

Clew #207 - dark canvas

dark

41.8%

Clew #476 - black canvas

black

19.6%

background

It seems like everyone is after texture these days, and—to be quite honest—that's what I was chasing when I started working on backgrounds. After testing a lot of different options, I decided to focus on using basic geometric shapes but getting the details right.

Clew #210 - curved background

curved

8.1%

Clew #285 - straight background

straight

10.9%

Clew #316 - frothy background

frothy

14.5%

Clew #106 - linen background

linen

9.0%

Clew #111 - fuzz background

fuzz

17.5%

Clew #560 - sand background

sand

15.5%

Clew #50 - confetti background

confetti

17.3%

Clew #405 - flat background

flat

7.2%

background depth

As I experimented, I found that I could add more depth by slowly developing the background (simultaneously with the foreground). This made the clew members appear like they are emerging from—or even stuck within—the background. In order to execute this, and ensure the background didn't completely swallow the foreground, I had to increase the transparency for the background elements as they developed.

Clew #472 - shallow background depth

shallow

13.2%

Clew #413 - medium background depth

medium

56.6%

Clew #187 - deep background depth

deep

22.9%

frame

Personally, I like a framed image. When I shared the first framing option with the gen.art community, there was resounding support for cutting it. So, I honed in on some different framing approaches that more cleanly incorporates the work itself. While I really like all of these, I love how the background only frame feels like the clew has gone rogue by extending beyond the frame and canvas.

Clew #307 - no frame

none

61.4%

Clew #105 - background frame

background

5.1%

Clew #327 - foreground frame

foreground

20.9%

Clew #430 - background and foreground frame

background/foreground

7.9%

edges

As I worked with the background framing more, I made a few "happy little accidents" that inspired me to test different approaches with the framed background. I explored quite a few but narrowed in on just two options, clean and rough. Note that all background options can have a clean frame applied except for curved.

Clew #185 - clean edges

clean

6.0%

Clew #393 - rough edges

rough

13.8%

perspective

This is one of the few times that I was intentionally seeking out ways to create more variety while also maintaining a cohesive look/feel. While it was relatively straightforward to code the indirect trait, the fine tuning to get the details right was burdensome. Note that the indirect can go in four directions (with a 1% likelihood for each) but they are all considered the same (i.e., indirect) for rarity purposes.

Clew #374 - direct perspective

direct

98.4%

Clew #324 - indirect perspective

indirect

1.6%

symmetry

Who doesn't love a little symmetry? I'm particularly fond of the diagonal, and I always have to look at it closely to confirm it's there.

Clew #313 - no symmetry

none

91.2%

Clew #118 - horizontal symmetry

horizontal

3.9%

Clew #312 - vertical symmetry

vertical

2.5%

Clew #294 - diagonal symmetry

diagonal

2.5%

special

This was actually a last minute addition but I loved how it brought a totally different feel to the collection while still clearly being part of Clew. Both special traits, due to their look, highlight the flow field base of the broader collection; #clewFoLlOWclew emphasizes it further with its name.

Clew #311 - special trait clewFoLlOWclew

#clewFoLlOWclew

0.7%

Clew #3 - special trait lostNotLost

#lostNotLost

0.7%

appreciation

A special thanks to the gen.art community... toiminto, rich, and r0zk0 for helping me address a few specific coding challenges, and a deep appreciation to everyone (and specifically Oxenford) in the artist-applicants channel (of gen dot art's discord) who provided encouragement and recommendations as I developed this concept into a collection.

Thank you to Tyler Hobbs for his written work on generative art; his essays are both educational and inspiring. Thanks to the Two Bored Apes, Jaime and Roy; I found their podcast to be a great resource to better understand the broader generative art space. And I can't overlook a shoutout to the Coding Train for being an endless resource of tutorials and coding challenges.

Now that Clew is complete, I've revised this entire page to incorporate outputs and trait probabilities from the final collection.