使Perlin噪声可扩展

我得到了Perlin噪声算法和opensimplex噪声算法,该算法根据给出的X和Y值返回double。我设计的软件,我想知道如何:使Perlin噪声可扩展

  • 规模有0-1双值Perlin杂
  • 允许建立在不同的分辨率。柏林(即1024,2048),但仍维持规模,但增加额外的细节。
  • 允许用户改变世界的大小,这也影响了规模

我当前的代码如下:

double scale = ((((Double) parameters.get(SCALE).getValue() * 10) + 0.25) * ProjectSettings.WORLD_SIZE)/((double) resolution/1000); 

double x = 0;

double y = 0;

OpenSimplexNoise noise = new OpenSimplexNoise((Long) parameters.get(SEED).getValue());

for(int n = 0; n < resolution; n++) {

x += scale;

for(int m = 0; m < resolution; m++) {

y += scale;

values[n][m] = noise.generateOpenSimplexNoise(x, y, (Double) parameters.get(PERSISTENCE).getValue(), (Integer) parameters.get(OCTAVES).getValue());

}

}

回答:

如果你想改变Perlin杂点图像的分辨率,改变高度和与值for循环。 为了进行缩放,您必须将Perlin噪声方法的第一个和/或第二个参数乘以某个在您需要缩放时会发生变化的变量。时间值可能非常适合这一点。看下面的代码示例。

time += 0.01; 

// Change height and width values to change resolution

for(int y = 0; y < height; y++){

for(int x = 0; x < width; x++){

double dx = (double) x/MainWindow.height;

double dy = (double) y/MainWindow.height;

// Perlin noise method call

// In order to scale, you have to multiply current values

// by time or other variable, which change would cause the zoom.

double noise = noise(dx * time, dy * time);

}

}

这些教程系列可以帮助你实现你的目标:

https://www.youtube.com/playlist?list=PLA2Wxg-e7vbA1LC15uXM0s8p5Nhse_rNn。

在教程3结束时,您应该可以进行缩放和移动动画。如果你不想了解Perlin噪声的机制,你可以跳过第二个教程。我希望它有帮助。

以上是 使Perlin噪声可扩展 的全部内容, 来源链接: utcz.com/qa/260531.html

回到顶部