/ / Java:私の身長マップジェネレータはバイナリだけを書く - java、random、png、terrain、heightmap

Java:私の高さマップジェネレータは、Java、ランダム、PNG、地形、高さマップ

そこで今日、私は新しいプロジェクトから始めました。私はjavaで簡単なheightmapジェネレータを作りたいので、私は以下を試しました:

    import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class Heightmap {


public static int width = 200;
public static int height = 200;

public static void main(String[] args) {

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY );
for(int x = 0; x < width; x++){
for(int y = 0; y < height; y++){
bufferedImage.setRGB(x, y, (byte )(Math.random() * 256 + 128) ); // + 128 because byte goes from -128 to 127
}
}

File outputFile = new File("heightmap.png");
try {
ImageIO.write(bufferedImage, "png", outputFile);
}catch (IOException ioex){
ioex.printStackTrace();
}
}
}

コードは非常に単純です、私は次のステップとしてperlinノイズを試してみるつもりです。しかし、最初にこの問題を解決する必要があります。 生成された高さマップ

のピクセル heightmap.png 完全に白、または完全に黒です。画像にはグレーがありません。もちろん、これはハイトマップには必要です。だれかが私が間違ったことを知っていますか?

それですか BufferedImage.TYPE_BYTE_GRAY 部?もしそうなら、私は代わりに何を使うべきですか?

回答:

回答№1は1

友人が私を正しい軌道に乗せた後、私は解決策を見つけました。

の代わりに BufferedImage.TYPE_BYTE_GRAY 私は使った BufferdImage.TYPE_INT_RGB。だから私は間違っていたところです。また、私はオブジェクトを追加しました Color randomColorここで、RGB値はすべて、0から255までの値を有する同じ整数を共有する。 BufferedImage.setRGB 私はカラーコードを使います randomColor (つまりR、G、B = 255は#FFFFFFを与えます。これは白です)pixel(x、y)の値として:

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class Heightmap {


public static int width = 200;
public static int height = 200;

public static void main(String[] args) {

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB );
for(int x = 0; x < width; x++){
for(int y = 0; y < height; y++){
int randomValue = (int)(Math.random() * 256);
Color randomColor = new Color( randomValue, randomValue, randomValue);

bufferedImage.setRGB(x, y, randomColor.getRGB());
}
}

File outputFile = new File("heightmap.png");
try {
ImageIO.write(bufferedImage, "png", outputFile);
}catch (IOException ioex){
ioex.printStackTrace();
}




}

}

今すぐheightmap.pngは私が期待したものを与えます: Heightmap.png