Noise in Creative Coding(varun.ca) |
Noise in Creative Coding(varun.ca) |
There are six patent claims that I have no interest in reading. Apparently there is also an OpenSimplex noise for circumventing the patent, but it only goes up to 4D [simplex usefully goes up to 5D].
Reading the patent itself, there's definitely some weirdness to it, like how specific it is about application to texturing. I believe heightmaps would be acceptable (IANAL).
In slightly unrelated news, a bunch of Microsoft patents on fonts expired last October.
https://github.com/smcameron/open-simplex-noise-in-c
Edit:
Here's the original: https://github.com/KdotJPG/OpenSimplex2
Additionally, it may or may not be legally distinct (hasn't been tested).
"A little bit of randomness makes computer-generated graphics and music seem more lively" (TAOCP, Vol 2 3rd Ed., Ch. 3, p 2)
Maybe unsurprisingly, noise is a really important aspect of audio and music as well. A lot of synthesizers have a parameter for adding white or pink noise to sounds. What's interesting is in a lot of music, my ears would never pick out the noise without actively listening very closely, but if you take the noise away the music sounds way more plain and empty in a very subtle way.
> What we need is a smoother, more organic randomness. That is what the noise function generates
Noise is really interpolated random numbers, and you can interpolate spatially and/or temporally. So noise definitely is smoother than a random number, but not exactly more organic.
> There are two flavours of noise—Perlin and Simplex.
There are lots more than two kinds of noise, just like there are a lot of different ways to interpolate data. This sentence should be corrected if possible.
> Vector fields are cool, but flow fields are an even more exciting visualization.
I don’t think this is standard terminology, flow field and vector field mean the same thing to me. If you google those two terms, you find images of what you’re calling vector fields for both, and also articles that say explicitly that they mean the same thing.
I usually think of the advected lines that are referred to as “flow” here called “streamlines”, or a “streamline visualization”.
BTW, the flow visualization rabbit hole is deep. The advection method in the article is a Newton integration, and there are many other ways push the particles around a vector field - and sometimes it really matters! It’s fun to figure out how to draw flow streamlines if the field is chaotic or divergent. Even more interesting & difficult is to compute and visualize the boundary (“separatrix”) between sections of the field that have different behavior.
Value noise? Worley? There's a ton of algorithms, not just Perlin's. I like Pixar's Wavelet more than the patent-free Simplex implementations, which are all kinda disappointing knockoffs.
Value noise is comically easy to implement, and comes in handy in a pinch. Usually loads of artifacts. Perlin noise is also easy but a bit more intricate (my first attempt at a fixed-point implementation got a sign wrong).
Notably I think Minecraft had a buggy implementation of multidimensional noise for a long long time, visible along chunk boundaries in the form of very sharp edges/transitions.