1
Support / Texture Blending on a heightmap/surfacemap
« on: March 04, 2016, 05:34:33 pm »
I am loading a heightmap, and texturing it based upon the data stored in the map format. I would like to apply texture blending to this.

I use the following for preparing the triangles/UV coordinates
Does anyone have any tips or advice they could give me for making this look nicer?

I use the following for preparing the triangles/UV coordinates
Code: [Select]
/**
* The terrain heights are calculated now. Now we have to build an
* Object3D from them.
*/
Object3D ground = new Object3D(width * height * 2);
for (int x = 0; x < width - 1; x++) {
for (int z = 0; z < height - 1; z++) {
int x1 = x * 10;
int x2 = (x + 1) * 10;
int z1 = z * 10;
int z2 = (z + 1) * 10;
float southwestY = heights[x][z];
float southeastY = heights[x + 1][z];
float northwestY = heights[x][z + 1];
float northeastY = heights[x + 1][z + 1];
/*
* Triangles start being drawn at the smallest 'x' Cartesian coordinate in jpct.
* You then go clockwise to fill in the rest of the points.
*
*0,1-1,1
* | /|
* | / |
* |/ |
*0,0-1,0
*
* Above is a cheat sheet for the coordinates.
*
*
* TODO: Implement it such we can select the triangle hypotenuse for the tile based
* on surrounding textures. This should improve blending when that finally gets implemented.
*/
// 0,1
// |\
// | \
// | \
// |___\
// 0,0, 1,0
ground.addTriangle(
new SimpleVector(x1, southwestY, z1), 0,0,
new SimpleVector(x2, southeastY, z1),0,1,
new SimpleVector(x1, northwestY, z2), 1,0,
fetchTexture(surfaces[x][z]));
//
//0,1____1,1
// \ |
// \ |
// \|
// 1,0,
ground.addTriangle(
new SimpleVector(x1, northwestY, z2), 1, 0,
new SimpleVector(x2, southeastY, z1), 0, 1,
new SimpleVector(x2, northeastY, z2),1, 1,
fetchTexture(surfaces[x][z]));
// TODO
// ____
// /|
// / |
// / |
// /__ |
}
}
Does anyone have any tips or advice they could give me for making this look nicer?