¿Cómo convertir un gráfico 3D en algo que se pueda ver en un televisor 3D?

9

Digamos que tengo un diagrama de dispersión 3D en R o un marco de datos con 3 campos llenos de datos numéricos.

¿Cómo se puede "convertir" en "algo" que se pueda ver en un televisor 3D (como un televisor de pantalla grande aleatorio de Samsung con gafas de obturador)? Ya sea un clip estático de ese diagrama de dispersión girando alrededor de un eje o, incluso mejor, puede interactuar con el diagrama (moverlo, girarlo, ...). ¿Qué programas, bibliotecas necesitas para hacer esto?

(Acabo de mencionar R porque ahí es donde se hace el trabajo. Pero una solución no necesariamente tendría que incluir R)

Raffael
fuente
1
Si ya tiene la representación 3D de la trama, todo lo que necesita es crear al menos dos vistas a partir de ella. Estas vistas tienen que diferir en lo que muestran en una cantidad mínima. Entonces, si su "cámara" mirara la trama desde un ángulo, cambiaría ligeramente la cámara hacia la izquierda o hacia la derecha para obtener una segunda vista.
slhck
1
Y luego necesita codificar las imágenes en algún tipo de video de múltiples vistas que el televisor puede manejar, por ejemplo, H.264 MVC o estéreo dividido: ¿tiene algún detalle al respecto?
slhck
@slhck: Realmente no tengo la representación 3D de la misma. Solo puedo mostrarlo con R en 3D. También el uso de dos persecuciones de cámara en una representación VRML podría perjudicar la interacción con la trama. Como ajustar las escalas o usar diferentes datos. : /
Raffael
1
Oh ya veo. Bueno, eso va a ser complicado. Necesitaría una representación gráfica que pueda generar 3D real desde la tarjeta gráfica de su computadora (por ejemplo, una NVIDIA con un kit de visión 3D), pero no estoy al tanto de tal cosa.
slhck
1
Necesita una tarjeta gráfica que pueda generar 3D (como la ya mencionada NVIDIA y visión 3D) y luego un programa que muestre sus datos en una ventana 3D acelerada por hardware (similar a un videojuego). Processing (processing.org) podría ayudarlo a este respecto.
evilspoons

Respuestas:

1

Puede generar dos imágenes (para los ojos izquierdo y derecho) para cada fotograma de su animación, configurarlas una al lado de la otra (para hacer una imagen muy amplia o aplastada horizontalmente) y generar un archivo de video de esa manera . Luego, coloque ese archivo en una unidad USB y conéctelo a un televisor 3D moderno, y busque en su menú 3D, debe encontrar una opción "lado a lado" o "SBS" que comprenderá cómo mostrar la imagen. (Busque en YouTube "GoPro 3D" para ver muchos ejemplos).

Es posible que pueda hacer lo mismo con una computadora conectada al televisor como monitor, pero las partes del escritorio que no sean 3D necesitarían estar ocultas, ya que no se duplicarían para cada ojo (y se verían extrañas).

Nota: Si conecta una computadora a una pantalla 3D en modo SBS, le resultará útil cerrar un ojo a la vez mientras navega para comenzar su presentación.

sburlappp
fuente
0

Realmente solo necesitas plot3d spinnable (), del paquete rgl .

  1. Comience la orientación de su parcela en alguna ubicación particular y normal.
  2. Cree dos instancias de su trama base, gire ligeramente en direcciones opuestas (para una vista tipo lente totalmente centrada) o acerque y aleje un poco respectivamente (para una vista 3D más estándar)

    X. Tinte la trama más lejos más azul, igualmente teñir la trama más cercana más roja.

  3. En realidad, no muestra la trama base. Preferiblemente, use la base para calcular un búfer cuádruple (o búfer doble) alternando cuál de los dos gráficos de desplazamiento se muestra en cada cuadro. Actualízalo en cada ciclo de dibujo. Muestre simultáneamente cada diagrama de instancia después de la actualización.
  4. Usando un temporizador de alta resolución o VSync, reproduzca la pila de búfer con la frecuencia de actualización de su dispositivo de obturador dado.
  5. Esperemos que la frecuencia de actualización sea configurable en su aplicación, además de la opción de 'omitir el siguiente fotograma' para sincronizar con las gafas del obturador. (para invertir la sincronización izquierda / derecha)
  6. Antes de actualizar el diagrama base, escanee la entrada para obtener comentarios de los usuarios, potencialmente desde un búfer de entrada lleno de forma asíncrona.
  7. Conecte una computadora portátil o un pequeño dispositivo Linux a la televisión con HDMI jajaja.
  8. Bonificación: si realmente quieres llegar a eso, puedes usar Rcpp y GLFW juntos para manejar la locura del joystick / mouse / gamepad.

Hay una breve descripción de rgl y un paquete similar para las parcelas giratorias en 3D, que se puede ver al final de esta publicación .

Si puede, querrá colocar algún tipo de efecto de desenfoque impulsado por la perspectiva a simple vista en cada gráfico usando OpenGL. Por supuesto, es probable que tengas que hacer algunos ajustes con los ángulos para hacerlo bien. Si recuerdo que debería ser un ángulo <20 grados, ... pero quién sabe, ¡no yo!

Garet Claborn
fuente
no, lo siento. Sé que rgl y rgl son compatibles con anaglifo 3D de la caja. Menciono las gafas de obturación por una razón. pero gracias de todos modos;)
Raffael
@ Яaffael whoops! en realidad no vi eso acerca de las gafas de obturación debido a la lectura demasiado rápida. Perdón por eso, agregó algunas correcciones.
Garet Claborn
También puede usar R con interoperabilidad OpenCL / GL para lograr el almacenamiento en búfer y tener un servicio separado de solo escritura en los búferes de entrada, lo que le da a su aplicación acceso de solo lectura. (Luego, también necesita el reverso para enviar un mensaje al servicio muy rápidamente una vez que se ha leído una entrada) O de manera muy similar, simplemente haga que su aplicación cree los búferes y publique los vértices en OpenCL y C ++ / OpenGL / OpenCL lado.
Garet Claborn
Eliminé mi pregunta porque recibo muchas de esas respuestas no relevantes (como la tuya hasta ahora :) pero puedes actualizarla.
Raffael