Wie verwandle ich eine 3D-Karte in etwas, das auf einem 3D-Fernseher angezeigt werden kann?

9

Angenommen, ich habe ein 3D-Streudiagramm in R oder einen Datenrahmen mit 3 Feldern, die mit numerischen Daten gefüllt sind.

Wie kann das in etwas verwandelt werden, das auf einem 3D-Fernseher zu sehen ist (wie ein zufälliger Großbildfernseher von Samsung mit einer Shutterbrille)? Entweder ein statischer Clip dieses Streudiagramms, der sich um eine Achse dreht, oder noch besser, er kann mit dem Diagramm interagieren (verschieben, drehen, ...). Welche Programme, Bibliotheken benötigen Sie, um dies zu erreichen?

(Ich habe gerade R angesprochen, weil dort die Arbeit erledigt wird. Aber eine Lösung müsste nicht unbedingt R enthalten.)

Raffael
quelle
1
Wenn Sie bereits über die 3D-Darstellung des Diagramms verfügen, müssen Sie lediglich mindestens zwei Ansichten daraus erstellen. Diese Ansichten müssen sich in ihrer Darstellung um einen minimalen Betrag unterscheiden. Wenn Ihre "Kamera" das Diagramm aus einem Winkel betrachten würde, würden Sie die Kamera leicht nach links oder rechts verschieben, um eine zweite Ansicht zu erhalten.
Slhck
1
Und dann müssen Sie die Bilder in eine Art Multi-View-Video codieren, das der Fernseher verarbeiten kann, z. B. H.264 MVC oder Split Stereo - haben Sie Einzelheiten dazu?
Slhck
@slhck: Ich habe nicht wirklich die 3D-Darstellung davon. Ich kann es einfach mit R in 3D anzeigen lassen. Die Verwendung von zwei Kameraperspektiven in einer VRML-Darstellung würde möglicherweise die Interaktion mit der Handlung beeinträchtigen. Wie das Anpassen der Skalen oder das Verwenden anderer Daten. : /
Raffael
1
Oh, ich verstehe. Das wird kompliziert. Sie benötigen eine gerenderte Grafik, die tatsächlich 3D von der Grafikkarte Ihres Computers ausgeben kann (z. B. eine NVIDIA-Grafikkarte mit einem 3D-Vision-Kit), aber mir ist so etwas nicht bekannt.
Slhck
1
Sie benötigen eine Grafikkarte, die 3D ausgeben kann (wie die bereits erwähnte NVIDIA- und 3D-Vision), und dann ein Programm, das Ihre Daten in einem hardwarebeschleunigten 3D-Ansichtsfenster (ähnlich einem Videospiel) anzeigt. Die Verarbeitung (process.org) kann Ihnen in dieser Hinsicht helfen.
böse Löffel

Antworten:

1

Sie können für jedes Bild Ihrer Animation zwei Bilder (für das linke und das rechte Auge) erstellen, diese nebeneinander einrichten (um ein sehr breites oder horizontal gequetschtes Bild zu erstellen) und auf diese Weise eine Videodatei erstellen . Legen Sie diese Datei dann auf ein USB-Laufwerk und schließen Sie sie an einen modernen 3D-Fernseher an. In ihrem 3D-Menü sollten Sie eine Option "nebeneinander" oder "SBS" finden, mit der Sie das Bild anzeigen können. (Durchsuche YouTube nach "GoPro 3D" für viele Beispiele.)

Möglicherweise können Sie dasselbe mit einem Computer tun, der als Monitor an den Fernseher angeschlossen ist, aber die Nicht-3D-Teile des Desktops müssen ausgeblendet werden, da sie nicht für jedes Auge dupliziert werden (und seltsam aussehen).

Hinweis: Wenn Sie einen Computer im SBS-Modus an einen 3D-Bildschirm anschließen, ist es hilfreich, während der Navigation jeweils ein Auge zu schließen, um Ihre Präsentation zu starten.

sburlappp
quelle
0

Wirklich, Sie brauchen nur spinnbares plot3d () aus dem rgl-Paket .

  1. Beginnen Sie die Ausrichtung Ihres Grundstücks an einem bestimmten, normalen Ort.
  2. Erstellen Sie zwei Instanzen Ihres Basisplots, die leicht in entgegengesetzte Richtungen gedreht werden (für eine vollständig zentrierte linsenähnliche Ansicht) oder leicht vergrößert bzw. verkleinert werden (für eine Standard-3D-Ansicht).

    x. Färben Sie die Handlung weiter entfernt blauer, ebenso die nähere Handlung roter.

  3. Zeigen Sie das Basisdiagramm nicht an. Verwenden Sie vorzugsweise die Basis, um einen Quad-Puffer (oder Doppelpuffer) zu berechnen, der abwechselt, welches der beiden Offset-Diagramme in jedem Frame angezeigt wird. Aktualisieren Sie jede Zeichnungsschleife. Zeigen Sie nach dem Update jedes Instanzdiagramm gleichzeitig an.
  4. Spielen Sie den Pufferstapel mit einem hochauflösenden Timer oder VSync mit genau der Bildwiederholfrequenz Ihres jeweiligen Verschlussbrillengeräts ab.
  5. Hoffentlich kann die Bildwiederholfrequenz in Ihrer App konfiguriert werden, sowie die Option, das nächste Bild zu überspringen, um eine Synchronisierung mit der Shutterbrille durchzuführen. (um die Links / Rechts-Synchronisation umzukehren)
  6. Scannen Sie vor dem Aktualisieren des Basisplots die Eingabe nach Benutzerfeedback, möglicherweise aus einem asynchron gefüllten Eingabepuffer.
  7. Schließen Sie einen Laptop oder ein kleines Linux-Gerät mit HDMI lol an den Fernseher an.
  8. Bonus: Wenn Sie wirklich darauf eingehen möchten , können Sie Rcpp und GLFW zusammen verwenden, um die Verrücktheit von Joystick / Maus / Gamepad zu bewältigen.

Es gibt eine kurze Beschreibung der rgl und ein ähnliches Paket für 3D - Spinnen - Plots, die am Ende dieses gesehen werden können , Posting .

Wenn Sie können, möchten Sie mit OpenGL eine Art perspektivisch gesteuerten Unschärfeeffekt nur sichtbar auf jedem Plot platzieren. Natürlich müssen Sie wahrscheinlich ein wenig an den Winkeln arbeiten, um es genau richtig zu machen. Wenn ich mich erinnere, sollte es ein Winkel <20 Grad sein, ... aber wer weiß, nicht ich!

Garet Claborn
quelle
Nein Entschuldigung. Ich weiß, dass rgl und rgl Anaglyphen 3D aus der Box unterstützen. Ich erwähne Shutterbrillen aus einem bestimmten Grund. aber trotzdem danke;)
Raffael
@ Яaffael whoops! habe das eigentlich nicht über Shutterbrillen gesehen, weil ich zu schnell gelesen habe. Entschuldigung, einige Korrekturen hinzugefügt.
Garet Claborn
Möglicherweise können Sie auch R mit OpenCL / GL-Interop verwenden, um eine Pufferung zu erreichen, und einen separaten Dienst haben, der nur für die Eingabepuffer schreibgeschützt ist, sodass Ihre App schreibgeschützt darauf zugreifen kann. (Dann benötigen Sie auch die Umkehrung, um eine Nachricht sehr schnell an den Dienst zurückzusenden, sobald eine Eingabe gelesen wurde.) Oder lassen Sie Ihre App einfach die Puffer erstellen und die Scheitelpunkte an OpenCL und C ++ / OpenGL / OpenCL-Renderer senden, die mitlaufen Seite.
Garet Claborn
Ich habe meine Frage gelöscht, weil ich zu viele dieser nicht relevanten Antworten bekomme (wie Ihre bisher :), aber Sie können sie gerne aktualisieren.
Raffael