3d game mit 3d brille /°°\

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Eigentlich müßtest Du doch nur Bild 1 komplett rendern (nicht anzeigen) und rot einfärben. Dann das gleiche mit Bild 2 nur halt grün. Und dann den Bildschirm schwarz machen, und beide übereinandermalen mit 50% Transparenz. Das müßte doch klappen oder nicht?
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

ne... dann ist das nicht mehr 3d

also doch teils aber nicht so 3d wie ich es haben möchte (so wie du es sagst guckt das bild zwar aus dem bildschirm heraus aber es hat keine tiefe. also brauche ich 2 kameras die eine muss etwas weiter zur seite (wie unsere augen O O ) wenn man jetzt nur 2mal das gleiche bild nebeneinander anzeigt, dann hat man keine tiefe weil die beiden augen ja nicht das gleiche sehen...

das ist aber nicht das problem ich habe das jetzt so gemacht: ich habe beide bilder gerendert, die sind jetzt rot und grün. ich möchte die jetzt einfach übereinander schreiben aber die sollen nicht transparent sein (wenn sie tranzparent sind dann ergibt es einen falschen rot-ton.)

also müssen die übereinander geschrieben werden...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ja wie ich sagte.

bild eins schreibst du nur in den rot-kanal, und bild 2 nur in den grün-kanal.
aber dafür gibt es keine vorgefertigten befehle,
deshalb muss man sich mit direkten bit-operationen behelfen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Es funktioniert genau so, wie ZeHa es beschrieben hat.

Du renderst zwei Bilder, die den gleichen Fluchtpunkt besitzen und in einem geringen Winkel zueinander stehen. Das eine renderst du nur mit roten Lichtquellen, bzw. nutzt die internen Filter und stellst nur den Rotkanal dar, und beim anderen über Alphablending transparent den blauen Kanal. Du kannst auch Shader dafür nutzen.

Da das mit PB nicht funktioniert, musst du halt die einzelnen Texturen in rot und blau umwandeln und diese halt nutzen. Auf 3D-Sprites rendern, und diese dann darstellen.
Alles andere wäre unfug.
aber dafür gibt es keine vorgefertigten befehle,
Doch, nur unter PB nicht..
Optimismus ist ein Mangel an Information.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

@ Brügge: Ich hab ja auch nicht gesagt, daß Du zweimal das GLEICHE Bild nehmen sollst, sondern Du sollst Bild 1 (linkes Auge) und Bild 2 (rechtes Auge) separat rendern, beide entsprechend einfärben (1 = rot, 2 = grün) und diese dann mit Halbtransparenz übereinanderlegen.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

achso... ich habe jetzt gedacht du meinst das gleiche bild hat in rot unf grün und dann nicht ganz übereinander legen sondern halt nebeneinander...

jedoch hat man dann keine 3d tiefe...

mein problem ist nicht das zeichnen der bilder, sondern das übereinander zeichnen also wenn ich die halbtranzparent mache bekomme ich einen anderen rotwert und einen anderen grünwert...

deshalb möchte ich das so zeichnen, das er es übereinander zeichnet mit den gleichen rot und grün werten...


@Hellhound66
wie meinste den gleichen fluchtpunkt? meinst du jetzt 2mal das gleiche bild nur halt rot und grün oder 2 kameras, die nebeneinander platziert sind?
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Das mit den falschen rot / grün werten liegt ja dadran, dass beim tranzparent machen ein "braun" herauskommt, machs doch (ohne bi-toperatoren zu benutzen) so, das du jedes frame abwechselnt das rote und dann das grüne zeichnest (bei schneller rate sieht mans net)
Ob für das menschliche auge auch ein braun rauskomtm weiß ich nicht,
ich kann mir nur denken, das beim abwechselnd zeichnen, der bildschirm ja immer einmal rot und dann grün gesagt bekommt.
beim tranzparent wird das ja schon im speicher "gemischt"
oder liege ich hier komplett falsch?
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

deine idee ist schon fast perfeckt... aber da rot immer so kurz angezeigt wird und danach direckt schwarz oder grün auf der höhe ist, wirkt das rot dunkel, und das spiel ist etwas aufwendig (es flackert) aber sonst gut!
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Natürlich bekommt man ein Mischbild und dabei auch allerlei Lilatöne, was kein Problem ist, da man mit der Brille ja entweder nur den Rot oder den Blauanteil sieht.

Du kannst es natürlich auch so machen, dass du zuerst den roten dann auf dem nächsten Frame den grünen Anteil anzeigst und das mit 100fps. Dann haste wieder das gleiche lila Bild ^___^.
Optimismus ist ein Mangel an Information.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Außerdem gibt auf dem Monitor sowieso nur 3 Farben: Rot, Grün und Blau.
Und ob das jetzt hell- oder dunkelrot ist, ist nebensächlich. Die Wellenlänge
ist die selbe, nur die Intensität ist unterschiedlich.

Allerdings kann die Wellenlänge bei verschiedenen Monitoren und vor allem
TFTs sehr unterschiedlich sein für die verschiedenen Farben. Beim
Röhrenmonitor kann man das meist auch mit der Farbtemperatur regeln.

Aber es is ja auch nicht so, dass diese 3D-Brillen wirklich nur eine
Wellenlänge durchlassen. Es ist eher ein Wellenlängenbereich um rot, grün
und blau.
Antworten