Yesterday’s live stream, in which Simon continued teaching Perlin Noise (tweaking values and flow field):

Yesterday’s live stream, in which Simon continued teaching Perlin Noise (tweaking values and flow field):

Today’s livestream devoted to Perlin Noise:

Livestream screenshot:

Simon built a beautiful interactive circle intersection program in Processing, in which the circles detect intersection and change colors (according to Perlin Noise) once it occurs. The player can control the number of circles by adding and removing them in two modes (mouth clicked and mouth dragged). Simon added a button to switch between the two modes. (Loosely based upon Daniel Shiffman’s tutorials on checking object intersection).

Simon translated Daniel Shiffman’s Graphing 1D Perlin Noise tutorial into Processing (Java). The project involved combining perlin noise and sine wave:

He also attempted to translate Perlin Noise Flow Field into Processing:

Simon wanted to pretend like he is flying over an endless terrain ad completed this Terrain Generation with Perlin Noise in Processing Coding Challenge by Daniel Shiffman yesterday.

Simon had a lot fun following Daniel Shiffman’s Graphing Perlin Noise tutorial. In the video’s below he explains some of the basic concepts he learned. :

I think this is probably the most beautiful coding challenge Simon has completed so far. It’s based on a Perlin noise coding challenge by Daniel Shiffman where you’re asked to create a two-dimensional flow field with the help of the p5.js library, using the z-axis to represent time. Instead of actually writing it in p5, however, Simon created the project on the Openprocessing.org website (he has recently discovered through GitHub) and saved it online, so the animation he made is available at at his permanent link:

https://www.openprocessing.org/sketch/397924

Perlin noise is a type of gradient noise that is used in computer visual graphics to increase the appearance of realism. In this video, Simon talks about the project:

Perlin noise is most commonly implemented as a two-, three- or four-dimensional function, but can be defined for any number of dimensions. An implementation typically involves three steps: grid definition with random gradient vectors, computation of the dot product between the distance-gradient vectors and interpolation between these values. Here are some videos of how Simon completed the coding challenge step by step. The project relies heavily on vectors: