OpenSimplexNoise更高的细节水平



我对世界生成和用于它们的算法很陌生,所以我希望有人能给我一些有用的解释或代码,或者两者都有,或者链接到一些我在寻找解决方案时错过的资源。

我怎么能得到一个更高的细节水平与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"));
}

我怎样才能实现它,使森林等得到更平坦的结果?

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

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

调整八度数,振幅&频率值与其说是科学,不如说是一门艺术。这在很大程度上取决于你的情况。尝试一下&研究别人使用过的方法,找到适合你项目的方法。我用标准振幅的6个八度得到了很好的结果。

相关内容

  • 没有找到相关文章

最新更新