7 ms·
Ken's Academy Award: Noise and Turbulence
- k2xl 10y agoDoesn't really say how
- emmelaich 10y agoI'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 10y agoThis story was headlined with "Noise and Turbulence"
- deleted 10y ago[deleted]
- andrewvijay 10y agoHe has written a couple of lines above the code.
- grzm 10y agoAgreed: "It seems that my techniques found their way into the various software packages" leaves the how completely to the imagination :)
- keithnz 10y agoyou need to scroll up... ---- In 1997 I received a Technical Achievement Award from the Academy of Motion Picture Arts and Sciences for work I had done on procedural texture. For example, the NYU Torch on the right is made entirely from procedural textures (except for the text along the bottom). The flame, background, and metal and marble handle are not actually 3D models - they are all entirely faked with textures. A hi-res image of a marble vase I made using this technique can be found here. A bunch of other texture images I created can be found here. I then improved it, and wrote a paper about that. You can play with interactive demos of the improved version here. You can play with designing noise-based textures yourself with a really nice interactive Java Applet created by Justin Legakis. Also, the interactive fractal planet demo on my home page is made using these techniques. It seems that my techniques found their way into the various software packages, such as Autodesk Maya, SoftImage, 3D Studio Max, Dynamation, RenderMan, etc., that folks use to make the effects for feature films, which is way cool. Movies look better now, and I guess that makes me a good American. Here's what the award actually says: To Ken Perlin for the development of Perlin Noise, a technique used to produce natural appearing textures on computer generated surfaces for motion picture visual effects. The development of Perlin Noise has allowed computer graphics artists to better represent the complexity of natural phenomena in visual effects for the motion picture industry. Needless to say, my Mom was very happy.
- snowwrestler 10y agoScroll up for the actual story. The link is anchored to the code sample at the bottom for some reason.
- sctb 10y agoThanks, we removed the anchor from the link.
- deleted 10y ago[deleted]
- userbinator 10y agoPerlin Noise and other procedural generation techniques also make frequent appearances in demoscene productions. http://www.iquilezles.org/www/articles/morenoise/morenoise.htm http://www.iquilezles.org/www/articles/morenoise/morenoise.h... as featured in https://www.youtube.com/watch?v=jB0vBmiTr6o https://www.youtube.com/watch?v=jB0vBmiTr6o
- jedimastert 10y agoI've always loved the demoscene stuff I've seen. How would you recommend getting into it? Both the community and creation
- ekianjo 10y agoAttend a demo party.
- SonOfLilit 10y agoTinker with things on shadertoy.com, first with 2D things and then maybe do a tutorial about raytracing and start tinkering with 3D things.
- melling 10y agoI've got a few Perlin Noise links on Github: https://github.com/melling/ComputerGraphics#perlin-noise https://github.com/melling/ComputerGraphics#perlin-noise
- westoncb 10y agoThis 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 10y agoAh, I wondered why it felt like Perlin noise had been around for way longer than 1997.
- yantrams 10y agoFor 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.pdf http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise....
- a_e_k 10y agoI 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/
- psranga 10y agoThis 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]
- empath75 10y agoAnd also made a billion dollars for Notch. Perlin noise is the basis for minecraft terrain generation.
- taneq 10y agoThat'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 10y agoI 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 10y agoBut 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.
- wtallis 10y agoSure, and the choice of coefficients was as important to the terrain generation as the noise function itself. But the terrain generation was absolutely crucial to Minecraft's success and in the early versions provided almost all of the game's depth and novelty. Without interesting and infinitely varying landscapes to explore, early Minecraft would have had much narrower appeal.
- EGreg 10y agoPerlin 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 :-)
- known 10y agoYou made my day.
- josephg 10y agoA 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 10y agoThanks for the link(s)! Awesome stuff
- jasim 10y agoThis 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 10y agoMan, that's a super interesting use of it. Controlling randomness shows up in so many - often unexpected - places when dealing with aesthetics.
- zzalpha 10y agoFun 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 10y agoMy 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.
- wwwigham 10y agoThe '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/
- mendeza 10y agoLove 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!
- auselen 10y agoThis 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/
- lifeisstillgood 10y agoSo 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 10y agoYour description is accurate, but the most important part to know is that the random values on the lattice are used as the derivatives of the noise function. The noise function itself is then an itegral of those derivates. By putting the derivatives at the lattice points, the grid structure underneath becomes far less visible. If you used the random values directly, and just interpolated those using a spline, you get a 0-value derivative at exactly every lattice point, and you end up seeing the grid structure in the result, it becomes glaringly apparent. Using Perlin noise, the minima and maxima are offset randomly from the grid, making the overall function feel much more natural. It's useful any time you need some natural looking randomness in a texture. Perlin noise is standard in pretty much all 3d rendering software for films, and it's becoming quite common for games. The turbulence part of this is when you take a whole stack of Perlin noises at different frequencies, i.e., different grid sizes, and sum them. It's more expensive of course, but this is how to get extremely realistic feeling noise, it gives you medium and high frequencies. And it further hides any grid artifacts. I used Perlin noise as a wind function to animate bushes & trees in the animated movie Madagascar. Perlin actually works really well for windy looking motion because of the way it's derviatives work. I tried a whole bunch of other noise functions, and Perlin was the only one that worked well.
- dahart 10y agoAnother 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.