[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Perlin Noise Function




On Jul 30, 2008, at 12:08 PM, Knapp wrote:



On Wed, Jul 30, 2008 at 8:00 PM, Casey Duncan <casey@xxxxxxxxxxx> wrote:

On Jul 30, 2008, at 11:08 AM, Knapp wrote:
[..]


One of the links I posted talked about the 3d+ Speed problems and how to fix them. Have you see that yet?

I had seen that before. The gradient optimization mentioned is really only applicable to classic Perlin noise. The Perlin Improved noise algorithm optimizes the gradients in a different way. The gradients themselves in "improved noise" are no longer random, though they are selected in a pseudo-random fashion, by hashing the incoming coordinates. Basically. the moral equivalent of the optimization is already present in "improved" noise.

The scaling problem for higher dimensions is solved nicely by simplex noise, which grows linearly in cost as you add dimensions, rather than geometrically. However, simplex noise looks considerably different, and so even a higher cost 4D Perlin noise function is probably still desirable for applications not sensitive to that cost. 4D noise is highly useful for real-time applications where you desire to animate a 3D texture, and there, cost is typically important.

-Casey

You can always take the easy way out. Four years from now your computer will be so fast you will not care so much about this. :-)

Yeah, but by then I'll want fast 6D noise ;^) That said, I'm all for waiting for the problem to fix itself.

Also when doing real-time 3d with movement, I use Blender, and they let you map video to the surface. Thus you can precalculate the image and just play it back. I guess there are some times when this is not good enough, like when you want interaction.

In OpenGL, you can use a 3D texture for this. The shader noise code lets you generate these in real-time, which can come in handy when either they need to change in a non-deterministic way (e.g., in response to interaction) or you need to generate many different textures and animations but lack the talent or money of a dedicated art dept. (and you don't mind math migraines ;^).

-Casey