PROTOTYPE Environnement de développement
Environnement de développement
Avant de commencer à développer, il convient de se demander comment et avec quel logiciel le faire. Il existe en effet de nombreux environnements de développement intégré (IDE) permettant de créer des applications Android (dans la mesure où la donnée requiert de développer une application pour ce système d’exploitation) : Android Studio, Eclipse, IntelliJ IDEA, etc. Étant donné que nous sommes ici face à un cas particulier – développer pour Google Cardboard – il est logique de tout d’abord se renseigner sur le site Internet officiel du device11 pour suivre les guides de démarrage destinés aux développeurs. Google explique sur son site qu’il existe deux SDK différents pour développer sur Cardboard : le premier est un SDK Cardboard pour Android, le deuxième un SDK Cardboard pour Unity (Google, 2015). Nous détaillerons ces deux kits de développement et leurs IDE respectifs dans les points suivants.
Android Studio
Dans un premier temps, nous avons téléchargé Android Studio. Il s’agit de l’environnement de développement intégré le plus courant, il s’agit de surcroît de celui que Google recommande pour le développement d’applications Android. Comme tout IDE récent, il aide au développement grâce au système d’auto-complétion, d’une hiérarchie de projet, de différentes couleurs selon le type de variables, de documentation ainsi que d’autres fonctionnalités fort utiles. Nous nous sommes très vite retrouvés confrontés à un problème : contrairement au développement d’applications Android « classiques », nous avons ici besoin d’une interface visuelle bien plus poussée pour y importer des vidéos à 360 degrés et ajouter des interactions à celles-ci. Un simple aperçu du design de l’application tel que celui proposé par Android Studio ne suffit pas. Même si Google explique de manière succincte dans un tutoriel basique comment développer pour Cardboard sur Android Studio, nous nous rendons vite compte que nous manquons d’éléments théoriques et pratiques pour créer des objets en trois dimensions en Java12 ou pour importer et lire des vidéos dans Android Studio. Nous décidons donc de changer d’environnement de développement et de tester celui destiné aux créateurs de jeux vidéo et d’applications à contenu visuel pour lequel Google propose également un SDK : Unity 3D.
Unity 3D
Unity 3D (communément appelé Unity) est une plate-forme de développement pour la création de jeux et d’expériences interactives en 3D et en 2D (Unity – Game engine, tools and multiplatform, 2015). Ce moteur de jeu est souvent utilisé pour la réalisation de jeux vidéo par des professionnels. Le SDK Cardboard qui lui est destiné permet ainsi d’adapter une application Unity 3D existante pour la réalité virtuelle ou de créer, en partant de rien, une expérience de réalité virtuelle à l’aide de cette plate-forme. Grâce à lui, les applications, qui peuvent afficher du contenu en 3D avec rendu binoculaire, sont capables de réagir aux mouvements de la tête et de les enregistrer. De plus, le SDK adapte automatiquement l’application aux caractéristiques physiques de Cardboard, inclut la configuration stéréo automatique pour le modèle de Cardboard défini et corrige la distorsion par rapport aux lentilles intégrées (Google, 2015).
Installation des composants
Avant de commencer, il est bien sûr essentiel d’avoir Java ainsi que le JDK (soit le SDK pour développer en Java) préalablement installés sur son ordinateur. Sans cela, il sera impossible de procéder à l’installation du SDK Android. Depuis la page de téléchargement pour développeurs Android, il est possible de télécharger soit l’environnement Android Studio complet, soit uniquement le SDK (appelé à cette occasion stand-alone SDK tools). Ce dernier est suffisant pour notre cas, étant donné que nous avons fait le choix de ne pas travailler sur Android Studio, mais sur Unity. Une fois le téléchargement et l’installation terminés, le SDK Manager se lance automatiquement (pour autant que la case à cocher n’ait pas été désactivée). Depuis l’Android SDK Manager, il est nécessaire de sélectionner et d’installer au minimum les éléments suivants : – Android SDK Tools – Android SDK Platform-tools – Android SDK Build-tools (de la dernière version) – SDK Platform de la version d’Android désirée
Développement
Dans le but de détailler au maximum les principaux points du développement de notre prototype sur Google Cardboard, nous montrerons en premier lieu comment importer le SDK Cardboard pour Unity. En deuxième lieu, nous détaillerons le mode d’importation des vidéos à 360 degrés dans Unity. En troisième lieu, nous expliquerons comment changer de scène (et donc de vidéo) dans Unity. Enfin, en dernier lieu, nous exposerons comment chaque type d’interaction précédemment défini peut (ou ne peut pas) être ajouté à un projet Cardboard, à savoir pour notre cas pratique les fuse buttons, une interaction découlant de l’action de l’aimant latéral de Cardboard et le contrôle par la voix.
Importation du SDK Cardboard pour Unity
La première étape est d’importer le SDK Cardboard pour Unity téléchargé précédemment. Pour cela, dans le menu, nous choisissons Assets > Import Package > Custom Package… et sélectionnons le fichier CardboardSDKForUnity.unitypackage, tout en confirmant à l’aide du bouton Import. Dans l’explorateur de projet (au bas de l’écran), un dossier Cardboard est désormais apparu parmi les assets16 . Une fois ouvert, nous constatons qu’il est composé de six sousdossiers, dont un appelé Prefabs. Dans ce dernier se trouve un fichier nommé CardboardMain.prefab. Il faut alors le glisser-déposer dans la hiérarchie (menu latéral sur la gauche) pour qu’Unity affiche les éléments à la manière de Cardboard, à savoir avec deux angles de vue similaires (un pour l’œil gauche et un pour l’œil droit). Le sous-dossier CardboardMain/Head/Main Camera affiche d’ailleurs ces deux caméras. L’ancienne Main Camera, à la racine du projet, peut désormais être supprimée. Il est possible d’ajouter toutes sortes d’éléments visuels en trois dimensions à notre application pour Cardboard. Néanmoins et puisque nous ne créerons pas d’arrière-plan, de fond, de sol ou d’objets 3D pour implémenter notre cas pratique, ce dont nous avons besoin un premier lieu, c’est d’importer notre première vidéo à 360 degrés.
Importation de vidéos à 360 degrés
L’un des aspects fondamentaux et a priori simple à implémenter s’est finalement révélé l’un des plus compliqués : importer une vidéo à 360 degrés et faire en sorte que celle-ci soit entièrement visible dans une application mobile de réalité virtuelle optimisée pour Cardboard, avec bien sûr la possibilité pour l’utilisateur de regarder autour de lui pour ne voir que la vidéo et aucun autre élément. En effet, les problèmes suivants sont survenus : – premièrement, l’importation de vidéos dans un projet Unity n’est possible qu’avec la version professionnelle du logiciel – deuxièmement, la technique couramment utilisée pour lire des fichiers vidéo dans Unity, MovieTexture, ne fonctionne pas pour un déploiement mobile, mais uniquement pour un logiciel/jeu visant les plates-formes PC ou Mac (il existe cependant depuis peu la fonction Handheld.PlayFullScreenMovie() permettant de contourner ce problème) – troisièmement, même la version professionnelle d’Unity ne permet pas de travailler avec des vidéos à 360 degrés. Pour pallier à ces différents soucis, nous avons opté pour un plugin disponible au téléchargement sur l’Asset Store (la boutique d’assets d’Unity) : Easy Movie Texture17 . Ce dernier ne nécessite pas la version professionnelle (pour autant que la version 5 ou plus récente d’Unity soit installée) et peut gérer les vidéos à 360 degrés visant à être déployées sur Android ou, dans une moindre mesure, sur iOS.