OpenSimplex噪音生成问题(似乎是随机的,我的功能是错误的吗?)

时间:2017-12-08 04:35:23

标签: python pygame simplex-noise

我正在使用pygame开发基于2d tile的游戏,我正在尝试使用噪声贴图来生成我的地图。

我已经安装了OpenSimplex库,一切正常。 问题是我似乎没有得到平滑的随机渐变,它看起来更像是随机噪声。

这是我用来生成图像的功能:

def generate_noise(seed,game):
size = int(WIDTH/TILESIZE)
tmp = OpenSimplex(seed)
for x in range(size):
    for y in range(size):
        val = (tmp.noise2d(x,y)+1)/2
        Tile(game,x,y,val)

然后将Tile添加到精灵组并在屏幕上绘制。我确信有更好的方法可以做到这一点,但它似乎应该有效。 val用于在绘制图块时对其进行着色,将其映射到0到1之间并乘以255.

这是我得到的图像(当我尝试不同的种子时,我得到类似的图像): open simplex noise gen

这是图像标准化,以便所有值> 0.5变为1,所有小于0.4的值变为0,所有值都设置为0.5。这样做是为了试图画出任何隐藏的渐变,这可能是我看不到的,但它所做的一切都是这样的: enter image description here

正如您所看到的,它看起来完全随机。 我究竟做错了什么?? 感谢

1 个答案:

答案 0 :(得分:0)

OpenSimplex与浮动非整数一起使用。您看到的是噪声的一种缩小版本。您应该确定比例变量以轻松解决此问题。大约100的比例将非常适合您的示例。随时更改它。

def generate_noise(seed,game):
    scale = 100
    size = int(WIDTH/TILESIZE)
    tmp = OpenSimplex(seed)
    for x in range(size):
        for y in range(size):
        val = (tmp.noise2d(x/scale, y/scale)+1)/2
        Tile(game,x,y,val)