Hey quick question:
I Am loading a height map into my game from a texture file.
here is my Method
private void LoadHeightMap(Texture2D HeightMap)
{
int width = HeightMap.Width;
int height = HeightMap.Height;
float[,] heightData = new float[height, width];
Color[] heightMapColors = new Color[width * height];
HeightMap.GetData(heightMapColors);
for (int y = height - 1; y > 0; y--)
for (int x = width - 1; x > 0; x--)
heightData[y, x] =
MathHelper.Clamp(heightMapColors[x + y * width].R / f_MapDivScale,
0, i_MaxLandscapeHeight);
hm_HeightMap = new HeightMap(width, height, heightData);
}
And I set the Vertices using the Following Method
d_VertexList = new Dictionary<Vector2, TextureIndexVertex>();
for (int x = 0; x < hm_HeightMap.Width; x++)
{
for (int y = 0; y < hm_HeightMap.Height; y++)
{
TextureIndexVertex thisVertex = new TextureIndexVertex();
thisVertex.TextureCoordinate.X = (float)x / 30.0f;
thisVertex.TextureCoordinate.Y = (float)y / 30.0f;
thisVertex.Position = new Vector3(x, hm_HeightMap.HeightData[y, x], y);
d_VertexList.Add(new Vector2(x,y), thisVertex);
}
}
And I set the Indices using the Following Method
l_IndiciesList = new List<int>();
for (int y = 0; y < hm_HeightMap.Height - 1; y++)
{
for (int x = 0; x < hm_HeightMap.Width - 1; x++)
{
int lowerLeft = x + y * hm_HeightMap.Width;
int lowerRight = (x + 1) + y * hm_HeightMap.Width;
int topLeft = x + (y + 1) * hm_HeightMap.Width;
int topRight = (x + 1) + (y + 1) * hm_HeightMap.Width;
l_IndiciesList.Add(topLeft);
l_IndiciesList.Add(lowerRight);
l_IndiciesList.Add(lowerLeft);
l_IndiciesList.Add(topLeft);
l_IndiciesList.Add(topRight);
l_IndiciesList.Add(lowerRight);
}
}
Now when I load a height map which is square (300x300, 500x500, 1000x1000)
etc, I get a perfect result (or what seems to be at least). However, when I try to load a map which is a rectangle (444x567) I Get Distorted Lines all over the place E.g.
Problem Pic
at most, I can only figure that there must be something going wrong with the indices so any advice is appreciated
Regards ~Andy^
[Edited by - Andy474 on April 1, 2010 3:20:24 PM]