我正在使用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
正如您所看到的,它看起来完全随机。 我究竟做错了什么?? 感谢
答案 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)