Ich arbeite gerade an einem Wegesystem, das sich zur Laufzeit auf mein Terrain legt. Das funktioniert auch ganz gut. Allerdings habe ich Verständnissprobleme bei der Nutzung der UV Map.
So generiere ich ein Face, also ein Abschnitt des Weges:
|
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
|
void GenerateSegment(Vector3 start, Vector3 end, int segmentCount, Vector3 direction, Vector3 rotatedDirection, float length, float width)
{
Vector3 moveVector = end - start;
moveVector.y = 0;
Vector3[] vertices = new Vector3[4];
vertices[0] = start + rotatedDirection * (width/2f);
vertices[1] = start - rotatedDirection * (width/2f);
vertices[2] = end - rotatedDirection * (width/2f);
vertices[3] = end + rotatedDirection * (width/2f);
for(int i = 0; i < vertices.Length; ++i)
{
vertices[i].y = SampleHeight(vertices[i]);
}
newVertices.AddRange(vertices);
newTriangles.Add(segmentCount*4);
newTriangles.Add(segmentCount*4 + 1);
newTriangles.Add(segmentCount*4 + 3);
newTriangles.Add(segmentCount*4 + 1);
newTriangles.Add(segmentCount*4 + 2);
newTriangles.Add(segmentCount*4 + 3);
newUV.Add(new Vector2 (1, 1));
newUV.Add(new Vector2 (0, 1));
newUV.Add(new Vector2 (1, 0));
newUV.Add(new Vector2 (0, 0));
}
|
Nun habe ich das Problem, dass die Texturen gestaucht bzw. gezogen werden(siehe Anhang). Dabei hätte ich lieber eine Kachelung.
Habe bereits zwei Möglichkeiten ausprobiert:
|
C#-Quelltext
|
1
2
3
4
|
newUV.Add(new Vector2 (length, 1));
newUV.Add(new Vector2 (0, 1));
newUV.Add(new Vector2 (length, 0));
newUV.Add(new Vector2 (0, 0));
|
|
C#-Quelltext
|
1
2
3
4
|
newUV.Add(new Vector2 (1/length, 1));
newUV.Add(new Vector2 (0, 1));
newUV.Add(new Vector2 (1/length, 0));
newUV.Add(new Vector2 (0, 0));
|
Funktioniert leider beides nicht und da ich mich damit nicht auskenne bin ich mit meinem Latein am Ende.
Hat jemand eine Idee wie ich eine Kachelung mit der UV umsetze?
Danke schonmal im Voraus!