Java OpenSimplexNoise更高的细节级别

Java OpenSimplexNoise更高的细节级别,java,perlin-noise,procedural-generation,simplex-noise,simplex-algorithm,Java,Perlin Noise,Procedural Generation,Simplex Noise,Simplex Algorithm,我对世界新一代以及它们所使用的算法还不熟悉,所以我希望有人能给我一些有用的解释或代码,或者两者兼而有之,或者链接到我在寻找解决方案时错过的一些资源 如何使用OpenSimplexNoise获得更高的细节级别 我知道在一些算法中,比如PerlinNoise,它可以通过频率来实现吗 加上倍频程。 那么如何使用OpenSimplexNoise实现这样的功能呢 以下是我已经得到的: private static final int WIDTH = 512; private static fina

我对世界新一代以及它们所使用的算法还不熟悉,所以我希望有人能给我一些有用的解释或代码,或者两者兼而有之,或者链接到我在寻找解决方案时错过的一些资源

如何使用OpenSimplexNoise获得更高的细节级别

我知道在一些算法中,比如PerlinNoise,它可以通过频率来实现吗 加上倍频程。 那么如何使用OpenSimplexNoise实现这样的功能呢

以下是我已经得到的:

    private static final int WIDTH = 512;
private static final int HEIGHT = 512;
private static final double FEATURE_SIZE = 64;

public static void main(String[] args)
    throws IOException {

    OpenSimplexNoise noise = new OpenSimplexNoise(1233313l);
    BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_INDEXED);
    for (int y = 0; y < HEIGHT; y++)
    {
        for (int x = 0; x < WIDTH; x++)
        {
            double value = noise.eval(x / FEATURE_SIZE, y / FEATURE_SIZE);
            int rgb = 0x010101 * (int)((value + 1) * 127.5);
            image.setRGB(x, y, rgb);
        }
    }
    ImageIO.write(image, "png", new File("noise1.bmp"));
}
private static final int WIDTH=512;
专用静态最终整数高度=512;
专用静态最终双功能_SIZE=64;
公共静态void main(字符串[]args)
抛出IOException{
OpenSimplexNoise noise=新的OpenSimplexNoise(1233313l);
BuffereImage=新的BuffereImage(宽度、高度、BuffereImage.TYPE_BYTE_INDEXED);
对于(int y=0;y

我如何才能实现它以获得更平坦的森林等结果?

OpenSimplexNoise不直接提供您描述的功能,因此您需要自己提供。基本上,您会重复生成一层噪波并将其添加到最终结果中。更具体地说:

  • 八度音阶的数量由循环次数控制
  • 层的振幅通过将给定层的值乘以一定量来控制。振幅通常由倍频程数导出;最常见的例子是使用
    1/(2^n)
    ,其中
    n
    是当前倍频程的数字
  • 可以通过调整采样间隔来控制频率。关于OpenSimplexNoise,您可以通过将
    xyz
    参数乘以一定量来实现这一点。同样,这通常是从倍频程数导出的&最常见的例子是
    2^n

调整八度音阶数、振幅和频率值与其说是一门科学,不如说是一门艺术&这在很大程度上取决于你的情况。做一点实验&研究一下其他人用什么来找到适合你的项目。我使用上述标准振幅和频率的6个八度音阶得到了很好的结果。

您所说的“更高的细节水平”和“更平坦的结果”具体是什么意思?请给出数字和/或图像示例,说明您当前得到的以及您想要的。这是一个示例图像。正如你所见,这里有山脉,但也有一些很好的平坦地形,有很多细节。我知道这可以在PerlinNoise中通过将多倍频程和频率相加来实现,但我不知道如何在OpenSimplexNoise中实现。