Wenn Ihr mein UV-Unwrapping-Tut (Zweiter Post auf der ersten Seite) durchgearbeitet habt, so wisst Ihr sicher noch, dass die Schmalseite doch arg verzerrt war. Das wollen wir jetzt ändern. Zuerst einmal brauchen wir wieder die Koordinaten der Eckpunkte. Diesmal in folgender Reihenfolge:
[ external image ]
Dabei kommen wir auf folgende Punktkoordinaten:
1. x= -39,89948; z= 9,67298
2. x= -40,23808; z= 11,77476
3. x= -55,33858; z= 7,92292
4. x= -58,09228; z= 14,28303
5. x= -42,99178; z= 28,87479
6. x= -37,39259; z= 29,77679
7. x= -27,45378; z= 27,68959
8. x= -15,55449; z= 25,19049
9. x= 7,70042; z= 14,61036
10. x= -18,97541; z= 16,13868
11. x= -34,63878; z= 12,67684
12. x= -34,30028; z= 10,5744
Jetzt passen wir das ganze wieder an unsere Textur an. Zuerst mal die Länge:
Das erste Punktepaar bleibt, wie es ist und entspricht unserer Null. Das zweite Punktepaar hat welchen Abstand vom Ersten?
Wir erinnern uns, was wir in der Schule über den Satz des Pythagoras gelernt haben:
a^2 + b^2 = c^2; c ist also gleich der Wurzel aus (a^2 plus b^2). Nun dürfen wir aber nicht einfach mit den Punktewerten rechnen, sondern müssen die Differenzen der Punktkoordinaten nehmen.
Also: dx1= x1-x2 und dy1= y1-y2.
Welchen Wert wir von welchem abziehen, ist dabei egal. Durch das Quadrieren verschwindet das Vorzeichen sowieso. Wir erhalten für das erste Punktepaar also:
dx1= -39,89948 - -40,23808 = 0,3386; dy1= 11,77476 – 9,67298 = 2,10178
und weiter:
d1 = wurzel aus (dx1^2 + dy1^2) = 2,12888
Zweiter Punkt:
dx2=55,33858 – 40,23808 = 15,1005; dy2=11,77476 – 7,92292 = 3,85184
und d2 = Wurzel aus (dx2^2 + dy2^2) = 15,58402
und so weiter, so dass wir zu folgenden Abständen kommen (Vorsicht bei den Differenzen von Punkt 8 und 9 und bei 9 und 10, Vorzeichenwechsel!):
d1 = 2,12888
d2= 15,58402
d3= 6,93065
d4= 20,99868
d5= 5,67138
d6= 10,15561
d7= 12,15889
d8= 25,54858
d9= 26,71957
d10= 16,04137
d11= 2,12952
Diese Werte addieren wir jetzt auf und erhalten so die Gesamtlänge unserer Textur, nämlich
d= 144,06715
Durch diesen Wert dividieren wir jetzt die einzelnen Längen, um die einzelnen längen auf UV-Werte zu normieren:
d1 = 2,12888 / 144,06715 = 0,01478
d2= 15,58402 / 144,06715 = 0,10817
d3= 6,93065 / 144,06715 = 0,04811
d4= 20,99868 / 144,06715 = 0,14576
d5= 5,67138 / 144,06715 = 0,03937
d6= 10,15561 / 144,06715 = 0,07049
d7= 12,15889 / 144,06715 = 0,08440
d8= 25,54858 / 144,06715 = 0,17733
d9= 26,71957 / 144,06715 = 0,18546
d10= 16,04137 / 144,06715 = 0,11135
d11= 2,12952 / 144,06715 = 0,01478
Zur Kontrolle addieren wir die Werte jetzt auf, das Ergebnis müsste ganz nahe an 1 (eins) sein. Eventuelle (ganz) kleine Abweichungen in der Größenordnung 0,00002 oder so vernachlässigen wir, die kommen durch Rundungsfehler. Wir ziehen bei den größten Werten jeweils 0,00001 ab oder addieren sie dazu, je nachdem, in welche Richtung unsere Abweichung geht.
Fangen wir also an. Erstes Punktepaar bei 0, zweites bei 0,01478. Das dritte liegt bei 0,01478 plus 0,10817, also bei 0,12295. Und so weiter, bis wir die Liste durch sind:
P1 = 0
p2 = 0,01478
p3= 0,10817 + 0,01478 = 0,12295
p4= 0,04811 + 0,12295 = 0,17106
p5= 0,14576 + 0,17106 = 0,31682
p6= 0,03937 + 0,31682 = 0,35619
p7= 0,07049 + 0,35619 = 0,42668
p8= 0,08440 + 0,42668 = 0,51108
p9= 0,17733 + 0,51108 = 0,68841
p10= 0,18546 + 0,68841 = 0,87387
p11= 0,11135 + 0,87387 = 0,98522
p12= 0,01478 + 0,98522 = 1,00000
Wenn wir unsere Werte jetzt im UV-Editor eingeben, so erhalten wir Folgendes:
[ external image ]
Die Längen stimmen also schon mal. Nur in der Breite ist es noch verzerrt. Aber das bekommt Ihr doch jetzt sicher alleine hin, oder?

Gruß Dieter