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

Aktuelle Zeit: Fr Jul 18, 2025 08:16

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Mai 10, 2009 23:14 
Offline
DGL Member

Registriert: Sa Jan 03, 2009 18:53
Beiträge: 22
Hallo!

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?

Gruß stoned4u


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Link
BeitragVerfasst: Mo Mai 11, 2009 08:38 
Offline
DGL Member

Registriert: Sa Jan 03, 2009 18:53
Beiträge: 22
hier ein Link zu einem Video:

http://www.youtube.com/watch?v=cpUeMZM5U9k

in der 20sten Sekunde wird die Sicht zum ersten mal gewechselt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 11, 2009 14:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 04, 2006 15:42
Beiträge: 78
Wohnort: Bonn
Programmiersprache: Python, C++, Delphi
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 11, 2009 15:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
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.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 11, 2009 16:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Ich glaube, das ist die ganze Zeit perspektivisch, man sieht es nur nicht, weil alles die gleiche Z-Koordinate hat. :roll:

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 11, 2009 16:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
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.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 11, 2009 23:45 
Offline
DGL Member
Benutzeravatar

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.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 12, 2009 06:17 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Coolcat hat geschrieben:
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.

Wie wärs dann mit 0.01 Grad? Irgendwas, was fast perspektivisch ist, so dass man es nicht merkt. :roll:

_________________
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Danke!
BeitragVerfasst: Di Mai 12, 2009 12:39 
Offline
DGL Member

Registriert: Sa Jan 03, 2009 18:53
Beiträge: 22
Danke für die Antworten, die Idee mit der Z Achse halte ich bislang auch für am wahrscheinlichsten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 12, 2009 23:49 
Offline
DGL Member
Benutzeravatar

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.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 13, 2009 00:02 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
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....

_________________
Lumina plattform unabhängige GLSL IDE


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]