【发布时间】:2018-01-23 00:38:39
【问题描述】:
我已经编写了自己的 perlin 库,并且还使用了标准 python 库之一来生成噪声。这是我下面的代码:
import sys
from noise import pnoise2, snoise2
perlin = np.empty((sizeOfImage,sizeOfImage),dtype=np.float32)
freq = 1024
for y in range(256):
for x in range(256):
perlin[y][x] = int(pnoise2(x / freq, y / freq, 4) * 32.0 + 128.0)
max = np.amax(perlin)
min = np.amin(perlin)
max += abs(min)
perlin += abs(min)
perlin /= max
perlin *= 255
img = Image.fromarray(perlin, 'L')
img.save('my.png')
dp(filename='my.png')
无论频率或八度如何,它总是看起来很粗糙。我的结论是我用错了,但我不确定为什么我的解决方案是错误的。我通过频率使用小数单位并遍历我的二维数组。我已经尝试过切换索引等等,但似乎仍然没有连续性。如何获得平滑的柏林噪声?
【问题讨论】:
-
这是 Python2.x 吗?如果是这样,
x / freq使用整数除法并将循环中的所有值向下舍入为零 -
这是python 3
标签: python graphics noise perlin-noise