Bloom Collection

Metamorphed
13 min readMay 25, 2023

--

Bloom is a generative art collection focused on beautiful flower bouquets. Created entirely through coding with p5.js, each bouquet is made up of four different plants with variations in stem count and color scheme. This unique collection showcases the beauty of generative art, with each plant in the bouquet is unique, ensured with randomized parameters for each of them.

In December 2022, I decided to create a collection for each color palette in Metamorph Collection, inspired by their names. Bloom Collection is the first collection of this series that inspiration was drawn by the name of a palette, ‘Bouquet’ in this case. Therefore, ‘Bouquet’ Metamorph holders received Bloom as an airdrop for each ‘Bouquet’ they hold.

The collection offered an exciting avenue for me to delve deeper into the realm of natural elements and challenge myself to create in fields that I hadn’t explored much before. This collection served as an opportunity to simulate and generate more detailed plant forms inspired by nature while infusing them with my personal touch and style.

I wanted to create a collection of simple bouquets, with plant arrangements that evoke a sense of carefree spontaneity, as if they were casually gathered from a spring field. It’s like capturing a beautiful memory of spending a delightful day surrounded by captivating flowers and wanting to share a piece of that enchanting experience with your loved ones. Therefore, each piece in the collection embodies the energy of this memory, embracing a minimalist essence while infusing a sense of vibrancy through the details of each plant in the bouquet. And I preferred using colors with low saturation in general, to reflect the delicacy of the plants and emphasize the harmonious balance between minimalism and intricate details.

Creating Bouquets

Selecting the Stem Count

Each Bloom piece has a randomly selected Stem Count value from a predefined list, which determines the number of plants in the bouquet. This list ensures a diverse range of options.

The Stem Count selection plays a pivotal role in shaping the composition of the bouquet. Lower stem counts, such as 3, result in more minimalist arrangements, where simplicity takes precedence. On the other hand, higher stem counts offer greater complexity and sophistication, showcasing a wider assortment of plants in the arrangement.

List of Stem Counts: [3,5,10,25,50,100]

Showing Blooms with different Stem Count attribute

Placement of the Plants

To achieve an organic and spontaneous feel, the placement of each plant in the bouquet is determined by some variables, including the angle and position. These variables are randomized in a range to create a natural arrangement that mimics the unpredictability of a spontaneously arranged bouquet with freshly picked flowers from nature. By introducing this element of randomness into the composition even with these little details, each Bloom piece becomes a unique representation, capturing the beauty of imperfection and desired spontaneous feel that was pursued in this collection.

The main stems of the plants are intentionally arranged at an angle to ensure a sense of overall tidiness and subtle symmetry within the bouquet. Prior to introducing any deviations into the algorithm, equal angular distances(angle/stem_count) are maintained between each plant. This systematic approach provides a structured foundation for bouquets. By incorporating the deviations to the angular distances with randomness, the bouquets achieve a more natural and spontaneous look, striking a harmonious balance between the tidiness and the desired organic feel of the arrangement.

There are also a few spacings between the stems to prevent overlapping, especially at the connection point, calculated with some added randomized deviations here as well, again to maintain the organic nature of the collection. Hence, it becomes thicker with the bigger bouquets as expected.

Lastly, the type of plant is randomly chosen for each placement in the bouquet, with predefined probabilities in place to maintain a balanced distribution. Based on experimentation and observed outputs, Plant Type 1 and Plant Type 4 were assigned slightly lower probabilities compared to the other plant types. This adjustment was made to ensure a diverse and visually appealing composition throughout the collection.

Tie of Bouquets

To enhance the spontaneous and haphazardly arranged bouquet feeling, a small tie is added at the connection point of the stems in smaller bouquets as a subtle detail. Bouquets that have equal and higher than 5 stem count have a little tie that puts the bouquet together. I wanted to acquire a haphazardly tied look, with a little algorithm that utilizes curves with randomness. The size of the tie’s radius does not significantly increase with the size of the bouquet, allowing it to remain hidden beneath the stems in larger arrangements. This decision was made after observing that the larger bouquets naturally acquired a wrapped look, making the presence of the tie unnecessary. Additionally, bouquets with a stem count of 3 are intentionally left without a tie to preserve their minimalist aesthetic. By omitting the tie in these bouquets, the focus remains on simplicity since it is the most minimalist setting in the collection. You can observe examples in the image below.

Showing the ‘Tie’ and its appearance on different bouquet types

Generating Stems and Branches of the Plants

The stem-generating algorithm was designed with flexibility in mind to accommodate different types of plants in the collection. By adjusting and reusing parameters specific to each plant type, the algorithm generates unique stems for every plant. To introduce randomness and create wavy patterns, Perlin Noise plays a significant role in determining the shape of the stems and their branches.

Two key parameters contribute to the overall structure of the plants: the scale value, used in the noise function, and the step value, which sets the distance between curve vertices. These parameters influence the level of waviness and the smoothness of the stems and branches.

When drawing the stems, the process starts from the bottom and progresses upwards. Each plant in the bouquet is assigned a random “Strength” value, which determines the number of nodes in the plant. These nodes serve as the vertex points for constructing the stem’s curve. Consequently, the quantity of nodes influences the overall size. Moreover, these nodes also serve as anchor points for generating branches, leaves, and flowers.

Some plant types have a wavier pattern in their stems, which is achieved by adjusting the parameters of their stem algorithm. In contrast, other plant types feature more straight and linear stems. For instance, leafy plants tend to generate predominantly straight stems, whereas plants with small flowers are more inclined to have wavy stems and branches. This deliberate variation in stem characteristics adds diversity to the collection, reflecting the natural variation found in real-world flora.

While each plant type has its predefined characteristics determined by specific parameters, there is still randomness for individual uniqueness, even among plants of the same type. This ensures that each plant in the collection remains distinct and visually captivating.

Plant Types

Plant Type 1

The only plant in the collection that features leaves not only holds aesthetic appeal on its own but also enhances the overall richness of the bouquets. Its inclusion adds a touch of foliage, providing a visually pleasing contrast to the flowers. The parameters of it’s stem are set to be generated more straight (Less wavy) The stem parameters of this particular plant are intentionally designed to generate a more straight and less wavy structure. Similar to the other plants in the collection, it is influenced by the “Strength” variable, which directly impacts the plant’s size, including the size of the leaves. Additionally, a randomized value determines the spacing between the leaves, resulting in a varied density and arrangement that contributes to the uniqueness of each plant.

Considering the importance of leaves in this particular plant, I dedicated time to experiment with the curves to develop a distinctive leaf shape. The leaf drawer function is intentionally designed to have variables that can be randomized, allowing all the leaves to have their own unique little details in their shape while maintaining the overall characteristics of the plant. It was crucial to establish a specific range of randomness to ensure that the leaves remain cohesive and visually consistent within the same plant.

4 plants that have the same strength value to show the effect of all other randomized parameters — spacing, size of the leaves, and deviations of the anchor points

The leaf drawer function employs 12 reference points to determine the actual 8 vertex points that form the curve of the leaf. These points are designed with a degree of flexibility, allowing for subtle variations and randomness in the positioning of the vertex points. The debug mode image below showcases the anchor points (vertex points) of a leaf, providing insight into the underlying structure

Showing the vertex points to draw the curve of the leaves

Plant Type 2

Plant Type 2 is one of the two types in the collection that can grow branches. Its stem and branches have a gentle waviness, although not as much as in Type 3, as to maintain focus on the elegance of the plant, particularly its tulip-like flower and bud. During the creation of plant variations, my initial intention was to keep the flowers in simpler bud-like shapes. However, curiosity led me to experiment further, and I began exploring how the petals would appear if they started to unfurl. I tried to keep them simple as well, since minimalism was one of the focuses while working on the plants. The resulting shapes captivated me, and I decided to incorporate them into the collection.

The bloomed version of this flower consists of two additional elements layered on top of the simpler elliptic bud structure. Each petal is formed by eight curve vertex points, forming its distinctive shape. Randomness is also introduced into the process to ensure that each flower generates a unique appearance. And there is a 60% chance for the flower to generate as bloomed or remain in its bud form, contributing to the variation within this plant type.

A typical Type-2 plant. There are flowers in bloomed and bud forms.

Plant Type 3

Plant Type 3 holds a special place in the collection, as it was the first plant I created when I initially started working on this idea. It has undergone evolution and refinement throughout the process, shaped with the direction of the entire collection.

Similar to Plant Type 2, this plant also has the ability to grow branches, with the number of branches randomized between 2 and 6 for each plant. The flowers of Plant Type 3 were intentionally designed to appear haphazardly drawn, with some flowers seemingly floating without direct connections to their branches. This intentional choice contributes to the overall abstraction and adds to the organic and spontaneous feel that I aimed to achieve in the composition. I tried to maintain the balance of it throughout the collection while ensuring that each element harmonizes with one another.

A typical Type-3 plant — The image shows the placement of the flowers on top of the branches

In the initial versions of this plant type, the flowers were represented using a basic shape: circles. These circles overlapped in a controlled yet chaotic manner, gradually forming a flower-like structure. However, at that stage, the composition lacked color. To enhance the visual appeal, I continued to experiment and refine the design. The flowers evolved alongside the development of the collection, becoming colorized and their shapes transformed into more intricate and distinct flower-like forms. I achieved this by adding a noise value to the radius for each angle step, introducing subtle variations and organic irregularities that mimic the natural complexity.

A close-up image to show the shapes of each circular element that is forming the complete flower of Type-3

Plant Type 4

This flower type differs from the others in that it lacks any branches in its structure. In fact, it shares identical parameters with the stem of Plant Type 1 (the leafy one), resulting in a straighter and less wavy stem compared to the other flower-bearing plants. Similar to Plant Type 2, it features both bud and blossomed versions of the flower, with the size of the flowers varying to maintain variety. Additionally, small stems are connected to each bud or flower, with varying sizes. The distribution of these small stems initially follows equal angular distances to create a sense of order. However, to introduce organic irregularity, there are also random deviations that bring these stems closer or further apart from each other, while still maintaining the presence of order.

The buds attached to each small stem share a similar algorithm with the circular shapes used to form the flower structure of Plant Type 3. However, the noise scale is slightly lower, resulting in more rounded shapes that resemble little buds.

When these buds bloom, they transform into classic flowers form with five petals arranged in a round shape, starting with a random angle. The size of these petals is inherited from the size of the buds. Smaller buds produce smaller flowers, while larger buds result in larger flowers. This size correlation ensures the organic variety that is maintained throughout the composition.

Circle Layer

The circle layer plays a crucial role in enhancing the overall color scheme of the composition. By introducing another dominant color through a simple shape. It enhances the notion of “Bloom” in the composition by helping to highlight the plant. This effect is particularly pronounced in pieces with a lower stem count, where the circles provide an additional element to the overall aesthetic appeal. Furthermore, the circle layer establishes a harmonious connection between the background and the foreground bouquet.

Plant Type-1 doesn’t generate any circles connected to it. There is only 1 circle in this Bloom, generated by a Type-2 plant (Bloom #92)

The circle layer consists of circles with a predefined color, determined by a randomly selected color algorithm. The positions of these circles are based on the coordinates of the node points of the stems and branches. For all plants except Type-1 (Leafy Plant), a deterministic formula is used to calculate the positions of the circles, using the coordinates of the first and last nodes of the branches as inputs. All the circles have the same color, and they can sometimes merge together when multiple plants are close to each other, forming a cloud-like shape composed of interconnected circles. This adds an additional visual element to the composition.

Circles form another shape like a cloud by intertwining each other (Bloom #7)

Color Palettes

In this collection, you will find a variety of color palettes. Some of these are pre-created color palettes that have been utilized in my previous collections as well. These palettes have been selected to complement the overall theme and aesthetic of the artwork.

Bouquet -> Metamorph

Clouds of Nostalgia -> Metamorph, Skyscape

Petals -> Skyscape, Ties That Bind

Spring Mist -> Skyscape

Aftermath -> Skyscape, Ties That Bind

In this collection, I placed a strong emphasis on incorporating a significant level of randomization into the color selection algorithm. Even with the pre-created and curated palettes, I introduced a randomness factor that adjusts the saturation and brightness of the original colors within a range of values. This intentional randomization allows for a degree of variety, even among pieces that share the same color palette. This adds to the overall sense of spontaneity that the collection aims to convey.

Additionally, I developed two completely randomized algorithms for the collection that employ different methods of color selection based on color theory. These algorithms generate color palettes in an unpredictable manner, enhancing the element of surprise and variation within the collection.

Triadic Random Palette (#124, #85, #8)
  1. Triadic Random: The Triadic Random algorithm is used to generate a color scheme that consists of three colors evenly spaced around the color wheel. The algorithm begins by selecting a random hue value within the range of 0 to 360. Based on this initial hue value, the algorithm determines the hues of the other two colors in the scheme by adding a slight randomness factor to each hue. In addition to the hue, the saturation and brightness values of the colors are also chosen randomly. However, there are restrictions in place to maintain cohesiveness within the composition. The algorithm ensures that the saturation values remain low, while the brightness values are kept high. Triadic Random aims to surprise the viewer with a wide range of colors and maintain the balance with the color selections.
  2. Analogous Random: The Analogous Random algorithm in this collection refers to a color scheme that utilizes colors that are adjacent to each other on the color wheel. The algorithm begins by randomly selecting a base hue value (0–360) as the starting point. From there, it chooses additional colors by slightly adjusting the hue value within a specific range to create a harmonious sequence of colors. Saturation and brightness values are also randomly determined within certain bounds, ensuring a cohesive and balanced composition. The Analogous Random algorithm aims to create a visually pleasing color palette with a sense of harmony and continuity, while still introducing a level of randomness for variation and surprise.
Analogous Random Palette (#147, #17, #22)

Release Details

The Bloom Collection has been released in multiple rounds, each consisting of 50 pieces. The price of the collection increases with each round. Once all the rounds are released, the collection will have a total of 200 pieces. As promised, 15 pieces were airdropped to the “Bouquet” Metamorph holders.

The rounds are being released on various marketplaces as pre-minted and listed at specific prices. Here are the details of the rounds:

Round 1: 50 pieces at a price of 0.8 AVAX (Sold-Out)

Round 2: 50 pieces at a price of 1.2 AVAX (Sold-Out)

Round 3: 50 pieces at a price of 1.8 AVAX (Sold-Out)

Round 4: 50 pieces at a price of 2.5 AVAX (Released)

Please note that the availability of the rounds may be subject to change.

Marketplace Links

Campfire, Salvor, Joepegs, Kalao, Opensea

Social Links

Twitter, Discord

--

--

Metamorphed

Creating generative artworks with algorithms // Art NFT collector