Comment transformer une carte 3D en quelque chose de regardable sur un téléviseur 3D?

9

Disons que j'ai un nuage de points 3D en R ou une trame de données avec 3 champs remplis de données numériques.

Comment cela peut-il être «transformé» en «quelque chose» observable sur un téléviseur 3D (comme un téléviseur grand écran aléatoire de Samsung utilisant des lunettes à obturateur)? Soit un clip statique de ce nuage de points tournant autour d'un axe ou encore mieux de pouvoir interagir avec le graphique (le déplacer, le tourner, ...). De quels programmes, bibliothèques avez-vous besoin pour cela?

(Je viens d'évoquer R parce que c'est là que le travail est fait. Mais une solution ne devrait pas nécessairement inclure R)

Raffael
la source
1
Si vous avez déjà la représentation 3D de l'intrigue, il vous suffit de créer au moins deux vues à partir de celle-ci. Ces points de vue doivent différer dans une moindre mesure de ce qu'ils montrent. Donc, si votre "caméra" regardait l'intrigue sous un angle, vous déplaceriez légèrement la caméra vers la gauche ou la droite pour obtenir une deuxième vue.
slhck
1
Et ensuite, vous devez encoder les images en une sorte de vidéo multi-vues que le téléviseur peut gérer, par exemple H.264 MVC ou stéréo partagée - avez-vous des détails à ce sujet?
slhck
@slhck: Je n'en ai pas vraiment la représentation 3D. Je peux juste l'avoir affiché avec R en 3D. L'utilisation de deux caméras sur une représentation VRML pourrait également handicaper l'interaction avec l'intrigue. Comme ajuster les échelles ou utiliser différentes données. : /
Raffael
1
Oh je vois. Eh bien, ça va être compliqué. Vous auriez besoin d'un rendu graphique capable de produire de la 3D réelle à partir de la carte graphique de votre ordinateur (par exemple, une NVIDIA avec un kit de vision 3D), mais je ne suis pas au courant d'une telle chose.
slhck
1
Vous avez besoin d'une carte graphique capable de produire de la 3D (comme la NVIDIA et la vision 3D déjà mentionnées), puis d'un programme qui affiche vos données dans une fenêtre 3D accélérée par le matériel (semblable à un jeu vidéo). Le traitement (processing.org) peut vous aider à cet égard.
evilspoons

Réponses:

1

Vous pouvez générer deux images (pour les yeux gauche et droit) pour chaque image de votre animation, les configurer côte à côte (pour créer une image très large ou horizontalement) et générer un fichier vidéo de cette façon . Ensuite, mettez ce fichier sur une clé USB et branchez-le sur un téléviseur 3D moderne, et regardez dans son menu 3D, vous devriez trouver une option "côte à côte" ou "SBS" qui comprendra comment afficher l'image. (Recherchez sur YouTube "GoPro 3D" pour de nombreux exemples.)

Vous pourriez être en mesure de faire de même avec un ordinateur connecté au téléviseur en tant que moniteur, mais les parties non 3D du bureau devraient être cachées car elles ne seraient pas dupliquées pour chaque œil (et auraient l'air étranges).

Remarque: Si vous connectez un ordinateur à un écran 3D en mode SBS, vous trouverez utile de fermer un œil à la fois pendant la navigation pour démarrer votre présentation.

sburlappp
la source
0

Vraiment, vous avez juste besoin de plot3d () spinnable, du package rgl .

  1. Commencez l'orientation de votre tracé à un emplacement normal particulier.
  2. Créez deux instances de votre tracé de base, pivotées légèrement dans des directions opposées (pour une vue semblable à une lentille entièrement centrée) ou légèrement agrandies et dézoomées respectivement (pour une vue 3D plus standard)

    X. Teintez l'intrigue plus loin plus bleu, teintez également l'intrigue plus proche plus rouge.

  3. N'affiche pas réellement le tracé de base. Utilisez de préférence la base pour calculer un quadruple tampon (ou double tampon) alternant lequel des deux tracés de décalage est affiché dans chaque trame. Mettez-le à jour à chaque boucle de dessin. Affichez simultanément chaque tracé d'instance après la mise à jour.
  4. À l'aide d'une minuterie haute résolution ou VSync, lisez la pile de tampons avec précision au taux de rafraîchissement de votre appareil de lunettes à obturateur donné.
  5. Espérons que le taux de rafraîchissement soit configurable dans votre application, plus l'option de `` sauter la prochaine image '' pour se synchroniser avec les lunettes à obturateur. (pour inverser la synchronisation gauche / droite)
  6. Avant de mettre à jour le tracé de base, scannez l'entrée pour les commentaires des utilisateurs, potentiellement à partir d'un tampon d'entrée rempli de manière asynchrone.
  7. Branchez un ordinateur portable ou un petit appareil Linux sur le téléviseur avec HDMI lol.
  8. Bonus: si vous voulez vraiment vous y mettre, vous pouvez utiliser Rcpp et GLFW ensemble pour gérer la folie du joystick / souris / manette de jeu.

Il y a une brève description de rgl et un package similaire pour les parcelles de filage 3D, qui peuvent être vus à la fin de cette publication .

Si vous le pouvez, vous voudrez placer une sorte d'effet de flou basé sur la perspective juste à vue sur chaque tracé en utilisant OpenGL. Bien sûr, vous devrez probablement faire quelques ajustements avec les angles pour bien faire les choses. Si je me souviens que ce devrait être un angle <20 degrés, ... mais qui sait, pas moi!

Garet Claborn
la source
Non désolé. Je sais que rgl et rgl prennent en charge l'anaglyphe 3D de la boîte. Je mentionne les lunettes à obturateur pour une raison. mais merci quand même;)
Raffael
@ Яaffael whoops! n'a pas vraiment vu cela sur les lunettes à obturateur en raison de la lecture trop rapide. Désolé pour cela, ajout de quelques corrections.
Garet Claborn
Vous pouvez également utiliser R avec l'interopérabilité OpenCL / GL pour réaliser la mise en mémoire tampon et avoir un service distinct en écriture seule pour les tampons d'entrée, donnant à votre application un accès en lecture seule à celle-ci. (Ensuite, vous avez également besoin de l'inverse pour renvoyer un message au service très rapidement une fois qu'une entrée a été lue) Ou de la même manière, demandez simplement à votre application de créer les tampons et de publier les sommets sur OpenCL et C ++ / OpenGL / OpenCL. côté.
Garet Claborn
J'ai supprimé ma question parce que j'obtiens trop de réponses non pertinentes (comme la vôtre jusqu'à présent :) mais vous êtes invités à la mettre à jour.
Raffael