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

Aktuelle Zeit: Do Jun 21, 2018 22:37

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rotations Achsen
BeitragVerfasst: Di Mai 29, 2018 19:19 
Offline
DGL Member

Registriert: So Apr 28, 2013 12:28
Beiträge: 3
Programmiersprache: Object Pascal
Hallo zusammen,

habe Folgende Verständnis-frage zum Thema Rotation.

Wenn ich mit glRotatef ein Objekt um seine (X,Y,Z) Achsen Rotieren lasse bekomme ich - abhängig davon in welcher Reihenfolge ich die Rotationen ausführe unterschiedliche Ergebnisse.
Das ist auch ok, allerdings würde ich in meine Software ebenfalls eine Möglichkeit einbauen mein Objekt um seine "Lokale" Achse zu Rotieren.

Sprich rotiere ich es auf seiner X-Achse möchte ich dann dass sich sich dadurch die die Y und Z Achsen nicht verändern.


Danke schon mal für euren Input, hoffe das ich mich korrekt ausdrücke.

Grüsse,
moritz


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotations Achsen
BeitragVerfasst: Di Mai 29, 2018 19:56 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1147
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich verstehe dich nicht ganze.

Willst du es so ähnlich wie ein Planetensystem machen ?
Da dreht sich die Erde um eine lokale Achse, und gleichzeitig dreht sie sich um die Sonne.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotations Achsen
BeitragVerfasst: Di Mai 29, 2018 20:24 
Offline
DGL Member

Registriert: So Apr 28, 2013 12:28
Beiträge: 3
Programmiersprache: Object Pascal
Ich habe eine "fixe" Camera und möchte ein Objekt um seine eigene Achse rotieren.
Wenn also die X-Achse um 45 Grad gedreht wird und dann die Z-Achse Gedreht wird sollte diese Drehung um die (jetzt) 45 grad gedrehte Z-Achse erfolgen.

Wichtig zu wissen ist dass ich jedes Frame vom "nullpunkt" Rendere - ich kann keine Rotation "over time" machen. Sprich für jedes Frame habe ich eine X, Y und Z Rotation die als Rotation für das entsprechende Objekt Angewendet werden sollte.

Macht das sinn für dich?

LG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotations Achsen
BeitragVerfasst: Di Mai 29, 2018 20:30 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1147
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Sind dir diese Befehle bekannt ?

Code:
  1.   glMatrixMode(GL_PROJECTION);
  2.   glLoadIdentity; // Matrix zurücksetzten ( Einheitsmatrix )
  3.   // Hier kann die ProjectionsMatrix manipuliert werden.
  4.  
  5.   // Modelmatrix aktivieren
  6.   glMatrixMode(GL_MODELVIEW);
  7.   glLoadIdentity;
  8.   // Hier kann die ModellMatrix manipuliert werden.
  9.  



Zitat:
Wichtig zu wissen ist dass ich jedes Frame vom "nullpunkt" Rendere -

Was meinst du mit Frame, meinst du damit verschiedene Render-Puffer (Texturen) ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotations Achsen
BeitragVerfasst: Di Mai 29, 2018 21:05 
Offline
DGL Member

Registriert: So Apr 28, 2013 12:28
Beiträge: 3
Programmiersprache: Object Pascal
Danke für den Code, ja diese Befehle sind mir bekannt.

Mit Frame meine ich das ich vor jedem Renderdurchlauf dem Buffer lösche.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotations Achsen
BeitragVerfasst: Mi Mai 30, 2018 13:17 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1147
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Muss ich mir dies etwa so vorstellen ?

Man hat ein Rad, welches um die eigene Achse dreht, egal wo die Camera steht ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotations Achsen
BeitragVerfasst: Mi Mai 30, 2018 13:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 551
Programmiersprache: C++
Mit glRotate drehst du immer um eine Achse, die durch den Nullpunkt verläuft. Wenn du um eine andere Achse rotieren willst, muss du deine Geometrie zunächst so verschieben, dass die Achse durch den Koordinatenursprung geht. Dann kannst du normal mit glRotate rotieren und mit glTranslate zurückschieben.

Beispiel: Du willst ein Objekt um eine Gerade drehen, die durch den Punkt (3, 0, 0) läuft und in Richtung (0, 1, 0) zeigt.
Code:
  1. // Code ist nicht getestet (Waren Kommentare in Pascal wirklich mit //?)
  2. glTranslatef(-3.0, 0.0, 0.0);      // Was vorher an (3, 0, 0) war, wird jetzt in den Ursprung geschoben
  3. glRotatef(winkel, 0.0, 1.0, 0.0);  // Rotieren um Achse durch den Ursprung
  4. glTranslatef(3.0, 0.0, 0.0);       // Und wieder zurückverschieben

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotations Achsen
BeitragVerfasst: Mi Mai 30, 2018 14:35 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1147
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ja das // wurde mit Delphi eingeführt. Turbo Pascal kannte es noch nicht.

_________________
OpenGL


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.016s | 17 Queries | GZIP : On ]