hatte ich schon probiert mit dem minus.. reagiert trotzdem nicht auf rotation..Hatte das minus erstmal weggelassen, dann müsste ich ja theoretisch die Position exakt gegenüberliegend sehen..
wenn ich die theorie einer Matrix verstanden habe, ist das auch richtig, das er bei den letzten 3 bzw 4 werten nur die Transformation anzeigt, denn dann ist das bestimmt der Mittelpunkt des Koordinatensystems.. welcher ja durch die Rotation nicht geändert wird.. Wie also bekomme ich nun meine korrekte Kamera Position?
Öh.. einfach die translations werte der Matrix nehmen reicht ja auch nicht. Du mußt deinen Punkt an dem die Kamera ihren ausgangspunkt hat mit der matrix multiplizieren.
Also in der Regel den Punkt (0, 0, 0) mit der Matrix multiplizieren, der punkt der da dann rauskommt ist deine aktuelle kamera position. (Bzw. du mußt glaub ich die Matrix erst noch invertieren, da bin ich mir grad nicht sicher, kommt auch ein bisschen drauf an wie du die daten speicherst etc.)
Funktioniert nur solange du bei glTranslate und glRotate bleibst. Die mit glGetFloat ausgelesene Matrix muss orthonormal sein, das bedeutet das z.B. glScale ist hier für die Kamera nicht erlaubt. Für Objekte die du später renderst gibt es aber keine Einschränkung, es geht hier nur um die Kamera.
Wenn die Matrix nicht orthonormal ist wird die Berechnung komplizierter. Falls du das aber brauchst, schau dir Matrix44<T>::inverse() von CoolMath an. Du musst den Punkt (0,0,0,1) mit der inversen Matrix transformieren.
@Aya: Ja, invertieren hatte ich vergessen. Aber den Punkt (0,0,0) nehmen entspricht einfach dem Translationsteil
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.