分形噪声地形产生奇怪的人工线

时间:2014-04-28 14:42:09

标签: java noise terrain fractals

我有一个由Perlin Fractal Noise模式生成的地形,可以产生非常出色的地形。我遇到的问题是X和Z坐标上有一些奇怪的线条,我认为它与分形生成有关但是当我生成它的2D图片时我不会看到任何人工制品。 Artefact lines

地形的生成是通过将地形分割成块来完成的,而块又被分割成块,这取决于分辨率的大小。

对于每个瓷砖,我以相似的方式为每个角件计算四个角:

float corner1 = mapHeight * fractal( x * tileSize +( posX * (mapSize) ) , z * tileSize +( posZ * (mapSize)) ,25000,0.5,16);

分形函数:

float fractal(int x,int y,float gridSubs,float gain,int octaves){
  float total = 0;
  float freq = 1.0/gridSubs;
  float amp = gain;

  for(int f=0;f<octaves;f++){
    total += noise(x*freq,y*freq)*amp;
    freq *= 2.0;
    amp *= gain;
  }
  return total;
}

编辑:我还没有真正得到一个好的答案,为什么会发生这种情况,但有一种可能性是我对顶点位置有一些奇怪的值(尽管我不应该这样)。

我仍在尝试一些方法来有效渲染景观,而不会使顶点堵塞我的GPU。通过一些测试,人工制品是最小的,据我所知可能与简单的ligthing在Processing中如何工作有关,如果我仍然无法找到解决方法,我会更新。

如果有人仍然知道一种简单的方法来减少他们对景观的影响,或者只是提出一个好的建议,那么请在下面发帖:)

2 个答案:

答案 0 :(得分:0)

我的第一个冲动是问你为什么要手动计算八度,而不是使用noiseDetail?

http://www.processing.org/reference/noiseDetail_.html

如果您只想从噪声中获得更多的总振幅,请将噪声输出乘以某个标量&gt; 1。如果您希望在该幅度内存在更多细节,请增加noiseDetail。

您正在查看的工件是您使用由同一种子生成的八度对齐的perlin噪音并且只是将其堆叠而没有平滑的事实的必要部分。最重要的是,生成值之间的某些特定于实现的插值在幕后进行。要么perlin发出噪音,要么使用内置的perlin噪音,不要试图同时做到这两点。

答案 1 :(得分:0)

看到你的照片,我不确定,但它闻起来像是一种类型铸造问题。