0

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

4

1 に答える 1

1

実際には、2D、3D、および 4D ノイズ用に 1 つずつ、合計 3 つのパブリック メソッドしかありません。map の 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 eval メソッドを使用していますが、常に z 座標をゼロに保持しています。私の推測では、彼が 2D および 4D の実装を追加する前に、サンプル コードが作成されました。いずれにせよ、それでも機能しますが、2D を直接使用するよりも少し遅くなる可能性があります。

于 2016-08-25T14:22:17.873 に答える