
Ken's Academy Award: Noise and Turbulence - mendeza
http://cims.nyu.edu/~perlin/doc/oscar.html
======
westoncb
This is about Ken Perlin/'Perlin Noise'. From the Wikipedia page on Perlin
Noise:

> _Perlin noise resulted from the work of Ken Perlin, who developed it at
> Mathematical Applications Group, Inc. (MAGI) for Disney 's computer animated
> sci-fi motion picture Tron (1982). In 1997, he won an Academy Award for
> Technical Achievement from the Academy of Motion Picture Arts and Sciences
> for this contribution to CGI._

[https://en.wikipedia.org/wiki/Perlin_noise](https://en.wikipedia.org/wiki/Perlin_noise)

Edit: also, if you'd like to see something more recent from him, I'd recommend
this talk:
[https://www.youtube.com/watch?v=4YnVhTyrYbo](https://www.youtube.com/watch?v=4YnVhTyrYbo)
[SIGGRAPH Asia 2011 - Featured Speaker, Ken Perlin] —interesting stuff, and
he's an engaging speaker.

~~~
nothis
Ah, I wondered why it felt like Perlin noise had been around for way longer
than 1997.

------
userbinator
Perlin Noise and other procedural generation techniques also make frequent
appearances in demoscene productions.

[http://www.iquilezles.org/www/articles/morenoise/morenoise.h...](http://www.iquilezles.org/www/articles/morenoise/morenoise.htm)

as featured in

[https://www.youtube.com/watch?v=jB0vBmiTr6o](https://www.youtube.com/watch?v=jB0vBmiTr6o)

~~~
jedimastert
I've always loved the demoscene stuff I've seen. How would you recommend
getting into it? Both the community and creation

~~~
SonOfLilit
Tinker with things on shadertoy.com, first with 2D things and then maybe do a
tutorial about raytracing and start tinkering with 3D things.

------
psranga
This function works surprisingly well in practice.

IIUC, it's a hash function defined over 3D space with tunable gradient between
points.

The cool thing about the the marble vase example is that marble texture
continues _on the inside_. So if you look on the inside of the vase the
texture will still be there. _automatically_
[[http://cims.nyu.edu/~perlin/doc/vase.html](http://cims.nyu.edu/~perlin/doc/vase.html)]

Here's an example I made [lots of copy pasta btw :)] when learning this to get
a wood texture [a simple application of Perlin noise, btw :)]. If you cut
through the wood, the texture will still be there.

[http://shaderfrog.com/app/view/828](http://shaderfrog.com/app/view/828) [the
dividing factors in line 236 tune the gradient]

~~~
ekianjo
Is that what they use in Metal Gear Rising to simulate the texture in the
inside of objects?

~~~
psranga
Sorry, I don't know.

------
jasim
This was used by Flipboard for their Duplo algorithm which creates plausible
layouts for web content. They used Perlin Noise to create variations between
pages to create an 'organic' sense to the algorithmically generated layouts.

[http://engineering.flipboard.com/2014/03/web-
layouts/](http://engineering.flipboard.com/2014/03/web-layouts/)

~~~
nothis
Man, that's a super interesting use of it. Controlling randomness shows up in
so many - often unexpected - places when dealing with aesthetics.

------
yantrams
For those who are looking for a more detailed understanding of the algorithm
and the choice of functions involved, I recommend
[http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise....](http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf)

~~~
a_e_k
I wrote a detailed explanation last year which might also help some:
[http://eastfarthing.com/blog/2015-04-21-noise/](http://eastfarthing.com/blog/2015-04-21-noise/)

------
mendeza
Love his work and his current research project ChalkTalk. Dynamic sketches
with knowledge embedded in it will completely change how we learn and
communicate. Check out his talk :
[https://youtu.be/nHBAGke3eCU](https://youtu.be/nHBAGke3eCU) if interested!

------
empath75
And also made a billion dollars for Notch. Perlin noise is the basis for
minecraft terrain generation.

~~~
taneq
That's kind of like saying the random() function made a billion dollars for
Notch, though. What made the money was the whole game, not just one algorithm
used.

~~~
khazhou
I believe the comment is intended to point out to HN readers that this
algorithm was central to the game, and since the game made a large amount of
money, then this algorithm served (at least in part) as a basis for Notch's
monetary rewards. I do not believe the comment was meant to suggest that this
one algorithm by itself made money, as certainly any reasonable reader would
understand that it is the whole game that made money. It is unlikely that the
commenter was suggesting that you could, for example, sell a Perlin noise
function for a billion dollars, or even generate any revenue directly from the
noise function itself, absent a compelling game around it.

The commenter was, I believe (and I say this without having any inside
information as to his or her thought process) employing a technique in which
the full range of details surrounding an event are ignored in favor of one
aspect (here, the Perlin noise function) on which we want to focus.

~~~
tarpherder
But at the same time it seems to casually reduce Notch's effort to "used
perlin noise". He didn't need perlin noise per-se; there are countless of
other terrain generation techniques. But perlin noise, in part, made minecraft
what it is today, that's true.

------
EGreg
Perlin Noise is why I thought I'd study computer science at NYU grad school
with Ken Perlin as my advisor.

Well I met him - and that's it. My major wound up being math :-)

------
zzalpha
Fun fact: since Perlin noise basically provides a smoothly varying scalar
gradient over a space, it's trivial to extend it to higher dimensions
(including variance through time), and to use it to generate things like
vector fields when you need smooth but random motion or other effects.

Also fun to toy with different interpolation and noise generation algorithms.

It's a wonderfully simple idea and great fun to play around with!

~~~
rux
My brother wrote a rather nice clojure library that does 4D texture generation

[https://github.com/mikera/clisk](https://github.com/mikera/clisk)

My simple gamer (ie every texture is 2D) brain had a bit of trouble coming to
terms with continuous 4D textures, and I think it was talking about how Perlin
noise could be continuous that made the idea stick eventually.

------
lifeisstillgood
So I would like someone to correct my understanding if possible

Reading the Wikipedia explanation (ok, I have been ill recently) I see a
process that given say a 2D grid, can assign for each cell in the grid a
single number, that number is derived from a function applied to each of its
corner nodes.

The function basically assigns a random number around the node (i.e. 360
degrees) and then merges that random with the distance to the point, and then
merge that with all four points auchbthat one cell now has one number that is
affected by distance, it's neighbours and randomness

I think that pretty clearly gives a smoothed map that will not have the
junpiness of random map placements

Seems fairly good way to make a procedural map.

What else is it useful for?

~~~
dahart
Another fun application of Perlin noise is fake fluid dynamics. If you take
the curl of a Perlin noise field, you get a nice turbulence function that has
no divergence. Fluids are usually approximated as being incompressible, and
that's part of what makes fluids look fluid. Curl of Perlin can give you a
nice fluid-looking turbulence. Curl of any noise is divergence-free, of
course, but Perlin works well and looks better than others.

Perlin noise is actually more expensive to evaluate than a real fluid
simulation. The fun/important part is that Perlin is static, so there's no
simulation and you can render your frames out of order and in parallel. With a
fluid simulation, each sim frame depends on the previous one. Fake curly noise
is also easier to set up and tune than a fluid sim.

I and others have used this technique on lots of films for quick turbulent
smoke, fog, and particulate effects.

~~~
lifeisstillgood
Thank you for your replies - I will try writing my own perlin generator for
something.

I am taking a break from HN for a few weeks, and would not have replied but I
just wanted to say the ability to ask a question and get back "yeah I used
this technique on that movie you saw" is something no other forums provide.
It's awesome.

I will smile as I take my screen break. Cheers

------
josephg
A few years ago I ported some efficient perlin noise generation into
javascript to play with it. Here's a really simple visualisation of what
perlin noise actually looks like:

[http://josephg.github.io/noisejs/demo3d.html](http://josephg.github.io/noisejs/demo3d.html)

(This is actually a 3d simplex noise function, where the z axis is mapped to
time. Simplex noise is a variant on perlin noise. Perlin noise is also in the
repo but I don't have a demo of it online.)

Repo: [https://github.com/josephg/noisejs](https://github.com/josephg/noisejs)

~~~
kzisme
Thanks for the link(s)!

Awesome stuff

------
wwwigham
The 'improved noise' mentioned in the page is, I believe, more commonly known
as 'simplex noise'[1], as it is mathematically based on manipulating
n-dimensional simplicies. If you're interested in noise and using it well, his
presentation 'flow noise'[2] is quite educational.

[1][https://en.m.wikipedia.org/wiki/Simplex_noise](https://en.m.wikipedia.org/wiki/Simplex_noise)
[2][http://mrl.nyu.edu/~perlin/flownoise-
talk/](http://mrl.nyu.edu/~perlin/flownoise-talk/)

------
melling
I've got a few Perlin Noise links on Github:

[https://github.com/melling/ComputerGraphics#perlin-
noise](https://github.com/melling/ComputerGraphics#perlin-noise)

------
auselen
This was something I always wanted to look into, and I did a while ago. I
added options to visualize grid, vectors and make it moving to show the
intuition people around. I think it helps discussion a lot. (there might be
errors in implementation or it might be completely off if my memory failing
me)

[https://jsfiddle.net/auselen/6owerdnh/](https://jsfiddle.net/auselen/6owerdnh/)

------
known
You made my day.

------
k2xl
Doesn't really say how

~~~
emmelaich
I've found most stories headlined "How something did something else" tell you
nothing about how.

I guess "how" is American (or headline-ese) for _why_ '

~~~
thedz
This story was headlined with "Noise and Turbulence"

------
snowwrestler
Scroll up for the actual story. The link is anchored to the code sample at the
bottom for some reason.

~~~
sctb
Thanks, we removed the anchor from the link.

