基于现有地形的飞行地形生成

时间:2011-06-11 15:53:15

标签: landscape fractals terrain procedural perlin-noise

这个问题与提出here的问题非常相似。

我的问题是我有一张地图,如下所示:

Main Map

此地图使用2D Perlin噪声制作,然后运行创建的高度图,根据相应元素的高度或坡度为地形中的每个元素指定类型和颜色值,因此非常标准。地图数组是二维的,并且是屏幕尺寸的精确尺寸(像素每像素),所以在我的装备上1200×800代需要大约2秒。

现在放大突出显示的矩形:

http://i.stack.imgur.com/hrZnM.png

显然,随着尺寸的增加,细节也会丢失。这就是问题所在。我想在运行中创建额外的细节,然后在玩家四处移动时将其写入磁盘(播放器只是一个限制在沿网格移动的点)。我看到两种方法可以做到这一点,第一个想到我快速实现的方法:

http://i.stack.imgur.com/bbLia.png

这是从旧地形的采样元素创建的新偏置局部地形的放大视图,该地形由前一图像中的黄色网格空间(位于中心左侧)突出显示。然而,这个系统需要进行大量的修改,例如,如果你将一个单元向左和向上移动到黄色网格空间,到海滩地砖上,地形就会完全改变:

http://i.stack.imgur.com/6shKz.png

所以为了正常工作,你需要做太多的,我想这个词就是插值,以便在玩家移动当地世界所需的40个左右的网格空间时创建一个平滑的过渡到达世界上的下一个瓷砖。这似乎很复杂,也很不优雅。

第二种方法是将原始地图的网格分解成较小的位,可能将每个方格除以4?我没有实现这一点,我不确定如何以一种实际上会增加细节的方式,但我认为这可能最终成为最佳解决方案。

关于如何处理这个问题的任何想法?请记住,它必须是本地的和即时的。只是增加地图的分辨率是我想不惜一切代价避免的。

1 个答案:

答案 0 :(得分:8)

重写你的Perlin噪音是位置的函数。然后,您可以增加八度音程(以及细节级别)并以更高的分辨率重新采样区域。