Ich mache es kurz:
Bei dem Spiel "Super Paper Mario for Wii", ist es möglich von einer orthogonalen Sicht flüssig in eine perspektivische Sicht zu wechseln, wie ist das möglich? Lässt sich mit Hilfe von glFrustum eine orthogonale Sicht erzeugen?
Also prinzipiell kann man nicht gleichzeitig perspektivische Verzerrung haben, und nicht Was meiner meinung nach beim Wechsel passiert ist: Es wird die Szene mit Ortho gezeichnet (off screen),
dann wird die perspektivische Szene gezeichnet ... und als Hintergrund für einen Effekt benutzt, der
durch "wegrotieren" der Ortho-Szene entsteht.
Ich hab sowas noch nicht versucht, sollte aber nicht so schwer sein. Du nimmst dir einfach die beiden Matrizen her, also die, die von glFrustum kommt und die die von glOrtho kommt. Einfach beide mit OpenGL auslesen.
Dann machst du einfach eine Linearkombination der beiden Matrizen. Das geht genau wie bei Vektoren Komponentenweise, also einfach ne Schleife über alle Elemente.
M = (1-t) * P + t * O
Für t = 0 erhälst du die perspektivische Matrix P, für t = 1 die orthogonale Matrix O. Und für 0 < t < 1 bekommst du halt irgendwas dazwischen.
Müsste eigentlich klappen, aber keine Garantie.
Edit: Nachdem ich jetzt das Video gesehen habe:
Diese Rotation kommt noch zusätzlich dazu, das hat aber nichts mit dem Wechsel zwischen Perspektive und Orthogonal zu tun.
Ich glaube, das ist die ganze Zeit perspektivisch, man sieht es nur nicht, weil alles die gleiche Z-Koordinate hat.
Edit: Was passiert denn eigentlich bei gluPerspecite mit einem Winkel von 0?
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Ich glaube, das ist die ganze Zeit perspektivisch, man sieht es nur nicht, weil alles die gleiche Z-Koordinate hat.
Jup, das ist pures 2D. Das umschalten könnte man viel cooler gestalten
Zitat:
Edit: Was passiert denn eigentlich bei gluPerspecite mit einem Winkel von 0?
Der haut dir das um die Ohren. Ein Winkel von 0 Grad läuft darauf hinaus das die Funktion versucht den Tangens von 90 Grad zu berechnen, welcher bekanntlich nicht definiert ist.
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
Zuerst habe ich auch daran gedacht eine zeitabhängige Interpolation beider Matrizen zu machen, ich kann mir aber nicht vorstellen, dass dadurch tatsächlich dieser "morpheindruck" entsteht. Außerdem muss man die Koordinatensysteme stark aneinander anpassen. sonst schrumpft eine 3d-szene, die sich im bereich [[-64,-64,-64][64,64,64]] befindet auf ein winziges Quad aufm Bildschirm zusammen, von dem man höchstahrscheinlich nur ein Virtel sieht, weil der Rest in den negativen Quadranten landet. Man muss also definitiv auch Scale und Translate befehle mit berücksichtigen, das Rotieren ist dann eine Schönheits-OP.
Edit: Was passiert denn eigentlich bei gluPerspecite mit einem Winkel von 0?
Der haut dir das um die Ohren. Ein Winkel von 0 Grad läuft darauf hinaus das die Funktion versucht den Tangens von 90 Grad zu berechnen, welcher bekanntlich nicht definiert ist.
Wie wärs dann mit 0.01 Grad? Irgendwas, was fast perspektivisch ist, so dass man es nicht merkt.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
Das mit der Z-koordinate halte ich sogar für unwahrscheinlicher als die Idee mit der interpolation, weil mein bei dem schwenk in dem Video eindeutig sieht, dass die Geometrie nicht die selbe Z-Koordinate hat. Wenn man abrupt von einer Perspektive in die andere wechseln würde, dann könnte man das anhand der zkoordinate machen, weil es dann nicht sichtbar ist. Durch den schwenk sieht man aber, dass definitiv die perspektive flüssig ineinander übergeht und die Z-koordinate durchgehend fixe Werte hat. Natürlich könnte man nach dem Schwenk alle Geometrie die auf der Z-Achse verschoben liegt vernachlässigen, da sie verdeckt wird, aber vor dem Schwenk in die 3d-Optik und nach dem Schwenk in die 2d-Optik muss man das dann ändern.
Der lineare Blend sollte die beste Lösung sein. Allerdings muss darauf geachtet werden das die Nearplanes beider matrizen gleich ist. Auch der Abstand der Farplane sollte möglichst gleich sein.
Mit glFrustum könnte man eine parallelprojektion quasi nur erreichen, indem Man die kammera unendlich weit weg Plaziert und entsprechend weit reinzoomt. Aus Präzisionsgründen kommt diese Lösung natürlich nicht in Frage....
Mitglieder in diesem Forum: 0 Mitglieder und 13 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.