Registriert: Di Okt 23, 2007 18:03 Beiträge: 49 Wohnort: Dortmund-Scharnhorst
Hallo zusammen,
ich hab ein kleines Rotationsproblem mit meinem Projekt. Ich möchte gerne nur ein Koordinatensystem zeichnen und dieses um X,Y und Z Achse rotieren lassen können.
Soweit klingts ja ganz einfach, klappt auch einigermaßen nur will sich mein Koordinatensystem nicht "richtig" rotieren lassen.
Hier mal mein Code
Code:
//Das alles steht in meiner render prozedur
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glTranslatef(0,0,-Zoom);//Zoom gibt an wie nah ich dem ursprung sein möchte
//Hier soll die Drehung um die Achsen geschehen
glRotatef(YDrehung,0,1,0);
glRotatef(XDrehung,1,0,0);
glRotatef(ZDrehung,0,0,1);
//Zeichnen der Achsen
glBegin(GL_LINES);
//X-Achse
glcolor3f(0,1,0);
glVertex3f(-1000,0,0);
glVertex3f(1000,0,0);
//Y-Achse
glcolor3f(0,0,1);
glVertex3f(0,-1000,0);
glVertex3f(0,1000,0);
//Z-Achse
glcolor3f(1,0,0);
glVertex3f(0,0,-1000);
glVertex3f(0,0,1000);
glEnd;
Das Verhalten ist nun dies: Egal wie mein System gerade im Raum liegt die Drehung um die Z-Achse klappt immer perfekt. Ändere ich die Reihenfloge der Drehungen so dass zB zuletzt um die X-Achse gedreht wird, so klappt diese Drehung immer perfekt (unter perfekt verstehe ich hier, dass wenn man den Drehwinkel ändert, die Achse für den Betrachter stillsteht und nur die anderen beiden sich bewegen).
Aus dem was ich bisher weis, denke ich mal dass der Aufruf von gltranslatef nicht korrekt ist. Er müsste wohl hinter die Rotation kommen, da sich ja mein Ursprung sonst verschiebt. Allerdings lande ich dann irgendwo im nichts und die Rotationen funktionieren noch immer nicht korrekt.
Bin dankbar für jedwede Hilfe
Gruß
Basti
_________________ Those who fear the dark never saw what light can do...
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
hilft dir das weiter? Das dreht das Objekt um die OpenGL Achsen. X-Achse: Q, W Y-Achse: A, S Z-Achse: Y, X
€: Das die Rotation nich funzt liegt daran, das die die Matrix ja vorher schon mit einer anderen Drehung manipuliert hast. Deshalb musst du die die Achsen selbst zurechtdrehen und dann nur noch so übergeben (siehe Code).
MfG Bergmann.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Di Okt 23, 2007 18:03 Beiträge: 49 Wohnort: Dortmund-Scharnhorst
Das sieht vom Ergebnis ziemlich genau nach dem aus was ich habe, allerdings möchte ich gerne das die Achse um die man dreht (angenommen man dreht immer nur um eine Achse gleichzeitig) für den Betrachter stehenbleibt.
_________________ Those who fear the dark never saw what light can do...
Registriert: Do Mär 05, 2009 20:17 Beiträge: 284 Wohnort: Kaiserslautern
Jann1k hat geschrieben:
Das sieht vom Ergebnis ziemlich genau nach dem aus was ich habe, allerdings möchte ich gerne das die Achse um die man dreht (angenommen man dreht immer nur um eine Achse gleichzeitig) für den Betrachter stehenbleibt.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
ich glaub nich das es das gleiche is. Ich hatte das Problem mit Wölfchen auch erst. Vlt wird es mit dem neuen Code etwas deutlicher. Die Achse um die gedreht wird bleibt stehen. Die Striche sind jetzt meine Achsen, ich hab aber noch keine Ahnung wie ich die OpenGL-Achsen jetzt so ausrichte, das du meine Achsen als Achsen des Koordinatensystems nehmen kannst. Sprich die Achsen werden richtig gezeichnet, aber die Objekte sind noch an der falschen Stelle...
MfG Bergmann.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Di Okt 23, 2007 18:03 Beiträge: 49 Wohnort: Dortmund-Scharnhorst
camera2 ist genau das was ich erreichen wollte, egal wie das System liegt, eine Achse bleibt immer stehen, beim Würfel ist es mir vorgekommen, dass sich alle drei Achsen bewegt haben, dankeschön ich mach mich mal ans Code verstehn ^^
_________________ Those who fear the dark never saw what light can do...
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
OK, wenn du Fragen hast frag. Und wenn du ne Möglichkeit gefunden hast, die ModelMatrix so zu manipulieren, das die VertexKoordinaten in deinem KoordinatenSystem liegen sag bescheid, das hab ich nämlich auch noch net hin bekommen un das interessiert mich...
€: Ich habs grad nochma durchprobiert, und ich werd nich schlau drauß. Wenn ich die Achsen die ich selbst berechnet hab zeichne, dann haut alles hin, aber wenn ich mich dann mit gluLookAt auf die z-Achse setz, müsste ich ja durch zeichnen einer Linie in x-Richtung (1,0,0) die gleiche Linie bekommen wie wenn ich vor dem gluLookAt die Achse zeichne, oder nicht?!
Is aber nich so. Die beiden KoordinatenSysteme unterscheiden sich voneinander! Hat jmd ne Idee, der n bisl mehr Erfahrung hat als wir?! ^^
Vlt sollten wir auch erstma klarstellen, wie Jann1k das haben will. Willst du dich um die Achsen deine KoordinatenSystems drehen (das jetzt das Problem darstellt), oder reicht es dir dein kompletes KoordinatenSystem um das OpenGL-KoordinatenSystem zu drehen (was ja jetzt schon geht)?! Bring ma Licht ins dunkel^^
MfG Bergmann
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Di Okt 23, 2007 18:03 Beiträge: 49 Wohnort: Dortmund-Scharnhorst
Ich weiß nicht wo der unterschied zwischen "meinem" KS und dem OGL KS besteht, ich möchte allerdings ein Koordinatensystem haben um dessen Achsen ich mich drehen kann(bzw das KS)
_________________ Those who fear the dark never saw what light can do...
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
den unterschied siehst du in dem Prog oben. Rechts wird immer um die Achsen deines KS gedreht, egal wie es im raum liegt. links wird immer um das OpenGL KS gedreht. Kann könnte dass Problem jetzt lösen, indem man beim Drehen alles Punkte die in deinem KS liegen mit dreht und dann einfach zeichnet, aber das is denk ich ma sehr performanceraubend. Wie ich das OpenGL KS so manipulier, das es identisch mit deinem KS is weiß ich immer noch nich. Hab schon haufen Sachen ausprobiert, aber so richtig wills net -.-
Mitglieder in diesem Forum: 0 Mitglieder und 0 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.