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

Aktuelle Zeit: Mi Jul 23, 2025 20:51

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 10, 2004 21:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Nein, die Textur kann man leider nicht ändern: die Farbinformationen werden alle benötigt, um den räumlichen Eindruck zu generieren (Beleuchtung gibt's also schon gar keine). Die Szene muss die selbe Textur haben, mit "Holz", "Stein" oder "Gras" kann man bestenfalls die allgemeine "Stimmung" ändern.
Übrigens kann man sich deswegen umsehen, weil es "echtes" 3D ist, was man da sieht. Du kannst auch einen bestimmten Punkt im Raum fixieren - so einen Depth of Field Effekt kann man mit normalen Mitteln gar nicht simulieren (etwas unscharf zu zeichnen ist ja nur eine grobe Annäherung)

Hier die Screenshots:


Dateianhänge:
Dateikommentar: Die dargestellte Szene. Da hier alles flat shaded ist, schaut's natürlich grausig aus, und wird der Stereodarstellung nicht gerecht. Immerhin sieht man, was man "sehen sollte".
nostereo.jpg
nostereo.jpg [ 25.21 KiB | 8780-mal betrachtet ]
Dateikommentar: Bild mit 800x600 Auflösung. Auf diesem Bild kann ich den räumlichen Effekt auch im normalen Windows Desktop wahrnehmen.
stereo.jpg
stereo.jpg [ 243.62 KiB | 8780-mal betrachtet ]

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 11, 2004 12:11 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Da fällt mir grad ein: das wäre doch eine schuftige Idee für ein Adventure, wenn man eines Rätsels Lösung in so einem Stereogramm an der Wand verstecken würde :D .

Bei Prince of Persia "the Sands of Time" (also Grafik und Gameplay sind wirklich gigantisch gut, auch wenn's ursprünglich für die X-Box entwickelt wurde) gab's auch ein Rätsel, bei dem Lichtstrahlen(!) mittels Spiegeln auf einen bestimmten Punkt gelenkt werden mussten - und als Hinweis wo diese platziert werden sollten, musste man bemerken, dass es auf der Bodentextur völlig unscheinbare schwarze Flecken gab.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 11, 2004 22:44 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Anfangs dacht ich du willst mich mit der Textur verarschen... Dann hab ich den Monitor etwas genauer fixiert. Da bemerkte ich, dass es irgendwie Zonen gibt die weiter oben sind als andere - was das aber war wusste ich da noch nicht. Und plötzlich, ich konnte wirklich merken wie das Bild immer deutlicher wurde, sah ich die Scene. Wow! Phantastisch!

@SOS: Ich dachte auch erst, das es net funktioniert. Mach das was immer gesagt wird (nah ran und dan rückwerts ohne Augen zu verstelle). Wenn du dann bemerkst, dass du Teile(!) scharf sehen kannst obwohl du eigendlich schiegelst dann bleib in der Position und stier einfach weiter aufs Bild. Mit einem Mal (1-2 Min. später) taucht die Scene auf.

EDIT: Noch was zum Effekt: Wenn man erst mal das Bild sieht sollte man sich einfach mal zurücklehen. Da passiert was verblüffendes. Meiner Meinung nach wird die Tiefe des Raumes um so größer, jeh weiter man vom Monitor weg ist.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 12, 2004 01:15 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Ich hoffe mal, dass das Spiel dann bei dir auch funktioniert (das Bild hier ist ja nur der Startbildschirm :wink: ).
@Tiefenwirkung:
das hast du genau beobachtet: es ist tatsächlich so, dass Stereogramme tiefer wirken, wenn man sie von weiter weg betrachtet, und flacher, wenn man dicht davor ist.
Der Grund dafür ist, dass der Winkel der Augen sich mit der Entfernung zum Bild verändert, um zwei zusammengehörige Pixel zu betrachten, was das Gehirn als unterschiedliche "Tiefe" des entsprechenden Bildpunktes interpretiert.
Die Arbeit eine 3D-Szene zusammenzusetzen macht ja eigentlich gar nicht der Algorithmus (der genaugenommen gar nicht so wahnsinnig aufwändig ist - je nach "Tiefe" des Bildpunktes, müssen zwei gleichfarbige Pixel unterschiedlich weit horizontal versetzt werden), sondern das Gehirn, das aus dem Winkel der Augen zueinander Tiefeninformationen zusammensetzt...

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 16:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 06, 2002 20:27
Beiträge: 479
Wohnort: Bremen
Mit dem nah ran und dann langsam weg klappt es bei mir genauso wenig wie schielen. Aber wenn ich versuche durch den Monitor und die Wand dahinter in den Nachbarraum zu gucken. (Den Fokuspunkt der Augen also irgendwo weit hinter den Monitor lege, dann gibts den Tiefeneffekt. (Und der ist wahrlich beeindruckend!) Vielleicht klappt das bei euch so ja auch besser!

Wie funzt das eigentlich technisch? Du hast die Tiefeninformationen im Tiefenpuffer und diese regelmäßige Strkutur aber wie bringst du das jetzt zusammen?

-lith

_________________
Selber Denken macht klug!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 17:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Ich poste mal den ursprünglichen Algorithmus, den ich zuallererst implementierte, der mit Zufallszahlen arbeitet, damit die Texturelookups, die einigen Code brauchen, das Prinzip nicht durcheinanderbringen.
Stört euch nicht an den komischen Befehlen, die kommen noch aus meiner 32Bit Bibliothek (32 Bit Befehle - aber dank Borland Pascal "nur" im 16 Bit DPMI protected Mode...):

Code:
  1. Procedure SIRD_Rand(x1,y1,x2,y2 : Integer);
  2. Var lookL   : Array[0..maxwidth-1] of Integer;
  3.     color   : Array[0..maxwidth-1] of Byte;
  4.     obsDist : Integer;
  5.     eyeSep  : Integer;
  6.     featureZ: Integer;
  7.     sep     : Integer;
  8.     x,y     : Integer;
  9.     left,right : Integer;
  10.     rest    : LongInt;
  11. Begin
  12.   obsDist := xdpi*12;
  13.   eyeSep := Trunc(xdpi*2.5);
  14.  
  15. >> alle Scanlines durchgehen
  16.   for y:=y1 to y2 do Begin
  17.  
  18. >> Pixelindizes für beide Augen vorinitialisieren
  19.     for x:=x1 to x2 do
  20.       lookL[x] := x;
  21.  
  22. >> je nach Z-Wert Pixelposition für ein (in diesm Fall das linke) Auge verschieben (sep ist die berechnete Verschiebebreite)
  23.  
  24.     for x:=x1 to x2 do Begin
  25.       featureZ := pWordArray(_SCREEN_ZBUFFER[y])^[x];
  26.       sep := LongDiv(LongMult(eyeSep, featureZ), featureZ+obsDist, rest);
  27.       left := x - sep shr 1;
  28.       right := left + sep;
  29.  
  30. >> pixel clippen, wenn in Fenster neue Koordinate übernehmen
  31.       if (left>=x1) and (right<=x2) then
  32.         lookL[right] := left;
  33.     End;
  34.  
  35. >> wenn ein x-Wert ein zu verschiebendes Pixel beinhält (d.h. der Inhalt von lookL ist ungleich dem vorinitialisierten Wert), wird das entsprechende Pixel verschoben, ansonsten wird ein zufälliger Farbwert gewählt (8 Bit)  
  36.  
  37.     for x:=x1 to x2 do Begin
  38.       if lookL[x]=x then
  39. >> anstatt einer Zufallszahl kann auch ein Pixel aus einem Bitmap genommen werden, allerdings schaut das komisch aus, wenn nicht (siehe unten)
  40.         color[x] := Random(256) { unconstrained }
  41.       else
  42.         color[x] := color[lookL[x]]; { constrained }
  43.     End;
  44.  
  45. >> Farbwerte auf Bildschirm (war bei mir ein memory mapped offscreen buffer, der aber z.B. im Mode 13 direkt im VRam liegen konnte, daher schreibe ich nur größere Mengen an Daten auf einmal rein (theoretisch hätte ich das Color Array auch sparen können
  46.  
  47.     MoveD(color[x1], pByteArray(_SCREEN_BUFFER[y])^[x1], x2-x1);
  48.  
  49.   End; { for y }
  50. End;
  51.  


An sich gar nicht so wild, die Texturversion ist jedoch um einiges komplexer, da dann die Pixelverschiebungen von der Mitte aus gehen sollten (und nicht vom linken Rand, was nicht besonders ästhetisch ist - bei zufälligen Farben ist es aber wurscht), sowie die Texturelookups auch einigen Code brauchen.

Leider weiß ich nicht mehr, wo ich den Algorithmus herhabe: ich kann mich noch dumpf erinnern, das Prinzip von Stereogrammen auf einer Internetseite gefunden, (bei einem Kollegen - damals hatte ich sowas noch gar nicht) und dann in Pascal und meiner FixPoly (weil nur Festkommaarithmetik) Bibliothek implementiert zu haben (die immer noch in Frieden irgendwo auf meiner Festplatte ruht)

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 18:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Selbst bei stehenden Bildern schaffe ich es nicht das Teil räumlich zu sehen.
Wie soll ich da ein solchem Spiel, keine "zufalls generierte Highscore " erzeugen?
Da nützt es mir auch relativ wenig, zu wissen, wie es funktioniert.
Wäre es möglich nur zwei Bilder den Bildschirm füllen zu lassen?
Dann hift einen vielleicht auch ein Blatt Papier.

Mfg
IFlo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 19:22 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Könnte ich schon - aber Hand aufs Herz, würdest du dir eine rot-grün Pappbrille basteln, oder ein Blatt Papier (oder einen Spiegel) während eines Spiels vor den Monitor halten, nur um einen schwindligen 3D-Effekt zu bestaunen?

Kleine Stereogramme kann man aber auch "unverschlüsselt" darstellen, auf Ken Perlins Homepage findest du ein Demo, in dem du online verschiedene Methoden zur 3D-Darstellung ausprobieren kannst (Single Image Stereogramme, wie in Steroid, sind allerdings nicht dabei):

http://mrl.nyu.edu/~perlin/demox/Hyper.html

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 19:31 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
also auf grossen bildschirmen wäre es sicher hilfreich, wenn man den darstellungsbereich etwas verkleinern könnte. das macht es ungeübten leichter, den effekt zu sehen. auch wäre dann platz für eine 2 punkt hilfsmarkierung - hab ich in ein paar stereogrammbüchern schon ein paarmal gesehen. oberhalb des bildes befinden sich 2 punkte. schielt oder starrt man auf das bild, sieht man, wenn man die augen in der richtigen position hält 3 punkte, in allen falschen 4 oder 2 punkte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 19:42 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Das ist eine sehr gute Idee, die ich demnächst auch einbauen werde.
An große Bildschirme kann das Ganze an sich schon durch die DPI Einstellung angepasst werden - die von dir vorgeschlagene Markierung sollte aber für den Betrachter eine echte Hilfe sein.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 20:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich habe auch festgestellt, dass man bei einer recht großen Auflösung (1024) und ein einer geringen DPI (60) (die Texture wird öfters wiederholt) sich viel schneller in das Bild hineinfindet. Die Texturen sehen dann zwar nicht mehr so gut aus aber die Augen haben es dann viel leichter sich dahinein zuversetzen. Und bei einer sehr einfarbigen Textur wie dieses Braun ist das super schwer. Selbst wenn sich die Ttextur sehr oft wiederholt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 21:29 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Die Hilfslinien sind nun eingebaut und sollten es dem Benutzer erleichtern, die Stereogramme zu sehen.
Außerdem wird so vermieden, dass die Stereogramme "überdreht" werden - es kann nämlich auch passieren, dass das Gehirn mehr als einen Streifen überspringt, dann glaubt man zwar etwas zu erkennen, kann aber keinen Sinn hineininterpretieren.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 22:01 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Es muss doch aber trotzdem möglich sein, das mehrfarbig zu machen.
Du müsstet dann halt "nur" diese zweite Texture genauso wie die erste durch dein Programm schicken. Z.B. wenn du das Kästchen im Zentrum mit einer anderen nutzbaren Textur belegst, dann hast du beim normalen hinsehen zwei andersfarbige Flecken auf'm Bild aber beim "schielen" halt ein andersfarbiges Kästchen. Wenn du Sowas einbauen würdes, währe das für dein Speil sicher Hilfreich.

Es muss gehen 8) ...da bin ich mir ziehmlich sicher...Und wenn du "einfach" die Punkte herausfindest welche zu einem Objekt gehören, und diese dann einfärbst. Schon das würde "Farbe" ins Spiel bringen. (im wahrsten Sinne des Wortes)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 22:21 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Glaub mir, das geht nicht. Das einzige was möglich ist - und dann kann man alle Farben haben - ist, die Objekte maximal so breit zu machen, wie der maximale Abstand von zwei Pixeln, die vom Gehirn als eines interpretiert werden sollen - dann hat man zwei schmale Streifen mit ganz normalen Objekten aus unterschiedlichen Blickwinkeln, "schielt" darauf, sieht drei Streifen und im mittleren das Bild dreidimensional. Dass man damit keinen Blumentopf gewinnt, dürfte klar sein.
Schau dir Perlins Demo an (ein paar Beiträge oben habe ich einen Link gesetzt) - dort wird das z.B. so gemacht.

Um Pixel eindeutig voneinander trennen zu können, müssen benachbarte Bildpunkte möglichst unterschiedlich gefärbt sein (schalte mal den Zufallsmodus ein - eigentlich schon interessant, dass das Gehirn in das Schneegestöber etwas hineininterpretieren kann - aber genau die Kontraste zwischen benachbarten Pixeln sind es in Single Image Stereogrammen, die den 3D-Effekt erzeugen).

Ich will dich aber nicht abhalten, mit dem Code zu experimentieren (deswegen ist ja schlussendlich alles dabei) - das Problem ist, dass beide Augen dasselbe Bild erhalten, deswegen muss die 3D-Information aus Kontrastunterschieden von benachbarten Pixeln herausgefiltert werden - und zwar über die Farbe, die somit nicht mehr für das Einfärben (oder gar Beleuchten) von Objekten zur Verfügung steht...

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.011s | 17 Queries | GZIP : On ]