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

我的问题现在是:如何获得OpenSimplexNoise的正确输出(因为有很多方法,我只是不知道哪种方法正确)以及如何得出此结果。

它看起来应该像这样:
java - 绘制并获取OpenSimplexNoise结果-LMLPHP

    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

最佳答案

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

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


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

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


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

09-30 14:43