Welcome to Fractal Forums

Fractal Math, Chaos Theory & Research => General Discussion => Topic started by: willvarfar on July 31, 2013, 06:38:15 AM




Title: Distance Estimator for Perlin noise
Post by: willvarfar on July 31, 2013, 06:38:15 AM
Is there a distance estimator for Perlin/Simplex n-D noise?

I search in vain.  I imagine its certainly possible, but I haven't yet found one.


Title: Re: Distance Estimator for Perlin noise
Post by: Roquen on July 31, 2013, 07:13:42 AM
The question has is has no answer.  You need to know which flavor of simplex noise and how it's being used.  The closest I can come is that any implementable of flow noise (using simplex) will have the gradient computations.  Look here (maybe..if my memory serves): http://webstaff.itn.liu.se/~stegu/simplexnoise


Title: Re: Distance Estimator for Perlin noise
Post by: knighty on July 31, 2013, 11:06:14 PM
Is there a distance estimator for Perlin/Simplex n-D noise?

I search in vain.  I imagine its certainly possible, but I haven't yet found one.

See for example the appendix F of this paper (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.339&rep=rep1&type=pdf). Roughly, it says that the Lipschitz constant is 3 when using cubic interpolation. So if F(p)=Perlin(p)-c, is your noise function (c being the level set), the distance estimate is at least F(p)/3. In practice one can divide by a value less than 3.


Title: Re: Distance Estimator for Perlin noise
Post by: Mrz00m on August 13, 2013, 10:17:29 AM
i ve used perlin noise alot, what are you trying to do?


Title: Re: Distance Estimator for Perlin noise
Post by: willvarfar on August 18, 2013, 09:56:03 PM
Sorry for the delay answering; it's been holiday season where I am.

I've been playing Perlin noise in hobby projects and I made a little tool to visualise it, which is great for picking parameters when you can get a feel for it.  I sample on a 3D grid and draw those points that are over a certain threshold.  I've been using OpenGL sprites for that, and its servicable.

Of course my mind wandered and it occurred to me that you can probably do a fairly efficient ray marching visualisation instead.  Thinking of how the noise is built up in octaves, you can make big jumps at higher octaves and only sample tighter as you approach areas close to the threshold.

I could imagine flying in real-time through a GPU DE Perlin noise effect; that'd be cool!


Title: Re: Distance Estimator for Perlin noise
Post by: Mrz00m on September 22, 2013, 10:00:45 AM
it is interesting that you use 3D noise for picking parameters, you can also use 1D and 2D noise for that reason. Unless you had a mathematical concept for picking 3d parameters, such as generating mesh and 3d texture. Otherwise for any other kind of parameter it makes more sense using 1D noise which is like a wobbly sine wave and is more than 3 times faster for every point.

to do ray tracing on 3d noise, you would want to find all the closest boundaries of the noise corresponding to a particular value, the threshold. That is conceptually, tracing the line between where the eye is and the space before it to every pixel.

For making 3d mesh, and finding all points of the boundary, the fastest programming way frequently used, is doing a three-dimensional octree, consisting of dividing space a grid, discarding all the cubes that don't contain the threshold value in between there boundaries, and then subdivide each of each cube that does contain the threshold again and again until you know the exact threshold area for all of space, it's a fractal subdivision slowly homing in on the threshold boundaries.

the way you ask your question actually shows the slightly abstracted understanding of the Perlin noise, you haven't quite got a grasp of the various dimensions and best uses of each, and I think know if you are aware of how Ray tracing and marching cubes and Ochtrees are applied to 3d noise to measure in different ways. it would be strange to sample parameters for something by using distance estimation in between parameters.

What kind of parameters?

this is a Perlin noise mess generator that copies things in symmetry: http://www.youtube.com/watch?v=TV-9PFoRJTg