hi,
ich habe auch seit längerem mal wieder ein Problem. Und zwar versuche ich ein Terrain aus einer Graustufentextur zu laden. Das funktioniert auch alles prima. Wenn ich jetzt aber mit dem Earth sculptor ein Terrain mache kommt nur müll raus. Selbst wenn ich die Heightmap, die funktioniert, im Earth Sculptor importiere und das ganze wieder exportiere, kommt so was bei raus. Ich hab mal die nötigen Bilder in den Anhang gemacht. Und hier noch mein Code
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
Color[] heights = new Color[heightmap.Width * heightmap.Height];
heightmap.GetData<Color>(heights);
VertexPositionColor[] vertices = new VertexPositionColor[128 * 128];
for (int z = 0; z < 128; z++)
{
for (int x = 0; x < 128; x++)
{
vertices[z * 128 + x] = new VertexPositionColor(new Vector3(x * 10.0f, heights[z * 128 + x].R, z * 10.0f), Color.Green);
}
}
vertexBuffer = new VertexBuffer(GraphicsDevice, typeof(VertexPositionColor), 128 * 128, BufferUsage.WriteOnly);
vertexBuffer.SetData<VertexPositionColor>(vertices);
int[] indices = new int[127 * 127 * 6];
int index = 0;
for (int z = 0; z < 127; z++)
{
for (int x = 0; x < 127; x++)
{
indices[index + 0] = z * 128 + x;
indices[index + 1] = indices[index + 0] + 128 + 1;
indices[index + 2] = indices[index + 0] + 128;
indices[index + 3] = indices[index + 0];
indices[index + 4] = indices[index + 0] + 1;
indices[index + 5] = indices[index + 0] + 128 + 1;
index += 6;
}
}
indexBuffer = new IndexBuffer(GraphicsDevice, IndexElementSize.ThirtyTwoBits, 128 * 128 * 6, BufferUsage.WriteOnly);
indexBuffer.SetData<int>(indices);
|
was mich halt so verwirrt ist, dass es mit der einen "von Hand" gezeichneten Heightmap funktioniert, und mit der exportierten nur Käse raus kommt.
Mfg Tobi
PS: sry das es 2 archive sind, aber eins ist zu groß