I spent the morning toying with the python perlin noise library. It turns out that the perlin noise function doesn't produce random noise unless you instantiate a the SimplexNoise() class and call randomize.
Originally, I was using this:
def pn(m, octaves=1):
from noise import pnoise2
freq = 16.0 * octaves
for y in range(len(m)):
for x in range(len(m[0])):
m[y][x] = int(pnoise2(x/freq, y/freq, octaves) * 127.0)
which constantly give us:Now, I import the SimplexNoise class and randomize the permutation table
def pn3(m, octaves=1):
from noise.perlin import SimplexNoise
sn = SimplexNoise()
sn.randomize()
freq = 16.0 * octaves
for y in range(len(m)):
for x in range(len(m[0])):
m[y][x] = int(sn.noise2(x/freq, y/freq) * 127.0)
and now I get random perlin noise:
I hope that helps anyone else struggling with the library.


No comments:
Post a Comment