ich wollte in Tutorial 3 das mit der Sonne, der Erde und dem Kometen namens Mond testen, eigentlich klingt auch alles recht logisch nur leider leider mache ich scheinbar immer einen Fehler.
Wenn ich das Projekt kompiliere steht in der Mitte ein Dreieck (so solls auch) und es gibt zwei weitere Dreiecke die jedoch leider nicht um die Sonne kreisen sondern eher um sie pendeln, der "Mond" pendelt auch nur um die Erde (bzw. unter der Erde) hin und her und dreht sich dabei jedesmal einmal. (vermutlich drehen sich beide beim Pendeln um die Sonne auch)
Mein Quelltext sieht so aus:
Code:
procedure TForm1.Render;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Ohne deinen Quelltext jetzt eingehener untersucht zu haben, ist mir gleich aufgefallen, dass deine Rotierungen ja gar nicht funktionieren können. Du schreibst immer
Code:
glRotatef(x,0,0,0);
Da fehlt aber die Angabe, um welche Achse rotiert werden soll. Das erste Argument gibt den Winkel an (in deinem Fall also x), und die nächsten drei die Achsen, um die um diesen Winkel gedreht wird. glRotatef(90,1,0,0); dreht also zum Beispiel um 90° um die x-Achse.
Vielleicht kommst du jetzt selber auf die richtige Lösung - ich wollte nur ein bisschen anstupsen
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Ja das hab ich sogar in einem tut gelesen, nur irgendwie hab ich ebend gedacht das man den Punkt angibt um den rotiert wird..
Danke für den Tipp, ich geh jetzt erstmal ins Delphi und schäm mich ne Runde.
EDIT:
Nun macht es das was ich von ihm wollte, das einzige was ich noch komisch finde ist das es auf der rechtn Seite länger zu sehen ist als auf der linken. Also wenn sich ein 2 Dimensionaler Körper dreht ist er, wenn er sich auf 12 oder 6 hr befindet unsichtbar. Das leuchtet mir ein. Nur bleibt er auf der linken Seite noch ungefähr 1 Stunde länger und wird auch eine früher unsichtbar... wodran liegt das? Ist das nur ein Problem das bei 2Dimensionalen Objekten auftritt oder noch ein Fehler von mir?
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Setzt du dein x irgendwann wieder zurück, oder dreht das bis zur Wertebereichsgrenze?
Wieso das unsemetrisch drehen soll weiß ich jetzt nicht. Im Zweifelsfall einfach mal im Debuger angucken, ob die Werte überall sinnvoll sind...
Nochwas:
Code:
glPushMatrix;
glBegin(GL_TRIANGLES);
glColor3f(0.5,0,0); glVertex3f(-1,-1,0);
glColor3f(0.5,0,0); glVertex3f(1,-1,0);
glColor3f(0.3,0.3,0.3); glVertex3f(0,1,0);
glEnd;
glpopmatrix;
Push und Pop sind hier überflüssig, da keine Änderungen an der Matrix gemacht werden. (Nur Translate, Rotate und Scale ändern die Matrix. (Jedenfalls sind nur die Befehle für dich von interesse ) )
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Jup, das hab ich auch bemerkt als ich die Eigenrotation hinzugefügt habe.
x wird nicht zurückgesetzt, sollte ich vielleicht mal einbauen.
Ah Ok es scheint dadran zu liegen das es ein 2 Dimensionales Objekt ist, ich habe jetzt hinter das Dreieck noch ein weiteres mit glscalef(-1,1,-1) gesetzt und nun scheint es zu gehen
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Jetzt weiß ich glaub ich erst was du meinst.
Und zwar hast du vermutlich Backfaceculling aktiviert. Die Rückseiten werden dann nicht angezeigt.
Mach mal deine letzte Änderung Rückgängig, und versuch mal folgendes:
Suche in deinem Quelltext nach glEnable(GL_CULL_FACE); und kommentier das aus. Du solltest dann auch mit deinem 2D Dreieck das gewünschte Ergebnis sehen.
Infos zu Cull Face findest du unter Backfaceculling im Wiki (bei Hintergrundwissen).
_________________ Blog: kevin-fleischer.de und fbaingermany.com
:idea: Jetzt weiß ich glaub ich erst was du meinst.
Und zwar hast du vermutlich Backfaceculling aktiviert. Die Rückseiten werden dann nicht angezeigt.
Mach mal deine letzte Änderung Rückgängig, und versuch mal folgendes:
Suche in deinem Quelltext nach glEnable(GL_CULL_FACE); und kommentier das aus. Du solltest dann auch mit deinem 2D Dreieck das gewünschte Ergebnis sehen.
Infos zu Cull Face findest du unter Backfaceculling im Wiki (bei Hintergrundwissen).
Hey, stimmt, dadran lag es. Warum das im Quelltext war weiß ich allerdings auch icht, denke es lag dadran das ich alles aus dem Quickstart_tutorial übernommen habe.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Man sollte diesen Befehl vielleicht aus dem Tutorial entfernen oder augenfälliger auf seine Wirkung hinweisen. Es soll ja eine schnelle Einführung sein, und die meißten Anfänger werden sich deswegen die verlinkten Seiten dazu nicht ansehen und davon ausgehen, dass dieser Befehl keine so großen Auswirkungen hat. Aber ich glaube, es kann da schnell Frust entstehen, wenn man die Ursache nicht so "schnell" findet wie in diesem Thread.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Mitglieder in diesem Forum: 0 Mitglieder und 10 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.