Generative Landscapes
Project Overview
Using the software Processing, create a moving generative landscape with unique and captivating results each time the program is run.
Durration
2 weeks
Solo Project

Introduction
A generative landscape uses an algorithm with parameters set by the coder to generate ever changing and varying landscapes. It requires both randomness and determinism imposed by the maker to limit this randomness, otherwise the landscape might run rampant. While it is easy to create technically differing landscapes, a designer has to be careful to avoid what generative artist Kate Compton describes as the “10,000 Bowls of Oatmeal Problem” in which she states: “I can easily generate 10,000 bowls of plain oatmeal, with each oat being in a different position and different orientation, and mathematically speaking they will all be completely unique. But the user will likely just see a lot of oatmeal.”
With this in mind, I jumped into this project, excited about the truly unlimited number of landscapes I could generate.
Initial Research
I decided to base my landscape on bodies of water. I wanted to capture the movement, highlights, and shadows, and express how waves rise and fall in such a fluid way.

While doing research, I came across perlin noise maps. I found the concept super interesting and liked how natural the movement could be made to feel.

I looked into possible ways to funnel perlin noise into water movement and eventually came across an image on Reddit from someone who had made a sky landscape. They created movement by having a bunch of thick lines that rotated, but also moved vertically and horizontally, creating a further illusion of depth. This provided inspiration for my landscapes.
First Iterations
Using this movement method as well as research done on connecting color change to perlin noise to get a gradual, natural effect, I created my landscape. I programmed a function to draw an oval at a given coordinate and determine rotation, size, and color based on given (x,y) noise data.
I really liked the program I had created, feeling it had good flow and color, but while it was technically generative, every time it ran it looked the same. In other words I was having the 10,000 bowls of oatmeal problem.

Revisions
In order to fix the oatmeal problem I decided to generate bodies of water at different times of day and seasons. I started by messing around with size, color, and speed. I found ranges that I liked for each variable and then applied this to my program. These changes gave me a wide variety of outputs, but was still constrained so the variables didn’t get too wacky.
Here are some screenshots from different runs of the program (a video can be found above):


