如何选择种子使用噪音.py莫杜

2024-05-15 21:49:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如何为python中的noise模块选择种子?你知道吗

我有一段代码:

from noise import snoise2
terrainTiles[varX][varY].set_elevation(snoise2(x=varX/20,y=varY/20,octaves=1))

它确实产生了适当的噪音;然而,我无法改变种子。我已经找了好几个小时了,还没有找到解决办法。谢谢!你知道吗

函数的更简单示例:

from noise inport snoise2
print(snoise2(10,10))

解决方案

我找到了一个单独的解决办法噪音.py. 我使用了在github上找到的脚本:https://gist.github.com/eevee/26f547457522755cb1fb8739d0ea89a1

这也没有种子函数,但是,它有一个无偏函数,这样远的坐标仍然有适当的噪声。我使用了一个三维噪波函数,其中第三维值本质上是种子。此处显示的代码:

#generate world seed
worldSeed = random.randint(0, 100000000)

#generate noise objects. I hate this but im ghettoing it so that the 3rd dimension value is essentially the seed, I hate this but it works
elevationNoise = noise.PerlinNoiseFactory(dimension=3, octaves=1, unbias=True)

它被应用于一个值:

terrainTiles[varX][varY].set_elevation(elevationNoise(varX/20,varY/20,worldSeed)*1.15)

Tags: 函数代码fromgithub种子noiseelevationset
1条回答
网友
1楼 · 发布于 2024-05-15 21:49:24

也就是说,没有种子参数,但是有一个可以修改的基参数,它指定噪波坐标的偏移量。例如:

import random
from noise import snoise2

seed = random.random()
print snoise2(10, 10, base=seed)

底座需要浮子的地方

因此,对于第一个示例,您应该能够将base=seed添加到snoise2(…):

terrainTiles[varX][varY].set_elevation(snoise2(x=varX/20,y=varY/20,octaves=1, base=seed))

相关问题 更多 >