# Procedural Generation:

1,587

8

4

## Introduction: Procedural Generation:

Computing refers to procedural generation as a method of creating data using algorithms rather than a manual approach. Computer graphics calls it random generation and commonly uses it to create textures and 3D models. Video games are able to use this method to create large amounts of content in a game. Procedural generation has many advantages, including but not limited to smaller file sizes, larger amounts of content, and randomness for less predictable game play.

Anyone with a computer and curiosity can experiment with procedural generation. You do not need to be a mathematician or programmer. Using a computer to explore aesthetics is a powerful creative process. It is possible to learn a variety of tools and techniques for creating algorithmic images, generative art, parametric designs, and procedurally generated content.

This is an instructable about algorithmic images, generative art, and procedural generation. In this instructable, we will explore a creative process in which form is made by following defined processes. We will write instructions that a computer will follow to create images, animations, sounds, and sculptures.

There are many reasons you might want to use algorithmic methods. Some important ones include:

-exploring new aesthetics

-enhancing variety

-creating dynamic, responsive content

We'll begin with a practice in the Sierpinski Triangle, a fractal. It is infinitely detailed and self-similar. There are many, many ways to generate a Sierpinski triangle. This is an important lesson in parametric design.

Note: This content was inspired by a Computational Form class taken at Parsons School of Design. If you're ever going to take one class in design school I hope it is like Comp Form. Design technology is easy and fun when taught through this lens.

## Step 1: Step 1: Draw an Up-pointing Equilateral Triangle That Fills Most of the Page.

You'll need a basic paper and pencil or pen.

## Step 2: Step 2: Lightly Mark the Midpoint of Each Line of That Triangle.

Set a timer for 2 minutes. This will be the time you have to complete the next steps. No cheating! :)

Keep sketching.

## Step 4: Step 4: Go to Instruction 2.

These instructions go on forever. This is why it's important to stick to the 2 minute timer rule. When 2 minutes is up, you're done.

## Step 5: So, Why Are We Doing This?

Constructing the Sierpinski triangle teaches us about basic coding principles.

Take a look at the picture. As it turns out, most people will do this exercise very differently. Is your sketch exactly like any of these sketches? Probably not.

Here's why it matters. When humans follow instructions we have a huge amount of variety. Computers do not do this. When computers get instructions they follow them EXACTLY how they are entered.

This is why procedural generation is so great. It allows us to make things that make things. Instead of paper and pencil, we can explore a variety of programming languages, tools, and methods. We can create a variety of output: graphics, sounds, videos, animations, even 3D-printed objects.

The primary goals of this instructable is to introduce new ways of making and to encourage aesthetic investigation. The perspective used here should empower you to create and give you agency to make things you love. Go out there and apply procedural generation to your next project!

Feeling inspired? Get started making on these programming languages and tools:

Javascript

Processing

p5.js

paper.js

63 13K
88 3.7K
1 229 15K
50 10K

## 4 Discussions

This would be a good way to make some really interesting designs. I hope that you will keep making more cool stuff.

This is a great project with the exception that I'm baffled by the use of Javascript over Processing. This is exactly what it's made for. To allow creation on the computer without the code getting in the way. Subjecting non coders to Javascript is just mean. ;')

Haha! Awww. Good point. Don't want anyone feeling left out. I'll add Processing as a suggestion. Figured I'd recommend p5 rather than Processing initially because it might be a little more sustainable long term. :)
{"found_math": false, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0}