Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Thistle

Pages: [1]
1
Support / Re: Terrain Generation not working
« on: December 26, 2012, 01:41:31 am »
The System.out prints what I expect it to, most of the values being 0 as most of the bitmap is pure black, with a centre square being completely white which outputs 255. Since 0 to 255 seems extreme as the random terrain code generates between -20 to around 20, I took the grayscale value and divided by 10. The console doesn't seem to return any errors, but if you meant something different I haven't a clue.

EDIT: I'd like to rule out that the generation is not visible to where the camera is currently pointing, but every time I generate a random terrain I can barely see it, and can't quite understand how the controls in JPCT work.

2
Support / Terrain Generation not working
« on: December 25, 2012, 11:56:27 pm »
So i've been trying to decode Egon's heightmap code and the edits I made to convert it from Android to work on PC were unsuccessful.

Code: [Select]
public class Terrain {

public static float HighestPoint = 0;

static BufferedImage bmp = null;
static String pixel = null;

public static Object3D generate(int X_SIZE, int Z_SIZE, TextureManager tm) throws IOException {

bmp = ImageIO.read(new File("res/map.bmp"));

float[][] terrain = new float[X_SIZE][Z_SIZE];

for (int x = 0; x < X_SIZE - 1; x++) {
for (int z = 0; z < Z_SIZE - 1; z++) {

Color c = new Color(bmp.getRGB(x,z));
int r = c.getRed();
int g = c.getGreen();
int b = c.getBlue();

terrain[x][z] = (float) (((0.299*r) + (0.587*g) + (0.114*b))/100); // Grayscale algorithm

System.out.println(terrain[x][z]);

if (terrain[x][z] > HighestPoint) {
HighestPoint = terrain[x][z];
}
}

}
for (int x = 0; x < X_SIZE - 1; x++) {
for (int z = 0; z < Z_SIZE - 1; z++) {
terrain[x][z] = (terrain[x][z] + terrain[x + 1][z]
+ terrain[x][z + 1] + terrain[x + 1][z + 1]) / 4;
}
}
Object3D ground = new Object3D(X_SIZE * Z_SIZE * 2);

float xSizeF = (float) X_SIZE;
float zSizeF = (float) Z_SIZE;

int id = tm.getTextureID("map"); // I used a gray 128x128 texture

for (int x = 0; x < X_SIZE - 1; x++) {
for (int z = 0; z < Z_SIZE - 1; z++) {

TextureInfo ti = new TextureInfo(id, (x / xSizeF),
(z / zSizeF), ((x + 1) / xSizeF), (z / zSizeF),
(x / xSizeF), ((z + 1) / zSizeF));
ground.addTriangle(new SimpleVector(x * 10, terrain[x][z],
z * 10), new SimpleVector((x + 1) * 10,
terrain[x + 1][z], z * 10), new SimpleVector(x * 10,
terrain[x][z + 1], (z + 1) * 10), ti);

ti = new TextureInfo(id, (x / xSizeF), ((z + 1) / zSizeF),
((x + 1) / xSizeF), (z / zSizeF), ((x + 1) / xSizeF),
((z + 1) / zSizeF));
ground.addTriangle(new SimpleVector(x * 10, terrain[x][z + 1],
(z + 1) * 10), new SimpleVector((x + 1) * 10,
terrain[x + 1][z], z * 10), new SimpleVector(
(x + 1) * 10, terrain[x + 1][z + 1], (z + 1) * 10), ti);
}
ground.build();
}

return ground;
}
}


I am not particularly experienced with this library, but from what I've seen the Terrain generation code looks almost identical to this one, but works properly when I fire it in. What seems to be wrong with this code since it doesn't appear to do anything when I run it?

Pages: [1]