修正等距柏林噪声中的高度问题

时间:2014-02-10 04:27:41

标签: javascript canvas perlin-noise

我一直在使用perlin噪音来生成基于平铺的等距景观。到目前为止,我一直使用噪声值作为瓷砖本身的高度图:Math.floor(noise * 10),基本上。这会产生非常漂亮但线性的地图。但是,我发现“山”看起来很无聊,所以我应用了一个指数:Math.floor(Math.pow((noise / 4), 2.3))。这会将较高的值向上推,从而产生附加的图像。

这些高度值存储在二维网格中,为我提供xyz我需要将地图绘制到屏幕上。

缺点很明显:我的山上有空隙应该填满。我只是不确定从哪里开始,因为那是我不能再存储在2D网格中的信息。我想我可以使用“更长”的瓷砖作弊,但这有点蹩脚。有什么建议吗?

如果您需要更多信息,我很乐意解释。也许我正在咆哮错误的树。

isometric perlin noise

1 个答案:

答案 0 :(得分:1)

在绘制背面远处的第一块瓷砖之前,先查看左侧和右侧的两个相邻的瓷砖,它们更靠近观察者。获得它们的最低高度,并检查此高度是否低于背板减去一个高度。 (因为这会造成差距)。现在你可以从这个“低高度”开始画在后面的堆上,并在它上面堆叠瓷砖,直到你达到你想要的高度。然后,您可以使用相同的算法绘制更接近查看器的下一个图块。

编辑:但我只是想知道这么多堆叠的瓷砖是否会看起来很尴尬。也许最好将土壤层拉伸到“低高度”。