我有一个由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中如何工作有关,如果我仍然无法找到解决方法,我会更新。
如果有人仍然知道一种简单的方法来减少他们对景观的影响,或者只是提出一个好的建议,那么请在下面发帖:)
答案 0 :(得分:0)
我的第一个冲动是问你为什么要手动计算八度,而不是使用noiseDetail?
http://www.processing.org/reference/noiseDetail_.html
如果您只想从噪声中获得更多的总振幅,请将噪声输出乘以某个标量&gt; 1。如果您希望在该幅度内存在更多细节,请增加noiseDetail。
您正在查看的工件是您使用由同一种子生成的八度对齐的perlin噪音并且只是将其堆叠而没有平滑的事实的必要部分。最重要的是,生成值之间的某些特定于实现的插值在幕后进行。要么perlin发出噪音,要么使用内置的perlin噪音,不要试图同时做到这两点。
答案 1 :(得分:0)
看到你的照片,我不确定,但它闻起来像是一种类型铸造问题。