我如何使用python获得像地图一样的二维地形



我正在努力获得一个像Terraria游戏一样的自然景观。我使用元胞自动机为表面生成洞穴和1d Perlin噪声。结果是这样的:我的原型

但这并不能让我满意,因为最初的目标是获得这样的东西:我想要什么

我知道在第二种情况下,也使用了Perlin噪声,但我完全不知道如何实现这一点。有人能建议我如何在Perlin噪音的情况下实现第二种情况吗?

我会做什么:

  1. 对2D噪波使用Simplex而不是Perlin。Simplex避免了Perlin的许多可见网格对齐特性。你可以在这张图中看到,顶部的佩林经常沿着45度和90度的方向。我创建/使用/推荐的噪音应该是this,特别是Noise2_XBeforeY函数,因为它旋转了三角形网格,试图看起来最适合Terraria风格的游戏(编辑:既然你使用的是Python,你可以使用这个(

  2. abs(noise(frequency*x, frequency*y)) < threshold ? cave : leave_solid开始。调整频率阈值,直到它们产生所需的大小/分布。

  3. 利用分形噪声改善洞穴的形状和变化。abs(noiseA(frequency*x, frequency*y) + noiseB(2*frequency*x, 2*frequency*y)*0.5 + ...) < threshold ? cave : leave_solid

  4. 与高度进行比较,使洞穴在上升时变得更小。用你在地下有多远的函数代替阈值,例如threshold = f(height(y) - y),其中f(t) =类似于t / (t + 1)。注意height(y) - y是如何在地下越深时变得越大的(假设Y在下降时为负(,t / (t + 1)保持了增量,但平稳地防止其超过1。f(t) = t / (t + 1)可能无法单独工作,因此您可能需要像f(t) = thresholdMax * t / (thresholdIncreaseRate * t + 1)一样对其进行概括。为thresholdMax和thresholdIncreaseRate选择最适合您用途的值。

相关内容

  • 没有找到相关文章

最新更新