Hallo Zusammen
Danke für eure Antworten.
Habe selber herausgefunden wie das funktioniert, oder wie man das machen kann.
Man muss von einem Basispunkt ausgehen (am einfachsten ist hier der 1 Punkt des Objektes). Von dort aus spannt man ein Koordinatensystem auf. Die X – (bzw. U) Achse wird anhand des 2 Punktes ermittelt. Wobei die Y – (bzw. V) Achse anhand des Kreuzproduktes zwischen der X – Achse und der Normalen der Fläche berechnet wird. Wenn dieses Koordinatensystem einmal steht, müssen nur noch die einzelnen Punkte des Objektes auf die beiden Achsen proijeziert werden. Der Abstand dieses Punktes zum Basispunkt, ist dann die U – bzw. V – Koordinate.
Keine Ahnugn ob das Verständlich war, aber so funktioniert das wunderbar =)
Naja, das ist fast korrekt. Ich kenne Deinen Fall nicht, aber es scheint, Du hast eine Lösung für Deinen speziellen Fall gefunden. Denn das mit X- und Y-Achse stimmt so pauschal nicht.
Nehmen wir an, Du hast eine Fläsche mit vier Punkten (um es einfach zu halten):
|
Quellcode
|
1
|
1----2| |4----3
|
Die UV Koordinaten sind eine zweidimensionales Koordinatensystem im sogenannten "local space", also bezogen auf Deine Fläsche. Wo du den Ursprung hinlegst, hängt von der Textur und der Ausrichtung der Fläche ab. In dem Beispiel oben wäre sicherlich der Punkt 1 sinnvoll.
Damit zeigt u von Punkt 1 nach Punkt 2 und v von Punkt 1 nach Punkt 4. In Deinem Fall als X- und Y-Achse bezeichnet.
Somit hätten die 4 Punkte folgende Koordinaten
|
Quellcode
|
1
|
1: u = 0.0 v = 0.02: u = 1.0 v = 0.03: u = 1.0 v = 1.04: u = 0.0 v = 1.0
|
1.0 bedeutet natürlich, dass Du die volle Größe der Textur nimmst. Die uv Koordinaten sind ja normalisiert. Wenn Du nur einen Ausschnitt aus der Textur verwenden willst, dann musst die natürlich berechnen.
Beispiel:
Textur ist 256x256 Pixel groß. Du willst aber nur das Rechteck von 0,0 bis 128,128 anzeigen. Dann ist u2
|
Quellcode
|
1
|
128/256 = 0.5
|
Denk Dir einfach ein 2D Koordinatensystem projeziert auf Deine Fläche.