Talk:Perlin noise: Difference between revisions
Line 40: | Line 40: | ||
I'd like to point out that there are two (or three) definitions of perlin noise, which slighty differ from each other (although boths author is Ken Perlin himself): |
I'd like to point out that there are two (or three) definitions of perlin noise, which slighty differ from each other (although boths author is Ken Perlin himself): |
||
Firstly there is his paper ''An Image Synthesizer''<ref>http://dl.acm.org/citation.cfm?id=325247</ref> which states on page 289: ''map each ordered sequence of three integers into an uncorrelated ordered sequence of four real numbers: [a,b,c,d] = H([x,y,z]), where [a,b,c,d] define a linear equation with gradient [a,b,c] and value d at [x,y,z]'' and ''if [x,y,z] is on the integer lattice, we define Noise([x,y,z]) = d_[x,y,z]''. This paper does NOT specifically mention that the value d has to be 0 if [x,y,z] is on the integer lattice. This effectively makes it both a gradient AND a value noise function. |
Firstly there is his paper ''An Image Synthesizer''<ref>http://dl.acm.org/citation.cfm?id=325247</ref> which states on page 289: ''map each ordered sequence of three integers into an uncorrelated ordered sequence of four real numbers: [a,b,c,d] = H([x,y,z]), where [a,b,c,d] define a linear equation with gradient [a,b,c] and value d at [x,y,z]'' and ''if [x,y,z] is on the integer lattice, we define Noise([x,y,z]) = d_[x,y,z]''. This paper does NOT specifically mention that the value d has to be 0 if [x,y,z] is on the integer lattice. This effectively makes it both a gradient AND a value noise function. |
||
Secondly there is the book ''Texturing and Modeling''<ref>https://books.google.de/books?hl=en&lr=&id=F4t-5zSsqr4C&oi=fnd&pg=PP2&dq=texturing+and+modeling+a+procedural+approach&ots=Psvtg4AAHQ&sig=TD--quJV1LrEv7u-nPZnA9Ewy0I#v=onepage&q=texturing%20and%20modeling%20a%20procedural%20approach&f=false</ref> which on page 76 uses the ''smoothstep function 3*x^2-2x^3'' which is |
Secondly there is the book ''Texturing and Modeling''<ref>https://books.google.de/books?hl=en&lr=&id=F4t-5zSsqr4C&oi=fnd&pg=PP2&dq=texturing+and+modeling+a+procedural+approach&ots=Psvtg4AAHQ&sig=TD--quJV1LrEv7u-nPZnA9Ewy0I#v=onepage&q=texturing%20and%20modeling%20a%20procedural%20approach&f=false</ref> which on page 76 uses the ''smoothstep function 3*x^2-2x^3'' which is the result from above statements with the assumption that the value d IS 0 on integer lattice points. This is pure gradient perlin noise! |
||
Thirdly there is the paper ''Improving Noise''<ref>http://dl.acm.org/citation.cfm?id=566636&CFID=734738896&CFTOKEN=90534256</ref> which replaces the above smoothstep function with a new function 6t^5-15t^4+10t^3, which again is |
Thirdly there is the paper ''Improving Noise''<ref>http://dl.acm.org/citation.cfm?id=566636&CFID=734738896&CFTOKEN=90534256</ref> which replaces the above smoothstep function with a new function 6t^5-15t^4+10t^3, which again is the result under the condition that the value d IS 0 on integer lattice points. pure gradient perlin noise again! |
||
This explains the confusion in my opinion, the original paper is not specifically gradient noise, although its still a valid explanation. |
This explains the confusion in my opinion, the original paper is not specifically gradient noise, although its still a valid explanation. |
||
In my opinion the article should reflect the different papers, because there is quite a difference for the implementation of the function, for example the gradient vectors in ''Improved Noise'' are NOT unitlength, other than stated in this wiki article under algorithm.[[Special:Contributions/2A02:908:5A0:7CA0:7D0F:30BE:939B:8D70|2A02:908:5A0:7CA0:7D0F:30BE:939B:8D70]] ([[User talk:2A02:908:5A0:7CA0:7D0F:30BE:939B:8D70|talk]]) 17:30, 1 December 2015 (UTC) |
In my opinion the article should reflect the different papers, because there is quite a difference for the implementation of the function, for example the gradient vectors in ''Improved Noise'' are NOT unitlength, other than stated in this wiki article under algorithm.[[Special:Contributions/2A02:908:5A0:7CA0:7D0F:30BE:939B:8D70|2A02:908:5A0:7CA0:7D0F:30BE:939B:8D70]] ([[User talk:2A02:908:5A0:7CA0:7D0F:30BE:939B:8D70|talk]]) 17:30, 1 December 2015 (UTC) |
Revision as of 17:34, 1 December 2015
This article has not yet been rated on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||||||||||||||||||||||
Please add the quality rating to the {{WikiProject banner shell}} template instead of this project banner. See WP:PIQA for details.
Please add the quality rating to the {{WikiProject banner shell}} template instead of this project banner. See WP:PIQA for details.
Please add the quality rating to the {{WikiProject banner shell}} template instead of this project banner. See WP:PIQA for details.
|
Common mistakes
These mistakes were found in this Wikipedia article:
1) Hugo Elias' article (http://freespace.virgin.net/hugo.elias/models/m_perlin.htm) is on VALUE NOISE, not GRADIENT NOISE (Perlin Noise is gradient noise, not value noise.)
2) Perlin Noise is not white noise. A single "layer" of Perlin noise (or value noise, or any type of noise, there are many)has only one frequency, not all of them. You much blend together many "layers" of Perlin noise to collaborate various frequencies together in one noise (known as spectral synthesis).
3) Perlin Noise is not multiple layers of noise blending together. This is a common misconception. (Even the picture of Perlin noise in this article clearly is created out of only one layer of noise.) This is a mistake commonly expressed on most websites that deal with Perlin noise, even Hugo's article (the #1 result in Google for perlin noise: http://www.google.com/search?q=perlin+noise), but anyone who has examined Ken Perlin's work, especially his original source and numerous examples, you will see no sign of spectral synthesis (adding of multiple frequency layers together). Spectral synthesis is a useful way to use Perlin noise, it is not a defining characteristic of it.
I fixed these mistakes, but perhaps did not make them clear enough.
I am going to write an article on this soon. When I do, I will update this Wikipedia page and link to my article. 24.222.121.193 15:29, 19 July 2006 (UTC)
- I'd just like to offer a little encouragement on that new article. This wonderful topic is sadly neglected. 210.9.15.113 09:08, 19 October 2006 (UTC)
- Thank you. I will soon... but it is quite a project in of itself :S 24.215.121.195 (talk) 18:47, 19 March 2008 (UTC)
- If I understand the third point above correctly, I have to disagree. Ken Perlin's articles talk about generating procedural textures out of single frequencies of a "controlled random primitive" (the image depicted in the article). I don't think the "primitive" is to be interpretted as Perlin noise as it is too simple. Anybody can generate this sort of isotropic random noise. It is completely valid to interpret Perlin Noise as multiple layers as I demonstrate in the article I wrote here (http://dunnbypaul.net/perlin/). This is mathematically identical (though procedurally, quite different) to the algorithm found here (http://mrl.nyu.edu/~perlin/doc/oscar.html). Perlin Noise is in fact a "procedural texture" that can also be interpretted as the recursive algorithm demonstrated there.
Furthermore, in the second citation I offered, Ken Perlin himself says "Hugo Elias has a nice web page about it" at (http://freespace.virgin.net/hugo.elias/models/m_perlin.htm), the same web page that is claimed NOT to be about Perlin Noise in point 1 above. 198.53.229.242 09:03, 12 January 2007 (UTC)
- Ken Perlin's comment is that the page is a nice web page about noise based textures. It does not use the same noise generation technique that Perlin invented. There seems to be some confusion over whether "Perlin Noise" refers to the specific noise generation algorithm that Perlin invented or to noise-based textures in general which Perlin's work popularized.--Vorpy 21:40, 18 February 2007 (UTC)
- There is HUGE confusion over this. One fact is that Ken Perlin's original noise is gradient noise, not value noise, based on interpolation of gradients not interpolation on (final) values. What is Perlin noise? Who really knows? In my planned article, after working and researching it for years, I was actually going to attempt to define it myself once and for all, as Ken Perlin has not bothered to make it clear. This is a common problem with definition of words, is that common usage often dictates it, whereas common usage of Perlin noise is generally spectral-synthesized gradient noise AND spectral-synthesized value noise! The stance I took is that Perlin noise is a single layer of gradient noise, as that's what he original code generates, and everything else is a derivative of that. 24.215.121.195 (talk) 18:54, 19 March 2008 (UTC)
- I've altered the link description... the link should be moved to the new article when it is written SiegeLord (talk) 06:24, 27 July 2008 (UTC)
- I made the stubs for Value noise,Gradient noise. If anyone wants to expand them, be my guest. SiegeLord (talk) 07:12, 27 July 2008 (UTC)
- I've altered the link description... the link should be moved to the new article when it is written SiegeLord (talk) 06:24, 27 July 2008 (UTC)
- A year late with this response... This common misunderstanding is Ken Perlin's fault, shame on him for linking to a VALUE NOISE article when GRADIENT NOISE (aka perlin noise) is so much better, they should not be compared as examples of one another. Do the research before making assumptions based on Ken Perlin's links, and even words, as they are very misleading. As the inventor of this technology, he really should take the time to explain it better, and clear this confusion. Again, I may make an article to clarify all of this, but do the research before making assumptions. If you have not coded value noise and gradient noise AND reversed engineered Ken Perlin's code (which you basically have to do to understand it) as I have, you will more than likely be wrong with your opinion. Sorry. Any questions you have on the matter I can answer, I have worked with and coded various noises for years now. 24.215.121.195 (talk) 18:46, 19 March 2008 (UTC)
another inaccuracy: The Article states perlin noise was first used in the movie Tron, but Ken Perlin's slideshow linked to from this article states that he first "started thinking" about noise while working on Tron as a way to get away from its machinelike look. —The preceding unsigned comment was added by 24.41.50.36 (talk • contribs) 17:19, 3 December 2006 (UTC).
- Indeed, article on Ken Perlin states that Perlin Noise was created in 1985, whereas this article states that KP was given an award for the work on Tron in 1982. —Preceding unsigned comment added by 98.207.207.199 (talk) 06:43, 13 April 2011 (UTC)
I'd like to point out that there are two (or three) definitions of perlin noise, which slighty differ from each other (although boths author is Ken Perlin himself): Firstly there is his paper An Image Synthesizer[1] which states on page 289: map each ordered sequence of three integers into an uncorrelated ordered sequence of four real numbers: [a,b,c,d] = H([x,y,z]), where [a,b,c,d] define a linear equation with gradient [a,b,c] and value d at [x,y,z] and if [x,y,z] is on the integer lattice, we define Noise([x,y,z]) = d_[x,y,z]. This paper does NOT specifically mention that the value d has to be 0 if [x,y,z] is on the integer lattice. This effectively makes it both a gradient AND a value noise function. Secondly there is the book Texturing and Modeling[2] which on page 76 uses the smoothstep function 3*x^2-2x^3 which is the result from above statements with the assumption that the value d IS 0 on integer lattice points. This is pure gradient perlin noise! Thirdly there is the paper Improving Noise[3] which replaces the above smoothstep function with a new function 6t^5-15t^4+10t^3, which again is the result under the condition that the value d IS 0 on integer lattice points. pure gradient perlin noise again! This explains the confusion in my opinion, the original paper is not specifically gradient noise, although its still a valid explanation. In my opinion the article should reflect the different papers, because there is quite a difference for the implementation of the function, for example the gradient vectors in Improved Noise are NOT unitlength, other than stated in this wiki article under algorithm.2A02:908:5A0:7CA0:7D0F:30BE:939B:8D70 (talk) 17:30, 1 December 2015 (UTC)
Algorithm
This article needs a clear description of the algorithm, preferably compatible with the 2002 version. Also, why is this categorized as a physics article? Seems a lot more like computer science to me. Shinobu 19:03, 10 March 2007 (UTC)
There are parts of the algorithm explanation that I don't understand. Just a list of questions I have:
In the second paragraph under "Grid definition" it says "Acquired gradient are then renormalized." What does it mean to renormalize something? In the next paragraph: "...some implementations use a hash and lookup table..." I think it refers to the data lookup function, but I'm not sure which article should be linked to.
Under Dot product: First paragraph "For each grid node/coordinate a distance vector between the particular point and the node coordinate is determined...." What's a distance vector? It doesn't have its own article. Also, the definition of Dot Product according to its own article seems to require only one input and two distinct sequences of numbers, and I don't understand either article.
That's as far as I've gotten. I hope this will help improve the readability. 72.95.45.209 (talk) 01:05, 24 February 2015 (UTC)
Minecraft reference
From the article: ""Minecraft uses Perlin noise as part of its procedural landscape generation.[2]""
This may be true, but what is the point? Perlin noise is used everywhere not just in minecraft. Should this be removed? -- (fededevi) 193.205.206.25 (talk) 15:11, 30 May 2011 (UTC)
Added some reference to another game. I think it can give an idea of what the uses of a noise generator can be. --87.8.5.219 (talk) 12:53, 22 July 2011 (UTC)
I also think this makes no sense. When adding Minetest, you should also add Manic Digger and FreeMiner.Net. If moving away from MC, then you'd also have to add any other game that uses Noise. I think that this should be removed altogether.188.195.209.75 (talk) 14:41, 17 August 2011 (UTC)
The complete sentence:
- "It is also frequently used to generate textures when memory is extremely limited, such as in demos, and is increasingly finding use in Graphics Processing Units for real-time graphics in computer games. For :example, Minecraft[1] and Minetest[2] both use Perlin noise as part of their procedural landscape generation."
"For example"? How does procedural landscape generation relate to *texture* generation and real-time *graphics* in computer games? As much as I love Minecraft, I don't think it's entirely relevant in this context. Now, okay, it *does* use the algorithm, but it is by no means unique in that. Also, using Perlin noise to generate terrain data is not only about games; take for example Terragen. Ddegirmenci (talk) 22:30, 21 October 2011 (UTC)
I split the Minecraft/Minetest reference into a separate paragraph. Terrain generation is a use for Perlin noise, and so seems correct to list in the "Uses" section. I'll leave deciding which games should be referenced to more experienced editors. --81.159.167.165 (talk) 00:20, 21 December 2011 (UTC)
- ^ http://dl.acm.org/citation.cfm?id=325247
- ^ https://books.google.de/books?hl=en&lr=&id=F4t-5zSsqr4C&oi=fnd&pg=PP2&dq=texturing+and+modeling+a+procedural+approach&ots=Psvtg4AAHQ&sig=TD--quJV1LrEv7u-nPZnA9Ewy0I#v=onepage&q=texturing%20and%20modeling%20a%20procedural%20approach&f=false
- ^ http://dl.acm.org/citation.cfm?id=566636&CFID=734738896&CFTOKEN=90534256
- All unassessed articles
- Start-Class computer graphics articles
- Unknown-importance computer graphics articles
- WikiProject Computer graphics articles
- Start-Class physics articles
- Low-importance physics articles
- Start-Class physics articles of Low-importance
- Start-Class Systems articles
- Mid-importance Systems articles
- Systems articles in chaos theory
- WikiProject Systems articles