Hi,
ich hab jetz mal ein paar Einsteiger-Fragen:
1. meine gerenderte Szene wird nur in einem Würfel mit der Kantenlänge 1 angezeigt, sobald sie sich da rausbewegt verschwindet sie langsam. Ich hab schon bei glOrtho mit zNear und zFar rumgespielt, aber entweder wird gar nix angezeigt oder es bewirkt überhaupt nichts.
2. Was macht die Prozedur glOrtho eigentlich?
3. Die Anzeige wird immer an das Formular angepasst. D.h. wenn das Formular nicht quadratisch ist, ist die Anzeige verzerrt.
4. Wieso wird das ganze nicht perspektivisch verzerrt dargestellt? Wenn die Szene sich auf mich zubewegt/von mir entfernt wird sie nicht größer/kleiner.
5. Was bewirkt glMatrixMode und welche Parameter gibt es da? Muss ich das angeben? Egal was ich da mach, es sieht immer gleich aus...
6. Gibt es vielleicht eine Funktionsreferenz mit allen Funktionen und Parametern?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Alphamoose hat geschrieben:
1. meine gerenderte Szene wird nur in einem Würfel mit der Kantenlänge 1 angezeigt, sobald sie sich da rausbewegt verschwindet sie langsam. Ich hab schon bei glOrtho mit zNear und zFar rumgespielt, aber entweder wird gar nix angezeigt oder es bewirkt überhaupt nichts.
Dann hast du entweder falsche Parameter angegeben, oder du setzt deinen Ortho-Modus in der falschen Matrix (Modelmatrix statt Projektionsmatrix).
Alphamoose hat geschrieben:
2. Was macht die Prozedur glOrtho eigentlich?
glOrtho setzt einen Modus mit paralleler Projektion. Also quasi eine Ansicht ohne perspektivische Verzerrung. Sowas wird benutzt wenn man nur 2D rendern will und den Tiefenpuffer nur zum Sortieren von Objekten nutzen will.
Alphamoose hat geschrieben:
3. Die Anzeige wird immer an das Formular angepasst. D.h. wenn das Formular nicht quadratisch ist, ist die Anzeige verzerrt.
Das ist deine Sache. Wenn du das verhindern willst, musst du den Aspektratio entsprechend anpassen.
Alphamoose hat geschrieben:
4. Wieso wird das ganze nicht perspektivisch verzerrt dargestellt? Wenn die Szene sich auf mich zubewegt/von mir entfernt wird sie nicht größer/kleiner.
Wie gesagt setzt glOrtho eine parallele Projektion in der es keine perspektivische Verzerrung gibt. Dazu musst du deine Perspektive mittels gluPerspective setzen.
Alphamoose hat geschrieben:
5. Was bewirkt glMatrixMode und welche Parameter gibt es da? Muss ich das angeben? Egal was ich da mach, es sieht immer gleich aus...
Matrixmode (wie der Name vermuten lässt) wechselt zwischen den verschiedenen Matrizen. Die Projektionsmatrix (GL_PROJECTION) wechselt in die Matrix in der du deine Kamera einstellen solltest (via gluPerspective oder glOrth), in der Modelansichtsmatrix (GL_MODELVIEW) rendert und positioniert man die Objekte in seiner Welt und mittels der Texturenmatrix (GL_TEXTURE) kann man Texturkoordinaten nach Belieben verändern.
Alphamoose hat geschrieben:
6. Gibt es vielleicht eine Funktionsreferenz mit allen Funktionen und Parametern?
2. Muss ich da immer glLoadIdentity vorher aufrufen? Da gehen ja immer alle Transformationen verloren! Aber wenn ichs vorher nicht aufrufe scheint die Szene sofort aus dem Blickfeld zu "fliegen".
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Zu 1 :
Das liegt daran das du in LookAt nach "Hinten" guckts (negative Parameter). Dadurch wird deine X-Achse natürlich auf den ersten Blick gespiegelt.
Zu 2 :
Ja, normalerweise setzt man die Matrix am Anfang des Frames mit glLoadIdentity zurück. Denn die Transformationen, Rotationen bzw. Skalierungen hat man ja in seiner Objektinformation gespeichert. Also erst glLoadIdentity und dann deine Objekte anhand ihrer irgendwo gespeicherten Position verschieben.
Wenn du das glLoadIdentity nicht machts, dann werden deine Translationen, Rotationen bzw. Skalierungen im Endeffekt addiert. Bei 100fps bedeutet dies, du hast innerhalb einer Sekunde alles 100 mal gemacht. Kein Wunder das deine Szene so schnell verschwindet.
P.S. : Bitte les dir unbedingt das Redbook, sowie unsere Einstiegstutorials durch. Besonders im Redbook wird nämlich alles gesagt was ich dir als Antwort gegeben habe. Ohne die Grundkenntnisse aus diesem Dokument wirst du nicht sonderlich weit kommen.
Das liegt daran das du in LookAt nach "Hinten" guckts (negative Parameter). Dadurch wird deine X-Achse natürlich auf den ersten Blick gespiegelt.
Da muss ich dir jetzt widersprechen, die X-Achse ist nicht nur auf den ersten Blick gespiegelt, sie ist es tatsächlich, denn alle anderen Achsen zeigen in die richtige Richtung. Bei einer Betrachtung von "hinten" müsste die z-Achse ja auf den Betrachter zeigen, was sie aber nicht tut. Macht man die negativen Werte positiv, ist die z-Achse gespiegelt (zeigt auf den Betrachter), alle anderen zeigen in die richtige Richtung...
Zitat:
Wenn du das glLoadIdentity nicht machts, dann werden deine Translationen, Rotationen bzw. Skalierungen im Endeffekt addiert. Bei 100fps bedeutet dies, du hast innerhalb einer Sekunde alles 100 mal gemacht. Kein Wunder das deine Szene so schnell verschwindet.
Ich habe das Problem mit der wegfliegenden Szene aber erst seit ich die "Kamera" mit gluLookAt und gluPerspective eingesetzt hab. Vorher war das nicht der Fall und ich habe am restlichen Code nichts verändert. Transformationen habe ich sowieso nicht in jedem Frame sondern nur auf Mauseingabe.
mfg
Alphamoose
PS: ehrlichgesagt finde ich eure Tutorials teilweise etwas unverständlich. Eswerden immer einzelne Funktionen erklärt, meist ohne Codebeispiele, so dass man nicht weiß, wo gehört das hin, in welcher Reihenfolge muss ich das Aufrufen, etcetc
Zudem wird immer betont, es soll keine Parameterliste angegeben werden, was meiner Meinung für Einsteiger aber sehr hilfreich wäre um zu sehen was die Funktion bewirkt, was man damit machen kann usw.
Aber das gehört wohl eher ins Feedbackforum...
PS: ehrlichgesagt finde ich eure Tutorials teilweise etwas unverständlich. Eswerden immer einzelne Funktionen erklärt, meist ohne Codebeispiele, so dass man nicht weiß, wo gehört das hin, in welcher Reihenfolge muss ich das Aufrufen, etcetc Zudem wird immer betont, es soll keine Parameterliste angegeben werden, was meiner Meinung für Einsteiger aber sehr hilfreich wäre um zu sehen was die Funktion bewirkt, was man damit machen kann usw. Aber das gehört wohl eher ins Feedbackforum...
das ist zumindest in einem Teil der Tutorials wirklich so aber deshalb gibt es ja auch immer den kompletten Quelltext zu den Tutorials mitgeliefert ->siehe Files
Öhm, das hab ich wohl übersehen, sorry Aber vielen Dank dass ihr euch Zeit für einen hoffnungslosen Noob wie mich genommen habt Bin schon viel schlauer als vorher und mein Programm wird langsam ansehnlich...
Registriert: Sa Jan 04, 2003 21:23 Beiträge: 674 Wohnort: Köln
sag sowas nicht, "hoffnungslos ist (fast) niemand schließlich waren wir alle mal "noobs" und jeder hier musste das erstmal lernen (oder ist dabei, wie z.B. ich )
der eine mit mehr der andere mit weniger eigeninitiative aber darauf kommts ja nicht so an...
jedenfalls ist es immer gut, wenn man Fortschritt sieht, in seinen Programmen, das motiviert
gluLookAt und gluPerspective setzen die aktive Matrix nicht zurück - wenn etwa vor dem Aufruf von gluLookAt bereits eine Transformation geladen wurde (und sei es mit gluLookAt von letzten Frame), wird die erstellte Matrix beinhart drübermultipliziert - könnte ja auch beabsichtigt sein, eine Kamera nicht vom Beobachterstandpunkt aufzusetzen...
Mitglieder in diesem Forum: 0 Mitglieder und 7 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.