Generative Landscape

Concept and Description:

For this mini project, I created a generative landscape that generates a slightly different sketch every time it’s played. My landscape consists of a ferris wheel, sun, clouds, birds, stars, and balloons. Most objects are generative, so they are in different positions and/or different colors when played. Some other notable objects or elements in my sketch are the time of day (day, sunset, night), weather (clear, rain, fog), and the location of my egg in the ferris wheel. 

Here are 9 out of many possibilities of my landscape:

Coding:

First, I created different variables for different elements since I would need to either move some around or generate randomness.To generate randomness, I initialized my variables inside the setup and had them declared before setup since I only wanted to generate randomness once. One example would be for translateX and translateY, which would generate the random position of the sun. 

 

I wanted to generate different times of day based on the sun’s Y position, so if the sun was below 200, it would be day; if it was between 201 and 300, then it would be during sunset; and anything above 300 would be nighttime with stars that were generated with a for loop. I also changed the color of the grass, sun based on translateY to match the time of day.

For the ferris wheel, I used shapes, lines, and arcs. I also placed eggs inside the ferris wheel, as suggested by Professor Leon.  The eggs are in the cart by probability, where I declared a variable that randomly chooses a number from 0 to 99. If the number is below 50, then the eggs will appear in certain carts; if the number is between 50 and 60, it will appear in other carts; and any other number would be another set of eggs in different carts. 

I also did probability for the fog and snow. There would be fog if the number was larger than 10 and smaller than 20, and snow if the number was below 35.

Another place where I used a for loop is the position and slight bouncing of the balloons.

Line 210 updates the vertical position of the balloon based on the cos() function of the angle. Then, cos(angle) is multiplied by 10 to control the amplitude of the motion, and the result is added to 300 to determine the base position of the balloon, so the balloon oscillates vertically.

 

Conclusion:

How is drawing by hand from observation different from programming the computer to draw for you? Can you think of some commonalities as well?

When you draw by hand, you can control how fast you move your pen as well as what direction you want to go, but with the computer, you have to code for the speed and direction you can go. Additionally, drawing by hand gives you more freedom as you can draw anything you would like, but with programming, you have to follow a set of rules, and there are sometimes limitations. But programming allows you to be more exploratory since you can play around with the values and variables to achieve different outputs and effects. As for commonalities, both allow you to be creative and understand composition and design. Additionally, there is an iterative process because they both have an iterative process for refinement where you can make adjustments to get your desired outcome.

What properties have you manipulated in the repetition? Describe your observations and visual outcomes during the process.

Properties that were manipulated in my landscape were translation variables, color, randomization, movement, and drawing shapes. The visual outcomes would be the sun, clouds, bird, and balloon in different places throughout the canvas. The random appearance of eggs on the ferris wheel and changing colors of objects make the canvas more fun and colorful. Additionally, the occasional fog or snow effects add to the atmosphere and depth. 

What makes a good generative pattern?

Creating a good generative pattern involves a combination of technical skill and an understanding of aesthetic principles. For the generative pattern itself, there should be variety, randomness, balance, repetition, interactivity, and more. This way, it keeps the viewer engaged and curious about the artwork.

 

Generative Motion & Project Proposal

Sketch 1: 

This sketch generates a series of circles with varying sizes and colors, where each circle’s size is influenced by a sine wave function. I used the variables sinInput, sinInput2, sinInput3, etc. to control the phase of the sine wave for each circle’s size. As for drawing the circle, its size is determined by the sine value of its respective sinInput variable multiplied by a random value between 50 and 200. The colors of the circles also change randomly on each frame, creating variation and visual interest, making it generative. 

Sketch 2:

This sketch is a dynamic visual scene with moving shapes with changing transparency. crossX and crossY to determine the initial position of the central circle, speedX and speedY determine the initial movement speed in the horizontal and vertical directions, and transparency initializes the transparency value.  The background color is also randomized and not redrawn on each frame, which allows the shapes to leave a trail as they move. If the shape goes beyond canvas boundaries, it will reappear. The background is not redrawn on each frame, allowing shapes to leave a trail as they move. Additionally, the transparency of the shape gradually increases over time, which gives it a semi-illusion of shooting stars.

 

Sketch 3:

This sketch generates shapes with changing colors and positions based on trigonometric functions. Variable sinInput controls the phase of the sine wave, which affects the position and color of shapes, while sinSpeed determines the speed at which sinInput changes, which is initialized with a random value between 0.01 and 0.05. The background color is set based on the value of sinInput, which results in a grayscale background that changes over time. As the background changes, the colors of the shapes change as well, their initial color will become their complementary color. 

I am considering incorporating this sketch into Project A because I find it intriguing how the colors of the shapes shift based on grayscale. In my project, I envision the imaginary creature I create adapting its color or motion in response to changes in grayscale or other variables I define. Since this sketch is relatively simple, it provides a great opportunity for experimentation with various shapes to enhance the complexity and diversity of the composition. I plan to introduce interactive elements such as mouse or keyboard controls to allow users to manipulate the shapes’ parameters and motion patterns, adding an engaging layer of interactivity. Additionally, to further enhance the visual appeal of my creature, I will explore different color schemes and blending modes to create captivating and dynamic visuals.

Artistic Inspiration Research – Anna Ridler

Introduction

Anna Ridler is an artist and researcher known for her desire to work with art technologies, machine learning, and AI/generative algorithms. She is interested in ideas from the natural world, so her works often revolve around nature and collections of datasets to create unique and unusual narratives.

For example, one of her most famous works is Mosaic Virus, which explores themes related to capitalism. In this project, she utilizes machine learning algorithms to generate images of tulips. By training algorithms on datasets containing images of tulips from the Tulip Mania era, Ridler creates digital representations of these blooms, exploring the intersection of nature, economics, and technology.

Ridler is renowned for using generative algorithms to create aesthetically spectacular artwork. These algorithms provide unique and frequently complex visual results by creating images according to predetermined parameters. Her use of machine learning techniques, which are crucial to her research into AI’s potential in art creation, is one of the work’s most noteworthy features. Through the use of these algorithms, she creates and evaluates content within an artistic framework. The majority of the creations in her portfolio are digital, including interactive installations, films, and digital photos. These media are her canvases on which to paint her creative ideas.

Mosaic Virus - Art Souterrain

Discussion

The significance of Ridler’s work is that it challenges traditional notions of artmaking by using machine learning algorithms and data to create visually stunning and unique pieces. By using AI as a creative tool, she pushes the boundaries of what art can be and explores the connection between human creativity and computational processes. But by using algorithms to generate art, she raises questions about authorship, creativity, and the role of technology in shaping artistic expression

As for the connections with the concepts we are learning in CCLab, Ridler makes me realize the potential of code as a creative tool and demonstrates how computation processes can be used to generate visually compelling artwork. In CCLab, we’ve discussed generative art and the unpredictability of its outcomes. Ridler’s work serves as a prime example, as seen in the Mosaic Virus project.

There are many things we can learn from Ridler, as she has many valuable insights into the intersection of art, technology, and society. She encourages people to experiment with technology since there will always be some unexpected or surprising outcomes. We can combine our interests to create different types of art, as well as using different types of tools for problem solving.

Additionally, Ridler encourages and inspires me to be more experimental and innovative in future creative coding projects. Her approach challenges traditional methods, inspiring me to think outside the box. I will definitely look into more of her other projects for inspiration in the future as well.

Conclusion

All in all, from my point of view, Anna Ridler is a very interesting artist to research and explore. Her groundbreaking work at the intersection of art, technology, and artificial intelligence offers a fascinating glimpse into the potential of creative coding. With this new knowledge about Ridler and her works, I can draw inspiration, explore more potential with the code I learn in class, and try to think more creatively. I could also potentially look into nature and how things work to incorporate it into my project.  Additionally, one important aspect of Ridler’s work that I would like to incorporate into my project would be the narrative aspect, so I am able to engage viewers alongside the visual experience.

 

Interactive Memories and Dreams

Concept and Description:

For this mini-project 2, I had to recreate a memory of Zora and Princess, our campus cats! To make this memory interactive, I changed the background of Zora’s self-portrait and made the background blue with some reoccurring clouds. When frame count is at 150, the cat will “meow,” and when I move Zora to the left side of the canvas towards the meow, “click ‘c’ to find Princess” pops up.  Then, I will be able to click ‘c’ and Princess will appear. When Princess appears, Zora’s facial expression changes to happy and shocked. Here is Zora’s original self-portrait below:

Additionally, Princess only appears when ‘c’ is clicked, so when ‘c’ is not clicked, Princess disappears. When Princess is not there, Zora’s expression will also go back to her default expression. Here is a demo video of my project below.

Coding:

For this mini-project, I had to create variables to be able to move the clouds and self-portrait. Additionally, I made variables for the cat so I could easily adjust the position of that cat since I did not know where to position it when I started coding. Here are my variables:

The most challenging and time-consuming part was having Zora’s self-portrait follow my mouse, so I had to make all her x values into mouseX with a few adjustments based on their location away from the mouse. I struggled a bit with the eyebrows and making the lines move with my mouse, but thanks to Leon, I was able to figure out how to move them.

For the clouds, I had to make them reappear, and I wanted them to move at different speeds, so I had to create variables for each of the 3 clouds, including their x values and speed.  I wanted the clouds to reappear on the left side when they were completely out of the frame and have them come into the frame so the action looked smoother so I had to adjust some values. Here is my code for my variables:

Another struggle I had was to make the text disappear at a certain frame count, but I was not sure how I was able to do that, so I had to cover up the text with a rectangle that matches the background color.

 

Reflection:

What have you learned throughout the process of using the setup and draw functions, as well as variables and conditionals?

I learned that although it may look easy when the professor demonstrates in class, the real challenge is using what I learned in class and applying it to this mini-project. I also learned that there are many possibilities for creating different things, even if what we are learning are the basics and foundations.

Reflect on the language your partner used to describe the memory or dream and your interpretation of it using code.

Zora said that it was a great touch to build a scene with a sky and clouds.  She also likes the appearance change to show her emotion when she finds Princess. The text instruction is clear to her, but a small suggestion she gave me was to declare that the mouse should be pressed before clicking “c” to find Princess, but an easy solution to that is clicking on the canvas after pressing start to activate the canvas.

What are your thoughts on digital interactions and real-world interactions? After using mouse and keyboard interaction, describe an interactive device — one that doesn’t exist yet — that could let you better recreate the memory or dream in p5.js

I think that digital interactions can make our real-world interactions more interesting. It also allows us to be more creative and think about how we could recreate real-world interactions with code. An interactive device that could let me better recreate a memory or dream is maybe one with an interface where I could type and describe my feelings or sounds from the memory or dream, and the device would help me visualize it.