ich möchte ein Objekt mit Opengl nicht in seinen lokalen Koordinatensystem drehen sondern stattdessen um die Koordinatenachsen des Kamerkoordinatensystems. Ich krieg es irgendwie nicht hin.
Kann mir bitte jemand sagen wie ich das anstellen kann oder hat vielleicht sogar jemand Code dazu?
Willst du realisieren, die Kamera zu drehen? Das ist nicht schwer, das kann sogar ich
Normalerweise verschiebst du ja zuerst das Objekt, und drehst es dann. Das hat bei Objekten den gewünschten Effekt. Willst du jetzt aber die Kamera drehen, ist das anders: Du willst ja nicht jedes Objekt um die eigene Achse drehen, sondern die Kamera. Wenn du mal aufstehst und dich in deinem Zimmer drehst, sieht es ja fast so aus, als ob sich die Welt um dich drehen würde. Man kann also sagen, alle Objekte werden um die Kamera gedreht.
Also: Erst drehen wir die Welt falschrum, weil die Welt sich ja nach links dreht, wenn wir eine Rechtsdrehung machen. Dann verschieben wir alle Objekte noch richtig - sie werden gedreht verschoben, d. h. die Bewegungslinie ist jetzt gedreht. Das Ergebnis: Die Kamera dreht sich
Zusammenfassung: Erst Kamera falschrum drehen, dann Kamera falschrum verschieben, dann Objekte zeichnen.
Ach so, noch wichtig ist, dass du zwischendrin nie glLoadIdentity aufrufst, weil diese Funktion die Kamera zurücksetzen würde. Nehme lieber glPushMatrix und glPopMatrix.
Danke aber das ist es glaube ich nicht, obwohl es vielleicht auch darüber möglich ist. Ich hab mich vielleicht auch etwas verwirrend ausgedrückt. Was ich meine ist, dass das Objekt unabhängig von seiner momentanen Orientierung immer um die Achsen des Sichtsystems rotiert. Ist das verständlicher?
Das ist doch auch so ungefähr möglich (falls ich dich jetzt richtig verstanden habe). Statt dass du das Objekt erst bewegst und dann rotierst, kannst du es auch umgekehrt machen - oder sogar zweimal rotieren. Normalerweise dürfte doch die Matrix vor dem Zeichnen immer genau auf die Kamera ausgerichtet sein. Das kannst du dir zu Nutzen machen - indem du es genau von dieser Richtung aus drehst.
Ich hab hier glaube ich eine Lösung für mein Problem gefunden http://www.3dsource.de/faq/transformations.htm (Punkt 9.070). Allerdings hab ich immer noch noch nicht ganz verstanden wie ich das mache. Ich muss wohl meine eigenen Matrix Operationen ausführen und nicht mit der integrierten Openglmatrix arbeiten.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Moment.
Also nehmen wir mal an du hast einen Würfel der auf der Spitze steht.
Jetzt willst du, dass sich der Würfel (sammt restlicher Szene) um die Kamera dreht.
Im Grunde genommen musst du (ohne es jetzt ausprobiert zu haben) einfach die "kamerarotation" zuerst durchführen. Noch bevor du am Anfang etwas "Abstand" von der Szene nimmst (um überhaupt was zu sehn).
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Jun 09, 2005 13:48 Beiträge: 117 Wohnort: Sankt Augustin
Hallo,
ich habe mal eine Kamera programmiert und hier unter "nützliche Helfer" eingestellt. Mit dieser Kamera kann man beliebig zwischen OpenGL-Achsen und Bildschirmachsen umschalten. Sieh doch da mal rein.
Mitglieder in diesem Forum: Google [Bot] 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.