WORLDS was a generative artwork that I composed for the inaugural drop (500-iteration public mint) on the Flutter platform (12/13-15/2021). Flutter was a new platform made in a collaboration with Flamingo DAO and Art Blocks, which facilitates the creation of individualized artworks based on code that resides on the blockchain. Once seeded, the artwork was set forever, for 500 instances (NFTs).
My finished code was uploaded to the block-chain, then collectors could mint a totally random, individualized artwork that was produced by that code. Each hash input to my code was random so technically anything was possible within the range permitted by the code. A primary challenge in this type of long-form generative art is to produce reliably beautiful and high-quality output, while allowing variable and unique outputs that are interesting individually.
Caption: Early version of WORLDS (R code; left) and an intermediate version (p5.js; right).
The main thesis of Worlds was to represent our fractionated lives in an era defined by personal conflict and information bubbles. The winding and tangled scenes produced by this system are meant to convey the imbalance, incompleteness, and disorder that stems from our embrace of unreal but sometimes comforting beliefs. Many of our worlds are beautiful, while they may not be true.
The Worlds system produces a wave-like structure composed of delicate lines, rectangles, and randomly interspersed circles, with a large disc hovering in the background. The composition includes meandering line clusters, rectangles, and slightly off-center, nested concentric circles of varying sizes, which sometimes cluster chaotically or align into neatly spaced groups. This piece variably features a more detailed “macro” view of the scene, or an interactive animation with rotating circles and moving disc that accelerate based on mouse position. Highly variable color gradients and contrast manipulation with varying opacity, shadows, and highlights also produced different landscapes.
Caption: Mint # 12 – Wave color gradient.
A primary and salient feature of WORDS was color gradient. Each piece selected colors from 18 named gradients with different probabilities: Ghost, SAV, Bleached, Western, Floro, Sandstone, Tan, Redrum, Waves, Blue, Malbec, Desert, Nightswim, HCD, Kiawah, OG (Old Guitarist), Arrowbear, Firefall. A custom function to expand the gradients from smaller number of colors (e.g. five), then created a span for all of the elements from left to right. The gradient also affected a number of other traits that contributed to their distinct appearances, for example: transparency, shadow contrasts (black/gray replacing colors), and gold highlights (i.e. Klimt).
The structure of WORLDS consisted of wave-like vertical lines that were produced with a technique involving a coordinate grid (random number of rows & columns), which was distorted by adding a combination of local and global variance to each point. The spatial variance was partially smoothed across adjacent grid points based on an iterative process of weighted averages performed across grid points. The process of averaging variance across bands resulted in the appearance of waves. The extent of smoothing was scaled based on the number of grid columns and rows to avoid over-smoothing them. An emergent property was that densely organized columns showed smoother waves (e.g., Mint #12), like a surface, while sparser columns were often more chaos-prone (e.g., Mint #124).
Columns were plotted in random order, with lines drawn after applying random horizontal shifts. Rectangles and circles were plotted in random order for each column. Each rectangle was rotated so that its ends would appear linked to the tiles above and below. Line widths for each line and polygon were randomly varied throughout the piece. Nested concentric circles were drawn that rotate together in the animated version. Smooth paths for each column were produced by using cubic (i.e., Hermite) spline interpolation to find intermediate points along a smooth line connecting the grid column points. For example, in the more detailed, “macro” view, 20 grid points could give rise to 60 line segments. The animated view rendered fewer of the line and shapes, while applying more rescaling/expansion. In contrast, the detailed stills removed fewer components, which were drawn with less expansion.
The animation included circle rotations and disc movement reflected simple acceleration functions that responded to the mouse position on screen. Once I started to include animation, it was obvious how responsive animation can give a quality to on-chain NFTs that is impossible for most mediums. However, animation introduced several challenges to the system. First, the memory demands for rendering moving pieces required that every line and shape was pre-calculated and rendered in a loop to avoid recalculating everything. Secondly, the number of elements also placed memory demands that resulted in jumpy animations. This was remedied by randomly removing a small percentage of elements and drawing larger polygons to fill the original space. After the animated version was fully developed, the detailed still version was resurrected by introducing the macro/animation variable.
This project taught me numerous important lessons. User-reactive moving art was completely new territory because of my background in still artwork generated with R code, so implementing animated features opened a door – just a tiny sliver – to the range of possibilities that are available in p5.js. There were interesting and helpful discussions with Art Blocks team members and Flutter developers who gave me valuable insights into the mechanics of minting artwork on the block-chain and best practices. Constructive feedback from Flamingo DAO members led to new features such as brighter color schemes (e.g., floro) and animated components, which really became definitional to this piece and provided so much value in communicating with other artists (and collectors) for thoughts on future WIPs.
Consistent with my first experience with a serial art collection (A Human in Times of Chaos), the day of the public minting was amazing. All of the remaining 420 pieces were minted in only 30 minutes. On the discord art community, a fantastic group of inquisitive and hilarious collectors gave the drop an unforgettable atmosphere of happy celebration.
Note: This post is a work in progress, and I welcome questions and suggestions as it continues to evolve.