Как выбрать семя, используя модуль noise.py - PullRequest
0 голосов
/ 29 апреля 2018

Как выбрать семя для модуля шума в питоне?

У меня есть этот бит кода:

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))

РЕШЕНИЕ

Я нашел решение, отдельное от noise.py. Я использовал этот скрипт, который нашел на github: https://gist.github.com/eevee/26f547457522755cb1fb8739d0ea89a1

У этого также нет функции начального числа, НО, у него есть функция смещения, так что у отдаленных координат все еще есть надлежащий шум. Я использовал 3-мерную шумовую функцию, в которой значение 3-го измерения по сути является начальным числом. Код, показанный здесь:

#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)

1 Ответ

0 голосов
/ 29 апреля 2018

нет, так сказать, начального параметра, но есть базовый параметр, который вы можете изменить, который задает смещение для координат шума. Например:

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))
...