Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

11

29.07.2012, 17:37

Ich weiß bereits, dass man 2 Scenen aufbauen muss

Nee, das wäre totale Verschwendung von Ressourcen.
Du musst die Szene nur einmal aufbauen und sie aus zwei Perspektiven rendern.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

12

29.07.2012, 18:51

Ich habe das mal für die Uni mit OpenGL umsetzen müssen. Ist alles eigentlich nicht so schwierig. Es hilft wenn man sich das ganze vorher mal aufmalt. Wo die Augen/Kameras positioniert sind und wie diese Auf die Szene gucken. Ne Anaglyph-Brille kann man sich im Internet günstig bestellen. Dann rendert man halt in den passenden Farben und guckt was passiert.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

13

30.07.2012, 00:06

Hallo David,

ja, danke, ein guter Tipp,

1. eine Gruppe von .DrawPrimitives (in Red)
2. Kameraposition verändern
3. die .DrawPrimitives wiederholen (in Cyan)

Es bleibt ein Problem: die beiden Bilder müssen durchscheinend sein.

device.RenderState.AlphaBlendEnable = True

Aber die beiden Bilder dürfen in sich nicht durchscheinend sein. Sonst wäre ja alles transparent. Wie könnte man das lösen?

Danke, Gruß,
Franz

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

30.07.2012, 08:04

2mal rendern und die Ergebnisse zu 50% verrechnen?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

30.07.2012, 08:44

Nee, dann wäre alles sehr dunkel. Wenn schon, dann musst du beide zu 100% verrechnen und addieren.
Blending hat den Nachteil, dass du zuerst in einen Zwischenpuffer rendern musst, sonst kommst du mit deinem "normalen" Blending durcheinander.

Es geht aber auch einfacher, ohne Blending.
Mach es mt D3DRS_COLORWRITEENABLE. Einmal renderst du nur in den Rot-Kanal, einmal nur in den Blau-Kanal.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

30.07.2012, 09:08

Hmm, stimmt, da die Kanäle voneinander unabhängig sind, reicht eine Addition, bzw. ColorWrite.
(aber rot/cyan is eh hässlich mMn, schon als Kind in Zeitschriften fand ich das ugly)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

30.07.2012, 09:11

Jo, es ist hässlich.
Man hat jedoch keine große Auswahl, man kann nur die drei Farbkanäle "verwürfeln". Irgendwas zu mischen hat keinen Sinn.
Das liegt am Spektrum, das von einem Monitor erzeugt wird. Das ist ja eine Linearkombination der drei Spektren von Rot, Grün und Blau (dieses Monitors!), und wenn die nicht genau zum Spektrum der Brille passen, kannst du das nicht durch Mischen der Farben korrigieren.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

30.07.2012, 09:34

Jo, is klar. Die Wellenlängen sind eben fix bei Brille und Monitor. Entweder es passt oder nicht. Im Normalfall letzteres.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

19

30.07.2012, 15:12

Hi David, das ist auch wieder eine Super-Idee: device.RenderState.ColorWriteEnable = ColorWriteEnable.Red

Ich muss dadurch nicht erst eine Farbtrennung machen und zwei verschiedene Texturen erzeugen, sondern die eine nehmen und abwechselnd die entsprechenden Farbebenen erlauben.

Was mir hier aber noch unklar ist: wenn nun ein Pixel im Z-Buffer vorhanden ist und eine rote Farbe hat, und dann möchte ich ein Pixel in Cyan darüber setzen. Wie kann ich bewirken, dass der Rot-Wert erhalten bleibt, hingegen der Grün-Blau=Cyan - Wert, je nach Z-Buffer-Wert überschrieben oder abgelehnt wird?

20

30.07.2012, 15:27

Hi BlueCobold, mit Shutterbrille oder mit polarisiertem Licht zu arbeiten, wäre allerdings schöner. Da hast du schon recht. Nur da fehlt uns noch ein bisschen was an Hardware.

Aber das ändert nichts an dem Problem, das wir gerade diskutieren. Zwei Bilder erzeugen muss man auf alle Fälle. Und die beiden Bilder müssen über verschiedene Rendertargets oder ähnliches zum Bildschirm weitergeschickt werden.

Werbeanzeige