Seite 1 von 2

echte 3D Monitore programmieren

Verfasst: 06.02.2010 09:38
von Rüdiger
Hallo!

Hat jemand eine Ahnung wie man die neuen 3D-Monitore programmiert.
Ich denke da nicht an die mit Shutterbrille sondern die, die Zeilenweise unterschiedlich polarisiert sind.
Wäre ja toll, wenn mann die beiden Bilder nur auf 2 Fenster oder ähnliches aufteilen müsste und sie dann korrekt real3D mit PolarBrille wargenommen würden?

Vielen Dank!

Rüdiger

Re: echte 3D Monitore programmieren

Verfasst: 07.02.2010 12:36
von kswb73
Soweit ich weiß macht das der Treiber automatisch. So ist es zumindestens bei IZ3d. Einfach in 3D programmieren. Hat der Benutzer dann einen 3D-Bildschrim und die entsprechende Treiber wird dein Spiel automatisch in echtes 3D umgewandelt. Sollte das bei deinem Bildschirm nicht so sein, schau mal auf der Herstellerseite. Die bieten dann entsprechende SDKs an.

Re: echte 3D Monitore programmieren

Verfasst: 08.02.2010 08:39
von Rüdiger
Hallo kswb73!

Danke für die Infos.
Vielleicht kann mir nun noch jemand helfen, wie man für die rechte und linke Hälfte vollkommen verschiedene Bilder darstellen kann!

Viele Grüsse

Rüdiger

Re: echte 3D Monitore programmieren

Verfasst: 08.02.2010 17:57
von dllfreak2001
War es da nicht so, dass man bei diesen 3D-Monitoren immer eine Zeile oder Spalte abwechselnd anders polarisiert hat. zB.:

Zeile 1, 3, 5, 7,.... horizontal
Zeile 2, 4, 6, 8,.... vertikal

Jetzt machst du zwei Bilder eines für das Rechte und das andere für das Linke Auge und stellst des Linke nur in den ungeraden Zeilen dar und das rechte in den geraden (weiß nicht genau wie rum).
Fertig.

Dann sieht das eine Auge nur die Bildinformationen der geraden und das Andere nur die Informationen der ungeraden Zeilen, wenn man die Polarisationsbrille aufsetzt.

Re: echte 3D Monitore programmieren

Verfasst: 08.02.2010 18:08
von Crawler
Wenn du das machst, gibts böse Kopfaua! Wenn dem Gehirn zwei unterschiedliche Bilder (von jedem Auge eins) präsentiert wird, versucht es das zu einem 3D-Gebilde zusammenzusetzen. Die Bildinformation wird aber vom Hirn nicht richtig erkannt.
Rüdiger schrieb jedoch, dass er auf den Bildschuirmhälften andere dinge darstellen will. Also kein zeilenweise abwechselndes Bild, sondern strikt getrennt nach links und rechts, bspw. die linken 960 Pixel für Bild A, die rechten 960 Pixel für Bild B.
Da stellt sich mir nur die Frage, wo eigentlich das Problem liegt...

Re: echte 3D Monitore programmieren

Verfasst: 08.02.2010 20:17
von Rüdiger
Hallo an Alle und Danke!

Die Idee mit der zeilenweisen Darstellung scheint ein guter Ansatz zu sein.
Ich möchte z.B. , das das linke Auge nur einen senkrechten Balken sieht und das rechte einen Waagerechten.
Daraus könnte man dann einen Test machen der Abweichungen der Augen von der Normalstellung ermitteln kann (Wie beim Optiker)
Wenn der Senkrechte Balken dann nur von den geraden zeilen dargestellt wird und der waagerechte von den ungeraden Zeilen wäre alles in Butter. (Mann würde mit beiden Augen ein Kreuz sehen)

Wäre nun noch zu schön, wenn mann diese unterschiedlichen Bilder einfach in zwei Speicherbereiche oder so laden könnte und der Rechner die dann nach den Zeilen automatisch aufteilt.

Evtl. Könnte auch ne bmp gehen, die zwei Bilder enthält. das eine auf den geraden zeilen, das andere auf den ungeraden....
Aber alle nur Theorie, da ich noch keinen 3D Monitor habe...

Viele Grüsse

Rüdiger

Re: echte 3D Monitore programmieren

Verfasst: 08.02.2010 20:45
von dllfreak2001
Du könntest so ein Bild in Paint malen.

Aber was möchtest du machen?
Nur ein Bild in 3D darstellen, oder irgendwie einen Screen, ein Image oder einen Film so darstellen?

Code: Alles auswählen

InitSprite()
InitKeyboard()

OpenWindow(0, 0, 0, 800, 600, "3D-Bild", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)

CreateSprite(0, 800, 600)
CreateSprite(1, 800, 600)

cx.f = 400
cy.f = 300

mw.f = 0

Repeat
  ExamineKeyboard()
  
  DisplaySprite(0, 0, 0)
  
  If KeyboardPushed(#PB_Key_Left)
    cx - 4
  ElseIf KeyboardPushed(#PB_Key_Right)
    cx + 4
  EndIf
  
  If KeyboardPushed(#PB_Key_A)
    mw - 1
  ElseIf KeyboardPushed(#PB_Key_D)
    mw + 1
  EndIf
  
  StartDrawing(SpriteOutput(0))
    Box(0, 0, 800, 600, 0)
    div.f = -(cx - (400 + mw))/50
    For n = 10 To 0 Step -1
      Circle(cx + n * div, cy, 92 - n, RGB(255 - n*8,255 - n*8,255 - n*8))
    Next
  StopDrawing()
  
  StartDrawing(SpriteOutput(1))
    Box(0, 0, 800, 600, 0) 
    div = -(cx - (400 - mw))/50
    For n = 10 To 0 Step -1
      Circle(cx + n * div, cy, 92 - n, RGB(255 - n*8,255 - n*8,255 - n*8))
    Next
  StopDrawing()
  
  For y = 0 To 400 
    ClipSprite(1, 0, y*2, 800, 1)
    DisplaySprite(1,0, y*2)
  Next
  
  StartDrawing(ScreenOutput())
    DrawText(0, 0, "Drücke <A  D> Augenabstand: " + Str(mw), 255)
    DrawText(0, 16, "Drücke <Links Rechts> Dingsbums bewegen: " + Str(cw), 255)
  StopDrawing()
  
  FlipBuffers()

  If WindowEvent() = #PB_Event_CloseWindow
    End
  EndIf
ForEver

Re: echte 3D Monitore programmieren

Verfasst: 08.02.2010 21:52
von Rüdiger
Hallo dllfreak2001!

Cool! :bounce: Das hat mir schon ne Menge weitergeholfen! Ich werd mir mal so ein Bild konstruieren und mal auf einem 3D Monitor ausprobieren!
Soll so was werden wie die Stereo-Bilder, die es vor 10 Jahren mal auf Papier gab.

Viele Grüsse

Rüdiger

Re: echte 3D Monitore programmieren

Verfasst: 09.02.2010 16:57
von Kaeru Gaman
für korrekte Stereo-Bilder brauchst du zwei Fotos. ich hab mich vor 15 Jahren selber mit der Materie beschäftigt,
und ein Bekannter von mir hat sich ne Halteleiste für zwei Spiegelreflex-Cams gebaut und ne Glanz-Leinwand und nen Polar-Projektor gehabt.

wenn du selber Bilder rendern willst, schau dir mal POV-Ray an.
das scripten der Scene wäre der eigentliche Aufwand (gibt aber auch Modeller dafür)
zwei Kameras im Augenabstand einzubaun wäre die leichteste Übung.

Re: echte 3D Monitore programmieren

Verfasst: 10.02.2010 20:09
von Rüdiger
Hallo Kaeru Gaman!

Danke für die Tips ! Ich warte mal was die Ce-Bit so bringt.

Viele Grüsse
Rüdiger