そこで今日、私は新しいプロジェクトから始めました。私は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