在Perlin噪声中产生随机点?

我正在为我的一个游戏地形生成,并遇到了一个小问题。 游戏中的地形本身在你的角色四处移动的过程中产生。 这意味着,世界上所有的一代人都需要基于某个瓦片或区域(大块)在世界上的位置。

世界一代是坚如磐石,看起来相当华丽! 但是我需要一个组件来完成 – 我需要以某种方式检索Perlin噪声中的一个随机点。

假设我们有这样的事情:

int scale = 100; float noise = perlinNoise.noise3(x / scale, y / scale, z / scale) if(noise > .2f) setPixel(x, y, 0xffffff); 

我们以像素的forms将结果绘制到屏幕上,试着看看会发生什么。 通过这种方式,我们实现了经常隔开的噪音区域。 现在,我想要做的是随机生成一个点位于上面的“原理图”之后的一大块噪声中。

以上可能看起来是这样的:

 xxxxxxxxxxxxx xxxxxxxxxxxxx xxxxxoooxxxxx xxxxoooooxxxx xxxxxoopooxxx xxxooooooxxxx xxxxxoooxxxxx xxxxxxxxxxxxx 

在上面的代码示例中,如果x不受perlin噪声的影响,并且o受到影响,则o在屏幕上被绘制出来,它们就是上例中的白色像素。

ox相反的小p是随机点,我想随机化在Perlin随机噪声中 ,而不必预先生成这个世界。

有没有办法可以实现这一点? 我想到了潜在的解决scheme,把我的思想包裹起来 – 我在网上search,但似乎徒劳无功。 在这个问题上似乎没有写任何东西。

使用传统的柏林噪音,你不能事先知道一个“部分”将会产生什么样的价值,而不是真正产生的。在它下面,你正在使用一个PRNG&PRNG的本质是你无法预测未来的价值生成序列或在生成algorithm上做一些严重的算术)。

两种可能的select:

1)如果你用八度音阶来建立噪音,传统上,第一个八度音阶对结果影响最大。 因此,可能在没有完全预先生成区域的情况下find候选位置。

2)事先确定你想要随机的'p'位置,并devise你的噪声函数给你的价值,以适应他们。

保留每个块的位置列表。 当用Perlin噪声生成块完成时,从列表中随机地select一个由preplace。