Umrechnung von YAW, PITCH und ROLL
-
Bei meiner FPS-like Maussteuerung klappt es mit Yaw und Pitch in Winkeln speichern, und mehr nicht, anscheinend aber wunderbar. Warum?
Ich mache dabei glaub ich als erstes ne Rotation um die y-Achse und dann um sie veränderte x-Achse. Das ganze dann noch umgekehrt (und immer negativ weil camera), wegen den OpenGL-Matrizen, und es funzt:(Pitch hab ich noch nicht probiert, is immer 0)
void Camera::setMatrix() { glLoadIdentity(); gluLookAt(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f); glRotatef(-direct_.x, 1.0f, 0.0f, 0.0f); glRotatef(-direct_.y, 0.0f, 1.0f, 0.0f); glRotatef(-direct_.z, 0.0f, 0.0f, 1.0f); glTranslatef(-pos_.x, -pos_.y, -pos_.z); }
-
spl@t schrieb:
Bei meiner FPS-like Maussteuerung klappt es mit Yaw und Pitch in Winkeln speichern, und mehr nicht, anscheinend aber wunderbar. Warum?
weils was ganz anderes ist? pack da mal noch ne rotation um z rein (um den kopf seitlich zu neigen) und in der reihenfolge wirds auseinanderfallen. du würdest bei einem shooter auch nie auf die idee kommen um die lokale y achse zu rotieren, weils extrem seltsam aussehen würde.
-
eigentlich müsste man doch das problem lösen können, wenn man gluLookAt verwendet. Dann müsste man nurnoch Yaw Pitch und Roll winkel in die "to"-coord umrechnen oder??
EDIT: ich habe es geschafft!!!!!!!! OPEN GL GEHT!
Edit2: ahh ne doch nich ... hat jemand ne ahnung was das 'Xlib: extension "XFree86-DRI" missing on display ":0.0".' heissen soll? Ich denk mal, dass der X server das OpenGL extention protocol nicht unterstützt oder?? was kann ich dann tun? XFree hab ich gradeben neu compiliert.
-
Hast Du denn keine GraKa-Treiber?
-
doch ich denk auch nicht dass das etwas damit zu tun hat.
eher fehlt mir die X11-protocol-extention für OpenGL oder so (muss man da vielleciht noch ein compiler-flag anschalten?!?). Also früher gings bei mir.
-
Hm, aber wenn Du nen GraKa-Trieber hast, brauchst Du doch keine mesa, oder? oder täusch ich mich da?
-
nee mesa ist doch nur ein OpenGL clone
Mesa redet so-zu-sagen mit dem graka-treiber -> entweder direkt über /dev/dri (direct rendering interface) oder eben über X11 (oder beides weis nich so genau) - auf jeden fall kann mein X-Server die protocol erweiterung irgendwie nicht.
-
HellKnight schrieb:
eigentlich müsste man doch das problem lösen können, wenn man gluLookAt verwendet. Dann müsste man nurnoch Yaw Pitch und Roll winkel in die "to"-coord umrechnen oder??
? wenn du die ganzen sachen weißt, die man für lookat braucht, dann ist die sache sowieso schon erledigt, denn lookat baut daraus GENAU die matrix, die du sowieso von anfang an benutzen solltest und invertiert sie noch schnell. was steht in so einer matrix schon drin? rechts/oben/vorne vektoren und eine position. was braucht man für lookat? einen über den "vorne" vektor berechneten punkt, die position und einen wenigstens grob korrekten oben vektor. lookat bügelt in dem fall nur ein paar überflüssige kreuzprodukte und wurzeln drüber.