Objekt->Transformationsmatrix
-
Wenn man von einem Objekt/Spieler seine Position (Vector3D) und seine Blickrichtung (Vector3D) kennt wie ermittelt man dann seine 4×4Transformationsmatrix???
Hey wäre nett wenn das einer wüßte.
Und noch ne theoretische Frage: Wie würde es sich auf die Matrix auswirken wenn die Blickrichtung nicht normalisiert wäre.
Danke im voraus.
-
Allein mit diesen beiden Angaben gibt es keine eindeutige Lösung. Der Spieler könnte sich ja noch um seine eigene z-Achse drehen, und die Blickrichtung bliebe gleich. Man braucht die Position und zwei Achsen (die dritte kannst Du mit dem Kreuzprodukt berechnen).
Wenn die Vektoren nicht normalisiert sind, wirkt sich das in Form einer Skalierung auf der entsprechenden Achse des Objekts aus.
-
grml.Türlich hab ich gar nicht dran gedacht.
Ich denke mal am einfachsten wäre es wohl, wenn man neben der Blickrichtung(Z-Achse), die Y-Achse nimmt, weil die bei einem Objekt was auf dem Boden steht, identisch mit dem dazugehörigen normalvektor des Terrains ist.Okay also ich habe nun 2 Achsen.
Die X-Achse ermittle ich über das Kreuzprodukt.So vom Nachdenken würde ich sagen die Transformationsmatrix wäre die:
Vector3D AchseX; Vector3D AchseY; Vector3D AchseZ; Vector3D Pos; Transformationsmatrix= [AchseX.x,AchseX.y,AchseX.z,-Pos.x] [AchseY.x,AchseY.y,AchseY.z,-Pos.y] [AchseZ.x,AchseZ.y,AchseZ.z,-Pos.z] [0 ,0 ,0 ,1 ]
Ist das jetzt richtig oder
1. muß der 3×3 Teil der Matrix um die Diagonale gespiegelt werden?,
2. sind irgendwelche vorzeichen falsch?