INTERGALACTIC GARDEN

INTRO

In this intergalactic garden, users can create their own garden in space. Users are initially brought to a garden of flowers, moving in random fluid motions. They can mouse over flowers with attributes they like, evolving the garden to have more of these particular attributes. This project uses a genetic algorithm to take into account users’ preferences so they evolve a garden to their liking. 

The live site is also here.

IDEATION

Throughout the semester, I’ve been drawn to algorithmic art. Examples include Emblems: Symbolizing City Data  – Mariya Chekmarova and HK Dunston (Data through Design Exhibition) and Zerospace – Joshua Davis.

When we learned about genetic algorithms and machine learning, I wanted to explore evolving generative art. In this class, I’ve been particular drawn to polar roses and having the user evolve something based on its traits. So, my idea was to create a user-generated garden. As plant owners, sometimes the plants we water and cultivate don’t come out as intended. In this garden, you can “select” for certain traits and have those traits evolve over time. Below are the Shiffman examples I learned and drew inspiration from.

DEVELOPMENT

Creating the flower (Round 1)

To start, I created a base flower. I experimented with controlling different traits of the flower that I would eventually map as genes in the flower’s DNA. I used sliders to control the angle, petal number, stroke width and color.

Changing angle and petal number of rose

When presenting in class, I got feedback that this flower may be too altered and that the user would have a limiting experience selecting for certain traits. Is there a way to add randomness to the flowers and to make them “bloom” in a sense? So, I looked into Perlin noise and began experimenting using Perlin noise to drive blooming flowers.

Creating the flower – Round 2 (Exhibit A)

Creating flower – Round (Exhibit B)

Ultimately, the Maurer Rose (Exhibit B) felt more organic and recognizable as a flower. In addition, there seemed to be more variability in the Maurer rose than the polar rose for showcasing the flower traits.

Setting up the grid

I thought a grid of flowers would create a coordinated fluidity of flowers in bloom. Using the grid, I mapped the values of the flower to the genes. Ultimately, the polar noise was moving too quickly so I worked with Casey Conchinha, to use millis() in p5.js to create the tempo of blooming flowers. I didn’t want the blooming to be too fast that it overwhelmed the user and not to slow so the movement wasn’t apparent. So, I experimented until I found a tempo I liked.

User interaction

When I was experimenting with evolving the generation – I found that as it continued to evolve, sometimes the garden didn’t evolve the way I liked. If this were an ideal garden, I would have a garden with flowers of traits that I liked. So, I added a Reset button so users could start over if wanted.

NEXT STEPS

I’ve been thinking about the user interaction for evolving flowers. As this is a digital site, a mouseover of the boxes seems pretty intuitive. But, what if this were projected onto a bigger screen. I could have a Kinect where users hand motion over the flowers could be the selection. Watering flowers is a physical act so this step would translate into a more physical space.

ACKNOWLEDGEMENTS

  • Daniel Shiffman
  • Billy Bennett
  • Casey Conchinha

Leave a comment