基于现有地形的动态地形生成

Posted

技术标签:

【中文标题】基于现有地形的动态地形生成【英文标题】:On-the-fly Terrain Generation Based on An Existing Terrain 【发布时间】:2011-09-13 02:25:15 【问题描述】:

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

我的问题是我有一张地图,像这样:

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

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

显然,随着尺寸的增加,细节会丢失。这就是问题所在。我想即时创建额外的细节,然后在玩家四处移动时将其写入磁盘(玩家只是一个限制沿网格移动的点)。我看到了两种方法,我很快想到了第一种方法:

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

所以要让它正常工作,你需要做大量的,我猜这个词应该是插值,以创建一个平滑的过渡,因为玩家移动了本地世界中所需的 40 个左右的网格空间到达世界上的下一个瓷砖。这看起来很复杂而且很不雅。

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

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

【问题讨论】:

【参考方案1】:

将您的 Perlin 噪声重写为位置的函数。然后您可以增加八度音阶(从而增加细节级别)并以更高的分辨率重新采样该区域。

【讨论】:

以上是关于基于现有地形的动态地形生成的主要内容,如果未能解决你的问题,请参考以下文章

unity3D中如何生成世界地形,动态加载和卸载?

luoguP3255 [JLOI2013]地形生成 动态规划

读书笔记 PCG in Games 程序化内容生成4 分型噪声和代理,地形生成

读书笔记 PCG in Games 程序化内容生成4 分型噪声和代理,地形生成

读书笔记 PCG in Games 程序化内容生成4 分型噪声和代理,地形生成

真实3D地形生成器免费在线