这个问题与here提出的问题非常相似。
我的问题是我有一张地图,就像这样:

这个地图是使用2D Perlin噪声制作的,然后遍历创建的高度地图,根据相应元素的高度或坡度将类型和颜色值分配给地形中的每个元素,因此非常标准。贴图数组是二维的,屏幕大小的精确尺寸(像素/像素),因此在1200 x 800的生成在我的钻机上大约需要2秒。
现在放大高亮显示的矩形:

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

这是从旧地形的采样元素创建的新的偏置局部地形的放大视图,由上一张图像中的黄色栅格空间(中心左侧)高亮显示。但是,此系统需要大量修改,例如,如果您将黄色栅格空间的一个单元向左和向上移动到海滩瓷砖上,则地形将完全改变:

因此,为了正确地工作,你需要做大量的,我猜是插值,以创建一个平滑的过渡,当玩家移动本地世界中的大约40个网格空间时,需要到达外星世界的下一个瓦片。这看起来很复杂,也很不优雅。
第二种方法是将原始地图的网格分解为更小的比特,或者将每个正方形除以4?我还没有实现这一点,我不确定我将如何以一种实际增加细节的方式来实现,但我认为这可能最终会是最好的解决方案。
你有什么建议吗?我该怎么做?请记住,它必须是本地的和动态的。提高地图的分辨率是我想要不惜一切代价避免的事情。
发布于 2011-06-12 03:43:04
重写Perlin噪声,使其成为位置的函数。然后,可以增加八度(从而增加细节级别),并以更高的分辨率对区域进行重新采样。
https://stackoverflow.com/questions/6316923
复制相似问题