servus,
ich bin noch rel. unerfahren in OpenGL, deshalb verzeiht die vielleicht etwas blöde Frage...
Ich habe eine Navigation geschrieben, mit der ich mich in der OpenGL-3D-Welt bewegen möchte. Und zwar soll die Steuerung wie in einem Ego-Shooter funktionieren (zumindest wahlweise).
Mit folgendem simplen Code kann ich meine Position verändern und das Objekt (mesh) mit der Maus rotieren lassen.
Code:
glpushmatrix();
gltranslatef(positionX, positionY, positionZ);
glrotatef(angleX, 1.0,0.0,0.0);
glrotatef(angleY, 0.0,1.0,0.0);
glrotatef(angleZ, 0.0,0.0,1.0);
glscalef(0.01,0.01,0.01);
mesh1.Render;
glpopmatrix();
Was ich aber eigentlich möchte ist, nicht das Objekt drehen, sondern die Kamera oder eben die ganze Welt um mich herum.
Ich dachte, dass das passieren müsste, wenn ich das Objekt zuerst verschieben und dann drehe statt umgekehrt. Aber das zeigt leider keine Wirkung.
Hat jemand eine Idee, vielleicht einen komplett anderen Ansatz, eine Referenz?
am schluss musst du wieder zurückwechseln in die "Welt-Matrix" .
glLoadIdentity wird aufgerufen um die neutrale Matrize zu laden, somit kannst du das ganze immer ändern
Bei gluPerspective handelt es sich um einen Befehl, der quasi die Kamera festlegt, schau aber gescheiter in der Wiki nach.
hier kannst du einfach einen winkel angeben, in grad und dann dreht er.
Das würde ich nicht so machen. Die Projektionsmatrix sollte imo nur für öffnungswinkel, etc abhängen. Ich würde eher erst drehen dann verschieben. Siehe die verschiedenen matrixtuts.
Vllt ist das das was du willst, aber für weitere hilfen solltest du deinen Wunsch genauer beschreiben. Außerdem solltest du dir das 2. Matrixtutorial ansehen da wird sowas glaube ich erklärt.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Es ist das selbe ob ich das Objekt drehe oder die Welt. Der unterschied ist einfach nur was noch gedreht wird. Wenn du so wie in deinem Code natürlich nur den Mesh beeinflusst, dann dreht sich nur dieser. Wenn du aber die Rotation machst und dann die Komplette Welt zeichnest - na was ist dann alles gedreht? Richtig die Welt.
ich glaube Phobeus hatte das sogar in einem Tutorial geschrieben. Nach dem Motto, dreh ich mich um die Welt oder die welt um mich.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Oder frei nach Einstein : Alles ist relativ
@Thassil0 Wenn deine 'Welt' aus einem Mesh besteht, dann ist sie auch nichts weiter als ein Objekt, also musst du sie auch wie ein Objekt drehen und verschieben.
kk - ich muss mich falsch ausgedrückt haben. - Aber schon mal großes Dank für die Bemühungen.
Also richtig ist, momentan ist Mesh1 mein einziges Objekt, damit aber nicht meine Welt.
Wenn ich das Objekt nämlich verschiebe, möchte ich NICHT, dass der Fixpunkt zu dem rotiert wird, mitverschoben wird.
Momentan ist es ja so, dass ich mein Objekt bewege und danach drehe, dann hat sich das Objekt zwar von der Stelle bewegt, aber um die eigene Achse gedreht. Was ich möchte ist eine Drehung um den Koordinatenursprung. Ich möchte das Objekt bewegen und dann sehen, dass es um MICH dreht und nicht um die eigene Achse.
Versteht ihr was ich meine? *am kopfkratz...* - Wie bei der Bewegung im Ego-Shooter.
Gruß Thassilo
P.S.: Die ersten Tutorials hab ich gelesen. Langsam hab ich aber das Gefühl, ich hab was falsch verstanden.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Der unterschied ist dachte ich im Matrix2 Tutorial in den Bildern zu erkennen.
Wenn du zuerst rotierst und dann verschiebst, dann rotiert das Objekt um dich herum. Wenn du's andersrum machst, dann rotiert es um die eigene Achse in einiger entfernung.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
das mit der Reihenfolge dachte ich mir schon - aber irgendwie hatte es nichts bewirkt. Das lag aber daran, dass ich als erstes die Matrix klein-skaliert habe ... und dann haben die anderen Transformationen nicht mehr viel bewirkt.
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.