"echtes" 3D-Spiel
-
Folgende Idee: Nachdem es durch genügend APIs recht einfach ist, eine 3D-Welt auf einem 2D-Bildschirm darzustellen, hab ich mich gefragt, ob es da auch was anderes gibt, und zwar:
Es gibt ja schon in den Kinos diese 3D-Effekte (mit den Brillen), dass man wirklich meint, das geschehen sei 3D. Das für ein Game umzusetzen müsst dann auch möglich sein.
Eigentlich müssten sich die APIs doch darauf umbauen lassen (falls man den source hätt...) - die Spielerei mit den Farben dürft nicht allzuschwer sein, und das mit dem auseinanderziehen, je näher das objekt ist, könnt sich sehr gut mit dem Z-Buffer lösen lassn.
Das einzige Problem, das ich gefunden hab is, dass das ganze ein bisschen rechneraufwendiger is...
Gibts da schon sowas?
-
Falls du ein x-beliebiges Game in (echtem) 3D bewundern möchtest, kann ich dir das hier empfehlen
http://www.rivastation.com/review/revelator/revelator_2.htm
-
-
solche effekte basieren darauf, dass die szene aus 2 perspektiven (2 augen) gerendert wird. diese 2 bilder werden dann eingefärbt und zusammengemischt (3d kino) oder mit shutterbrille auf den monitor geklatscht (immer abwechselnd).
-
Deshalb sollte man schon einen guten Röhrenmonitor haben, der auch mit Vertikalfrequenzen jenseits der 100Hz klarkommt sonst gibts nämlich nen schönes Flimmern.
cya
liquid
-
OpenRM (scenegraph) kann das auch.. Da brauchst nur noch so ne billige Farbfiler-Brille..
-
und im scherfgen-buch wird auch beschrieben wie man das macht. man braucht dann nur noch eine brille aus pappe wo eine seite rot und die ander grün ist(oder anders).
mfg
-
mit den farbbrillen geht das dann auch auf meinem schönen, flimmerfreien, augenfreundlichen, strahlungslosen TFT Monitor
-
Hab das eben mal probiert, und einfach die Szene zweimal gerendert, jedesmal mit nem angepassten Shader, der im Vertex Shader (ist ja Cam-Space) die xPosition um die (zPosition - 0.2) * 0.1 (die Zahlen durch probieren rausgefunden) erhöht bzw. vermindert und im Fragment Shader den Rot- bzw. den Blau- und Grünanteil auf 0 setzt.
Sah schon schön 3D aus (mit Rot-Cyan-Brille). Allerdings zeichne ich die Bilder immer abwechselnd und muss ich V-Sync aktivieren, weil sonst nicht sichergestellt ist dass ein Bild auch wirklich angezeigt wird wenns gerendert wurde und selbst dann flackerts logischerweise noch.
Eigentlich sollte man ja die Bilder mit multiplizieren blenden, aber dazu bin ich irgendwie grade zu blöd, muss auch zugeben, dass OpenGL da etwas eigenwillig ist.
(Habs mit glBlendFunc(GL_DST_COLOR, GL_ZERO) immer vor dem 2. Bild versucht, aber nicht das gewünschte Ergebnis bekommen)
Also: Eigentlich garnicht so schwer.edit: Text überarbeitet
-
beim rendern nicht vergessen, eine leicht verschobene kamera zu benutzen, dann ist der effekt noch schöner.
-
spl@t schrieb:
jedesmal mit nem angepassten Shader, der im Vertex Shader (ist ja Cam-Space) die xPosition um die (zPosition - 0.2) * 0.1 (die Zahlen durch probieren rausgefunden) erhöht bzw. vermindert
eine leicht verschobene kamera zu benutzen
Zwei Methoden, das Gleiche zu tun.
Bye, TGGC (Der Held bei Dir!)