【问题标题】:Draw and get OpenSimplexNoise result绘制并获取 OpenSimplexNoise 结果
【发布时间】:2016-08-24 11:39:50
【问题描述】:

我想用 OpenSimplexNoise 生成一个随机地形。首先,我只想得到一个结果并将其绘制到一个窗口中。

我现在的问题是:我怎样才能得到 OpenSimplexNoise 的正确输出(因为有很多方法,我只是不知道哪个是正确的)以及如何绘制这个结果。

它应该看起来像这样:

    public double[][] generateMap(long seed, int width, int height) {
        double[][] map = new double[width][height];

        // start generating things here, just how?
        OpenSimplexNoise simplex = new OpenSimplexNoise(seed);

        return map;
    }

    public void drawMap(double[][] map, Graphics g) {
        for(int x = 0; x < map.length; x++) {
            for(int y = 0; y < map[0].length; y++) {
                Color color = new Color(); // how to get the color here?
            }
        }
    }

这是我得到的当前代码。

这里是任何需要它的人的 OpenSimplexNoise 的链接: https://gist.github.com/KdotJPG/b1270127455a94ac5d19

【问题讨论】:

    标签: java terrain perlin-noise simplex-noise


    【解决方案1】:

    实际上只有 3 种公共方法 - 每种方法用于 2D、3D 和 4D 噪声。 由于您正在为您的地图填充 2D 数组,因此请使用 2D 噪声评估方法, 像这样:

    for(int x=0; x<width; x++){
       for(int y=0<y<height; y++){
          map[x][y] = simplex.eval(x, y);
       }
    }
    

    稍后,您可以从地图值生成颜色,如下所示:

    Color color = Color.color(map[x][y], ma[x][y], map[x][y]);
    

    作者还在OpenSimplexNoiseTest中提供了示例使用代码;他正在使用 3D 评估方法,但始终将 z 坐标保持为零。我的猜测是示例代码是在他添加 2D 和 4D 实现之前编写的。无论如何,它仍然有效,但它可能比直接使用 2D 慢一些。

    【讨论】:

    • 颜色构造函数不接受双精度。
    猜你喜欢
    • 2022-06-22
    • 2016-03-17
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2021-03-07
    • 2018-01-22
    相关资源
    最近更新 更多