Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Landscape 基于现有地形的动态地形生成_Landscape_Fractals_Terrain_Procedural_Perlin Noise - Fatal编程技术网

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

Landscape 基于现有地形的动态地形生成,landscape,fractals,terrain,procedural,perlin-noise,Landscape,Fractals,Terrain,Procedural,Perlin Noise,这个问题与提出的问题非常相似 我的问题是我有一张地图,像这样: 此贴图使用2D柏林噪波制作,然后在创建的高度贴图中运行,根据相应元素的高度或坡度为地形中的每个元素指定类型和颜色值,因此非常标准。地图阵列是二维的,精确的屏幕尺寸(每像素像素像素),因此在我的装备上生成1200 x 800大约需要2秒钟 现在放大高亮显示的矩形: 显然,随着尺寸的增大,细节也随之消失。问题就在这里。我想在运行中创建额外的细节,然后在播放器移动时将其写入磁盘(播放器将只是一个限制沿网格移动的点)。我认为有两种方法可

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

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

此贴图使用2D柏林噪波制作,然后在创建的高度贴图中运行,根据相应元素的高度或坡度为地形中的每个元素指定类型和颜色值,因此非常标准。地图阵列是二维的,精确的屏幕尺寸(每像素像素像素),因此在我的装备上生成1200 x 800大约需要2秒钟

现在放大高亮显示的矩形:

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

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

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

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


有没有关于我如何处理这个问题的想法?请记住,它必须是本地的和动态的。我想不惜一切代价避免仅仅提高地图的分辨率。

将柏林噪声重写为位置的函数。然后可以增加倍频程(从而增加细节级别),并以更高的分辨率对该区域重新采样