Welcome to the class! This first module is about getting acclimated to the class. What coding language / environment would you like to use? Suggested is p5.js but you are welcome to create your assignments with any language or framework you like.
The following emoji key will hopefully help you navigate the material for each module.
- 🚂 Video tutorial from Coding Train
- 🎥 Other video tutorial
- 📕 Reading
- 💻 Code examples
- 🎨 Creative project references
For each module, I will provide written and video tutorials on the topics. You can review whichever format suits you best. If the amount feels overwhelming, please reach out and we can help you narrow things down, and select a subset of the material to focus an exercise around.
- 🚂 Introduction to Perlin Noise - 11 min
- 🚂 Perlin noise() vs. random() - 10 min
- 🚂 Graphing 1D noise - 13 min
- 🚂 2D Random Walk - 15 min
- Pulse Room by Rafael Lozano-Hemmer
- The Book of Shaders on Noise by Patricio Gonzalez Vivo & Jen Lowe
- Quantum Cloud Sculpture
If you feel you need a p5.js refresher, specifically around Object Oriented Programming in JavaScript (classes and objects), here are links to the ICM videos:
For each module, I will provide a list of additional video tutorials and readings that you may draw on for further exploration. It's unlikely you would be able to consume everything in one week and if you are looking for guidance about what might fit with your learning style the most, please reach out.
- 📕 Perlin Noise with p5.js by Gene Kogan
- 🚂 2D Perlin Noise - 11 min
- 🚂 noiseDetail() - 4 min
- 🚂 Open Simplex Noise
- 🚂 Diffusion-Limited Aggregation - 47 min
- 🚂 Random Walker with Vectors and Lévy Flight - 16 min (Note: vectors will be explored in detail next week!)
- 🚂 Self Avoiding Walk
- 💻 Nature of Code Introduction Example Collection
- 💻 Additional Perlin Noise Example Collection
- 💻 Basic Random Walk
- 💻 Diffusion Limited Aggregation
- 💻 Random Walk Lévy Flight
Using the random walker as a model, develop a sketch that experiments with motion. Here are some ideas but you should feel free to develop your own.
- Use a random walker to "paint" colors.
- Try a walk in 3D, see Quantum Cloud for an example.
- Create a random walker with dynamic probabilities. For example, can you give it a 50% chance of moving in the direction of the mouse?
- Use the random walker as a template to simulate some real-world "natural" motion. Can you develop a set of rules for simulating that behavior? Ideas: nervous fly, hopping bunny, slithering snake, etc. Consider the challenge of using minimal visual design, i.e. black and white primitive shapes. Can you give your "being" a personality? Can it express emotions -- happiness, sadness, fear?
Another way of thinking about the assignment is to apply the rules of motion to another medium of expression: sound, color, number, scale...
- Walk through RGB or HSB space (as opposed to XYZ)
- Walk through Pan, Amplitude, Pitch (as opposed to XYZ)
- Plot an "orchestra" of instruments on an XY plane and move a melody through it like.
- Create a constantly morphing creature shape using
createShape()
andvertex()
. Play with how you change the number of vertices, anchor points.
- Document your work on the web with a short blog post. Here are some guiding questions if you are not sure what to write about:
- What did you originally intend to create?
- Narrate the process of creating your sketch.
- What resources and examples did you draw on to create your sketch? What was most helpful / least helpful from this week’s materials.
- What problems/discoveries did you encounter along the way?
- Submit a link to your blog post to the course wiki.