Quaternionen?
-
Hallo.
Ich habe davon keine Ahnung, könnt ihr mir sagen ab ich den Quelltext (von Meiner Kamera) so lassen soll, oder Quaternionen benutzen://wir sind in Kamera::EveryFrameProc() Right.x = fCosYaw * fCosRoll + fSinYaw * fSinPitch * fSinRoll; Right.y = fSinRoll * fCosPitch; Right.z = fCosYaw * fSinPitch * fSinRoll - fSinYaw * fCosRoll; Up.x = fSinYaw * fSinPitch * fCosRoll - fCosYaw * fSinRoll; Up.y = fCosRoll * fCosPitch; Up.z = fSinRoll * fSinYaw + fCosRoll * fCosYaw * fSinPitch; Dir.x = fCosPitch * fSinYaw; Dir.y = -fSinPitch; Dir.z = fCosPitch * fCosYaw; Mat.Mat4x4[0][0] = Right.x; Mat.Mat4x4[1][0] = Right.y; Mat.Mat4x4[2][0] = Right.z; Mat.Mat4x4[3][0] = -DotProd(Pos, Right); Mat.Mat4x4[0][1] = Up.x; Mat.Mat4x4[1][1] = Up.y; Mat.Mat4x4[2][1] = Up.z; Mat.Mat4x4[3][1] = -DotProd(Pos, Up); Mat.Mat4x4[0][2] = Dir.x; Mat.Mat4x4[1][2] = Dir.y; Mat.Mat4x4[2][2] = Dir.z; Mat.Mat4x4[3][2] = -DotProd(Pos, Dir); Mat.Mat4x4[0][3] = 0.0f; Mat.Mat4x4[1][3] = 0.0f; Mat.Mat4x4[2][3] = 0.0f; Mat.Mat4x4[3][3] = 1.0f; glLoadMatrixf (Mat.Mat16);
Ich weiss nur, dass in Quake 2 keine Quaternionen benutzt werden, aber man trozdem im Internet viel liest, dass Quaternionen schneller und einfach besser seien.
Danke euch allen.
-
Das kannste so lassen ...
Nur wenn man Rotationsmatrizen oft miteinander multipliziert werden degenerieren diese wegen numerischen Schwierigkeiten ...
... Bei quaternionen nicht ...
-
Naja, vielleicht benutzte ich doch Quaternionen.
Noch mal eine Frage: Kann so wie es in meinem Code steht, der "Gimbal Lock" auftreten?
Aus dem was ich gefunden habe, werde ich nicht wirklich schlau.
Danke
-
lies der den vorigen Beitrag nochmal durch, dass hast du die antwort...
JA wenn viele Rotationsmatrix miteinander multipliziert werden
-
das hat nix mit der anzahl zu tun ~~