13

我已经编写了自己的 Perlin Noise 实现并且效果很好。我可以通过改变频率来“放大”和缩小,但是当我放大时,噪音会变得越来越平滑。

假设我有一个显示大陆的景观。我想放大到城市大小的区域(或更近),但仍然有细节。我想我需要在更近的细节处重新生成景观,但我不确定是否有任何实现可以帮助解决这个问题?

缩小,我看到大陆和海洋,但我希望在小区域中代表大区域。

这是我遇到的问题的一个示例(大陆级别):

替代文字
(来源:blind-games.com

放大:

替代文字
(来源:blind-games.com

放大地图上的某个区域时,如何仍能获得丰富的细节?任何涉及的技术示例?

4

2 回答 2

7

您需要使用连续更高频率的噪声来避免平滑度。尝试http://www.arendpeter.com/Perlin_Noise.html以获得关于如何操纵噪声频率的更清晰的解释。Octaves 自然地与细节层次 (LOD) 实现结合在一起,只要您支持动态生成,这意味着您只需在靠近它时生成更多细节。请注意,动态生成地形存在缺陷,例如河流和道路等要素的生成复杂化,因此您最终可能会将地形预生成到固定的最低细节水平(例如 64 公里的方格),然后动态生成更详细的功能。

我还建议查看计算开销较低的 Simplex 噪声(有关更多详细信息,请参阅https://en.wikipedia.org/wiki/Simplex_noise)。

于 2011-06-20T11:45:17.343 回答
4

假设您是静态生成地图文件而不是动态生成地图文件,我认为您最简单的解决方案是以您需要的最高分辨率生成整个地图。实际上,您随后会缩小并返回到该粒度级别。它的计算成本更高,并且会产生更大的地图文件。根据您对查看器的实现,您可以使用单个地图文件或构建一些去分辨率的文件以获得更大的视图。

于 2011-05-11T04:33:26.630 回答