Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:54

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Globale und lokale Koordinaten?
BeitragVerfasst: Mi Feb 01, 2006 17:02 
Offline
DGL Member

Registriert: Mi Feb 01, 2006 16:51
Beiträge: 4
Ich hab irgendwie ein Verständnisproblem mit OpenGL.

In einem Qt GLWidget lass ich ein paar Szenen darstellen (verwende c++, aber das sollte hier nicht stören), diese sollen sich rotieren lassen, um sie von allen Seiten betrachten zu können. Dabei soll die Szene aber immer um globale Koordinaten rotiert werden. Diese befinden sich immer im Blickmittelpunkt, rechtshändig, y nach oben positiv (z is mir wurst ;))
Die Befehle glTranslate und glRotate beeinflussen offenbar das Koordinatensystem, wende ich beispielsweise ein Rotate auf eine Szene an, wird das Objektkoordinatensystem für weitere Transformationen verwendet.

Meine Idee war nun, mir die Rotation selbst zu berechnen und dann mittels glMultMatrix auf die Identitätsmatrix anzuwenden. Allerdings ist diese offenbar AUCH in Objektkoordinaten Oo

Bekomm ich das irgendwie hin, OpenGL meine globalen Koordinaten beizubringen, oder hab ich nur die Objektkoordinaten zur Verfügung und muss diese in mein globales System transformieren?

Hab auch von den Befehlen pop und pushMatrix gelesen, die nach meinem Verständnis genau dafür da sind. Leg die Objektkoordinaten auf den Stack und arbeite auf ner anderen Matrix. Aber was für eine ist das dann? Und wenn ich das mache: ich leg die Matrix auf den Stack, mal mein Objekt, hol die Matrix zurück und rotier nochmal... das zeichnet OpenGL aber nicht mehr in die Szene. Transformationen, nachdem die Szene gezeichnet wurde, werden geflissentlich ignoriert.

Also entweder hab ich grad nen riesen Brett vorm Kopf oder ich hab OpenGL nicht verstanden. (Vermute eine Kombination aus beidem ;))


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 01, 2006 22:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 26, 2002 22:12
Beiträge: 259
Wohnort: Dresden
Wenn ich dich richtig verstanden habe willst du den selben Effekt wie in einem Spaceshooter erreichen indem der Spieler sich aus seiner lokalen Sicht immer nach oben, unten, links bzw rechts dreht egal wo nun in Wirklichkeit oben und unten ist ;).

In unserer Tutorialsektion gibt es genau 2 Tutorials dazu und es sollte nicht schwer sein den Beispielcode entsprechend abzuändern. Die beiden Tutorials findest du unter „Mathematisches“ („Objekt gedreht...“ und „Objekt immer um eigene Achse drehen“)

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 01, 2006 22:37 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die prinzipielle Anwendung der Translate, rotate und scale befehle sind im Tutorial Matrix2 nochmal Bildlich dargestellt. Eventuell hilft dir das, und die dort verlinkten Programme weiter.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 10:58 
Offline
DGL Member

Registriert: Mi Feb 01, 2006 16:51
Beiträge: 4
noch zwei fragen:

1. gibs ne gl funktion, die mir die inverse der modelview matrix liefert oder muss ich die selbst berechnen?

2. was genau machen pushmatrix und popmatrix. wird die aktuelle matrix auf den stack gelegt und als "arbeitsmatrix" eine kopie der aktuellen oder die identitätsmatrix genommen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 12:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
1. Meines Wissensstand nach musst du das selber machen. Aber da lasse ich mich nicht drauf festnageln, wenn ich unrecht habe.

2. PushMatrix legt die aktuelle Matrix auf dem MatrixStack ab und Pop Matrix holt die letzt gepushte wieder zurück. Wenn eine Matrix gesichert wurde dann bleibt die Arbeitsmatrix unverändert. Bei PopMatrix natürlich nicht.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]