Réalité virtuelle avec Google



Publié par Nikolai Khabarov, Embedded Expert DataArt, Smart Home Technology Evangelist, Inventor.

Cet article est une brève digression sur les bases du travail avec la réalité virtuelle et augmentée. Je n'ai pas défini la tâche de révéler entièrement toutes les fonctionnalités du SDK Google VR et prévoyais de donner une base minimale à ceux qui sont intéressés par ces technologies et souhaitent commencer à travailler avec elles.

De l'histoire de la 3D


Pour voir une image en trois dimensions, la première chose que nous devons faire est d'organiser le transfert de deux images différentes pour l'œil gauche et l'œil droit. Il est clair que lorsque nous regardons un objet dans la vie ordinaire, nos yeux le voient sous différents angles, car ils sont à une certaine distance les uns des autres. En fait, à cause de cela, nous percevons un espace tridimensionnel autour.

L'idée même de l'image 3D est assez ancienne, il existe de nombreuses technologies qui vous permettent de jouer une image en trois dimensions. Par exemple, tout le monde a vu des lunettes anaglyphes avec des lentilles de couleurs différentes dans les salles de cinéma. L'image est affichée à l'écran sous deux angles et un spectre de couleurs divisé en deux parties. Dans ce cas, chaque angle est passé à travers l'un des filtres, grâce auquel l'illusion de volume apparaît. Le principal inconvénient de cette méthode est une perte notable de reproduction des couleurs.

À l'étape suivante du développement technologique, les lunettes dites à obturateur, également appelées lunettes à valve lumineuse, sont apparues - elles sont également utilisées dans les cinémas. Le dispositif de ces lunettes est différent: chaque objectif possède un petit écran avec une résolution d'un pixel, il peut soit fermer complètement l'image, soit la sauter complètement. Les lunettes basculent alternativement entre les écrans, ce qui nous permet de voir l'image avec l'un ou l'autre œil. Dans le même temps, pour voir une image en trois dimensions, nous devons synchroniser la commutation des lunettes avec un écran de télévision ou de cinéma. Cela peut être fait via le canal radio ou, comme cela arrive le plus souvent, à l'aide d'un récepteur infrarouge et d'un émetteur installé sur les lunettes, situés près de l'écran. Un autre inconvénient de cette méthode est la perte de luminosité - pendant la moitié du temps, nous ne voyons rien d'un œil. De plus, l'équipement de lecture nécessite une fréquence d'images élevée.

Un développement intéressant de l'idée était la technologie de polarisation - à l'aide d'un filtre, nous ne pouvons couper que la partie nécessaire des ondes polarisées dans différentes directions. Tout le monde connaît sûrement les filtres polarisants pour les caméras qui peuvent se débarrasser des reflets. Dans le cas d'une image 3D, un écran est préparé d'une manière spéciale, dont certaines lignes commencent à émettre une lumière polarisée verticalement, d'autres - une lumière polarisée horizontalement. Dans les cinémas, la polarisation circulaire est également utilisée lorsque la lumière est tordue à droite ou à gauche.

La simplicité est la clé du succès


Les inventeurs de Google Cardboard ont rendu tout simple et ingénieux, décidant d'utiliser un smartphone ordinaire pour transférer des images en trois dimensions. Avant cela, il existait de nombreuses options pour des lunettes équipées de divers écrans, mais la résolution de la matrice de ces écrans était très modeste. De plus, ces verres étaient très chers. Et le Google Cardboard proposé est un morceau de carton ordinaire avec deux lentilles, dans lequel il reste à mettre votre téléphone. Cela suffit pour voir une image en trois dimensions de vos propres yeux.


Un autre développement du carton a été l’émergence de Daydream - l'appareil ne diffère pas de son prédécesseur par le principe de fonctionnement, mais, par rapport à lui, présente des avantages importants. En particulier, le matériau à partir duquel Daydream est fabriqué n'est plus seulement du carton, il est de bien meilleure qualité. Un autre avantage incontestable est le support logiciel de Daydream lui-même.

L'écran de n'importe quel téléphone possède un ensemble de fonctionnalités, comme les lentilles en carton. Le carton classique est marqué sous la forme d'un code QR, et avant d'y mettre votre téléphone, vous avez dû lire ce code afin d'entrer les paramètres de l'objectif dans le téléphone. En combinant les paramètres, l'appareil pourrait calculer comment afficher l'image afin qu'elle vous atteigne avec une distorsion minimale.

Lorsque vous utilisez Daydream, il suffit de placer l'appareil pour qu'il lise les paramètres des lunettes elles-mêmes à l'aide de NFC. L'étiquette elle-même est cachée dans la couverture arrière.

Le carton a également un petit panneau de commande; de nombreux fabricants ont sorti des analogues du carton et de leurs télécommandes, les plus divers: inertiels, gravitationnels, juste des joysticks. Daydream possède deux boutons et un petit pavé tactile qui vous permet de déplacer des objets dans l'espace ou de vous déplacer en déplaçant votre doigt. Le carton n'avait qu'un seul bouton, sur le boîtier des lunettes elles-mêmes, qui enregistrait simplement la presse et transmettait ces informations à l'écran du téléphone.

Le carton peut être utilisé avec n'importe quel téléphone qui tient physiquement dans la boîte elle-même et est très bon marché. Pour travailler avec Daydream au moment de la rédaction, seuls trois téléphones ont été certifiés: ZTE Axon 7, Google Pixel et Motorola Moto Z, ils prévoient d'y ajouter de nouveaux modèles, mais pour utiliser Daydream, un système d'exploitation d'au moins Android 7.0 est requis.

Interaction avec la réalité virtuelle


La partie la plus intéressante commence lorsque nous ne regardons pas seulement une image en trois dimensions (la 3D peut également être vue à la télévision), mais nous commençons à tourner la tête.

Tout téléphone moderne est équipé de capteurs microélectromécaniques. Ce sont des appareils microscopiques dans lesquels l'électronique et les petites pièces mécaniques mobiles sont collectées sur un cristal, ce qui permet de suivre divers facteurs externes. Tout le monde sait probablement ce qu'est un gyroscope - un appareil avec lequel vous pouvez connaître l'angle de rotation. Dans le cas des capteurs MEMS, le gyroscope ne donne pas l'angle de rotation lui-même, mais la vitesse angulaire. À l'intérieur, il y a un petit élément qui se déplace sous l'influence de la force de Coriolis (j'espère que vous vous souvenez de ce que c'est, du cours de physique). Cela vous permet de connaître la vitesse angulaire, et déjà en l'intégrant, nous pouvons déterminer l'angle de rotation. Certes, cette méthode est mauvaise en ce que, en tournant le téléphone dans des directions différentes, nous ne serons probablement pas en mesure de revenir au même point où nous étions à l'origine.

L'accéléromètre est le deuxième capteur intéressant. Il détermine les forces agissant sur le téléphone, en particulier l'accélération de la gravité. Dans un état calme, il montrera l'accélération habituelle de la gravité sur notre planète, ce qui correspond à environ 9,8 m / s². Mais, si nous commençons à déplacer ou faire pivoter le téléphone, nous lui donnerons une accélération. Par conséquent, à ces moments, le capteur ne donnera pas les lectures nécessaires. Ce n'est que lorsque nous arrêterons de bouger que le système se calmera et que nous pourrons reconnaître la force dirigée vers la terre. Comme vous pouvez le voir, afin de déterminer simplement la position du téléphone dans l'espace, aucun des deux capteurs que nous avons mentionnés ne convient.

Cependant, étant donné que le gyroscope «s'enfuit» avec le temps, et l'accéléromètre «ne s'enfuit» qu'au moment de la rotation, il est possible de calculer la position de l'appareil en utilisant diverses méthodes mathématiques, par exemple le filtre de Kalman. Si vous avez programmé pour Android, vous avez probablement remarqué que dans le SDK Android lui-même, parmi la liste des capteurs, il y a non seulement un accéléromètre et un gyroscope, mais aussi ce que l'on appelle TYPE_ORIENTATION. Ce n'est là qu'une de ces méthodes mathématiques qui calculent la position du téléphone en utilisant les informations des deux capteurs. Ils sont eux-mêmes, en règle générale, assemblés sur un microcircuit, très souvent un capteur de champ magnétique, c'est-à-dire une boussole, est en outre placé dessus.

Ceux qui s'intéressent aux quadrocoptères, ont probablement remarqué que l'inscription "baromètre" figurait sur les nouveaux modèles. Evidemment, cet appareil n'est pas destiné à l'analyse météo. Un tel capteur est utilisé pour mesurer la pression atmosphérique afin de déterminer la hauteur. Il fonctionne également dans le téléphone et nous pouvons calculer son mouvement le long de l'axe vertical au centimètre près. Naturellement, les lectures doivent être lissées à l'aide d'un filtre.


Pratique


Google a publié le SDK Google VR pour ses appareils Cardboard et Daydream. Ce dernier est un ensemble de composants qui nous aident à développer des applications spécifiquement pour afficher la réalité 3D, il est disponible sur iOS et Android. Ce SDK facilite la création d'applications pour la réalité virtuelle et augmentée.

Google VR SDK s'occupe de tout le travail avec les capteurs, grâce à lui, nous n'avons pas besoin de calculer les quaternions pour comprendre comment faire tourner une scène dans OpenGL lorsque nous tournons la tête. Mettez simplement View sur l'activité, et le SDK fera tout seul.

Jetons un coup d'œil à la façon dont nous pouvons rapidement démarrer avec le SDK Google VR et comment créer une application Android simple. Tout d'abord, vous aurez besoin d'Android Studio préinstallé.
Téléchargez le SDK depuis le dépôt git officiel. La documentation du SDK est disponible ici .

Maintenant, ouvrez simplement le répertoire racine du référentiel à l'aide d'Android Studio. Vous y trouverez des exemples qui peuvent être compilés à partir de la source et exécutés sur votre appareil Android. Le projet a immédiatement des configurations pour exécuter des exemples.



Daydream possède également son propre petit contrôleur, avec lequel le SDK prend également en charge. Il dispose d'un ensemble de fonctions de rappel et vous pouvez utiliser ce contrôleur en toute sécurité dans vos conceptions. Il existe un exemple spécial dans le SDK 'sdk-controllerclient'.

Pour la perception la plus réaliste, je voudrais sentir le son, et pour qu'il soit clair d'où il vient, où il est dirigé et dans quel environnement il est distribué. Il y a un GvrAudioEngine dans la bibliothèque pour cela, qui ressemble à une bibliothèque audio ouverte simplifiée ou à un son Direct3D. Il suffit de communiquer les coordonnées de la source sonore dans l'espace, et la bibliothèque elle-même mixera le son selon vos besoins. Vous pouvez spécifier divers matériaux de l'environnement, par exemple, vous pouvez créer une scène sur laquelle différentes musiques sont lues à partir des colonnes de droite et de gauche, et vous pouvez spécifier davantage de sources sonores.

L'exemple 'sdk-treasurehunt' est un jeu assez simple implémenté sur OpenGL pur. Il utilise également GvrAudioEngine pour donner au jeu des effets sonores surround.

Il existe un SDK Google VR et un merveilleux, quoique petit, ensemble de vues que vous pouvez intégrer dans vos applications. En particulier, VrPanoramaView est un composant permettant d'afficher des photos panoramiques à 360 degrés et un affichage stéréographique. Vous pouvez simplement mettre la photo dans les ressources de l'application et appeler VrPanoramaView.loadImageFromBitmap () sur une seule ligne pour prendre cette image particulière et l'afficher. En conséquence, vous obtenez un composant prêt à l'emploi que l'utilisateur peut voir dans son application - c'est une vue normale, la même que tout le monde dans Android.

Vous pouvez afficher plusieurs de ces composants à la fois sur un seul écran, vous pouvez en afficher un en plein écran, et en même temps, pour basculer entre les lunettes et l'affichage simple, il vous suffit de cliquer sur le bouton qui sera dessiné par la bibliothèque. Il est également possible d'ajouter de la vidéo à l'aide du composant VrVideoView. Et si vous en avez assez de regarder à un moment donné, vous pouvez rembobiner la vidéo.

Deux exemples du SDK «sdk-simplepanowidget» et «sdk-simplevideowidget» montrent à quel point il est très simple de créer des applications avec de tels objets intégrés.

La question se pose, où trouver de telles vidéos et images? Mais certaines entreprises ont déjà commencé à produire des caméras sous la forme de petits bibelots avec des lentilles des deux côtés. Avec leur aide, vous pouvez prendre des photos panoramiques à 360 degrés - ils peuvent même les connecter indépendamment eux-mêmes - mais la vidéo ne fonctionnera pas. Pour ce faire, vous aurez besoin d'une conception assez coûteuse et d'un logiciel spécial qui peut coller les images résultantes et les transformer en contenu adapté à l'affichage en réalité virtuelle.



La solution Odyssey comprend 16 caméras synchronisées.


Candidature


Où les technologies décrites peuvent-elles être appliquées? La première option est évidemment un jeu. En règle générale, OpenGL sont des jeux de tir et d'autres jeux où nous avons besoin d'un sentiment de profondeur. Netflix a récemment lancé un service d'affichage de contenu 3D, cette bibliothèque peut également vous aider à écrire une sorte de solution d'affichage de film personnalisée.

Vous pouvez permettre aux clients du magasin utilisant des téléphones de voir leur description supplémentaire à côté des étiquettes de prix.

Vous pouvez les appliquer dans les ventes immobilières. Rencontrer l'acheteur et le vendeur n'est généralement pas pratique. Et avec l'aide d'une telle vidéo, il sera beaucoup plus facile pour l'acheteur d'évaluer à l'avance s'il doit même aller voir tel ou tel objet.

Les musées sont un autre endroit idéal pour appliquer la technologie. Dans les musées modernes, à l'intérieur du hall, il y a souvent des ordinateurs à travers lesquels vous pouvez accéder à des informations supplémentaires, écouter quelque chose. Mais ces ordinateurs sont régulièrement occupés, et le téléphone est toujours à portée de main pour tout le monde, et il est capable d'ajouter des éléments de réalité augmentée à l'exposition. La bibliothèque fonctionnera avec presque tous les modèles d'appareils et, si vous le souhaitez, nous pouvons transmettre plus d'informations aux visiteurs du musée.


Voici une petite annonce Google qui montre à quoi ressemble Google Earth dans des lunettes de réalité virtuelle. Vous pouvez regarder de telles vidéos sur un moniteur ordinaire, mais les mêmes images dans des verres auront l'air volumineuses. Les mouvements dans l'espace sont effectués à l'aide de la télécommande Daydream.Pour certains téléphones, il est possible d'utiliser le baromètre et de se déplacer simplement en tournant la tête.

Une autre idée très intéressante de l'utilisation de ces technologies est l'impression 3D.

Une startup a suggéré aux utilisateurs d'utiliser la réalité augmentée pour créer des modèles avec tout autre outil de modélisation. En utilisant un contrôleur conventionnel, vous ne pouvez pas obtenir de modèles de haute précision - l'erreur sera très importante. Mais nous pouvons créer un petit souvenir à l'aide de tels contrôleurs et le commander directement à partir de l'application pour l'imprimer sur une imprimante 3D. Cette idée est bonne et sera monétisée très bientôt, d'autant plus que les imprimantes pour de tels produits sont de moins en moins chères.

Source: https://habr.com/ru/post/fr401809/


All Articles