These images are created using procedurally generated 3D meshes in the Unity game engine. The procedural algorithm makes use of Perlin Noise, a form of “gradient” noise that ensures adjacent values are near one another unlike the completely random noise found in something like television static. This noise is then used to create a heightmap, adjusting the height of incremental coordinates on a rectangular plane.
Perlin Noise is often used to create complex procedurally generated terrains, using multiple layers of noise to create more realistic results. This method can generate mountains, meadows, oceans, or even entire worlds with great detail. Adding that complexity gives more freedom to the user to adjust several values, but an untrained user may be overwhelmed by the options in front of them. Terms like “lacunarity”, “octaves”, and “persistence” don’t immediately make sense in the context of maps, landscapes, or other things this method can generate.
For this reason, I chose to allow the user to adjust only one thing: the coloration of the final product. The algorithm takes care of producing a randomized 3D mesh, but the user determines the coloring of that mesh. Using a user-defined gradient (using the simple gradient editor provided by Unity), the system colors tiles within the mesh based on their height. The lowest points correspond to the far left of the gradient, while the highest points correspond to the far right.
The coloration of this gradient plays a large role in what the mesh appears to be. Using shades of blue may imply an ocean. Yellow, red, and orange may suggest a pool of lava. A more varied grouping of colors may look like a map, depicting bodies of water, sandy shores, grassy meadows, forested areas, and even mountains.
The images below show the gradient and resulting mesh produced by someone who had no knowledge of the system, or even what it would produce.
Procedural generation with Perlin Noise is a powerful tool, and these examples only scratch the surface of what it is capable of. That being said, even constraining the user input to a selection of colors can produce a great variety of results.








I was surprised by how well these turned out just by setting the rules!
Have you done any projects like this before?
I have! I’ve done a decent number of projects procedurally generating maps using a variety of generation methods (perlin noise, random walk, poisson distributions, cellular automota, binary space partitions, etc.) and I had one project where I made an editor where you could drag and drop different methods together and combine them in different ways.
For this project, I wanted to do something simple but also new and interesting to me. I had never done this stuff as an actual 3D mesh before, so that was the exciting part for me 🙂
I appreciate the way you only let users do simple stuff and let the program handle other issues.
How your users think about their results? How they feel about them?
The comment I received after my user made theirs was “it’s ugly!”
this is cool how generative this can be just using sliders. I love this low fi imagery. the color are melting together and its hard to even tell its digital at times.
where did the idea come to share this with others as a tool for generating artworks? Could you see this scaling or being a standalone piece outside of just an assignment?
I’ve been really interested in procedural map generation for games for quite some time. It’s one of the things that actually got me interested in game development. I’ve used similar work for small aspects of game projects here and there, but it could definitely play a large role in something or even be a standalone piece. I know people who use map generators to create worlds for dungeons and dragons, or even people who just like to have artwork of maps up on their walls. This could definitely be used for that. There’s a lot of room for complexity and customization.
It reminds me so much of heat mapping. I’m impressed in the range of outcomes from the rules in place. I would not of guessed.
I was surprised with how the “black box” feeling of this enables people to retain a feeling of authorship without needing the information about how it worked. Because they are the ones moving the sliders, they feel like they participate or even create the end result. In reality it is the algorithm in the background that does the work. I love the slider idea, could it have been possible for the height maps to be controlled by sliders as well? Would that have even made sense? I am not terribly familiar with the Unity interface. I feel inspired to take the green and blue image you chose as your main image and make a knitted sweater. Love it.