Dans ce projet la réalisation d’une application VR est requis. Utilisation de Unity3D et d’un Oculus Quest

Le projet intitulé REVEIL, a pour but de vérifier certaines hypothèses concernant l’éveil d’une personne comateuse. Dans le cas où un réveil serait possible, l’étude réaliser dans le cadre de ce projet a pour but de vérifier si le réveil d’une personne comateuse serait facilité/amélioré/accéléré dans un environnent familier et s’il est possible de créer ce même phénomène dans un environnent simulé par VR. Pour ce faire, j’ai été chargé de réaliser une application permettant l’immersion dans un environnent familier.
Les décisions faites au long de ce projets seront exposés dans ce compte rendu, avec les raisons pour et contre à certaines alternatives.
Le projet devra fonctionner dans un casque de VR tel que l’oculus Quest (casque de VR autonome portable). L’application doit aussi pouvoir intégrer de façon simple, des images, vidéos des différents patients étudier. Il faudra aussi que l’application soit un minimum stable, et qu’il n’y ait pas de défaut pouvant casser l’immersion (saccades, erreurs, etc.). Il faut aussi que les solutions trouvées soit peu onéreuse, et peu chronophages étant donné que je suis seul sur le projet.
Le choix du moteur 3D fut assez simple : le projet n’a pas besoin de beaucoup de fonctionnalité complexes, juste charger et afficher des images, dans un environnent 3D de VR. Néanmoins il est impossible de faire fonctionner de la VR sans librairie spécialisé. L’un des premiers choix qui permettait la plus grande flexibilité aurait pu être de choisir de partir d’une librairie telle que openVR ou encore les driver Oculus. Ce qui aurait permis une adéquation parfaite quoi que fastidieuse.
Une autre solution aurait été Unreal Engine 4, proposant un environnent de base pour la VR en tout genre. Malheureusement, je ne connais pas assez bien ce moteur de jeux pour pouvoir prétendre réaliser cette application sur ce dernier. De plus, si j’avais choisi de développer ce projet sur ce moteur, il aurait fallu me débrouiller sans m’attendre à de l’aide de qui que ce soit.
Enfin la solution retenue a été Unity3D, car déjà connu de moi et du professeur Richard, grâce à ce moteur de jeu, nous pouvions déjà savoir comment allait fonctionner là plus part des systèmes. De plus ma familiarité avec ce moteur de jeu allait rendre le développement plus simple.
L’environnent devra contenir environ 3-4 images/vidéos de souvenirs marquant du patient, afin de simuler un environnent familier. Pour ce faire, il faut pouvoir charger les photos/vidéos depuis un ordinateur/ ou une source de média, et les afficher devant l’utilisateur afin qu’il puisse les observer sans avoir à trop se pencher. Le fait que le patient serait allongé dans une direction devrai être pris en compte. Le fait que le patient puisse avoir différent type de photos/vidéos devais aussi être pris en compte. Et enfin, la facilité de mettre le system en place, n’était pas à prendre à la légère.
Dans le cas d’un casque Oculus Quest ou Go (autonome), le chargement des médias externe ce fait comment sur un téléphone Android. Les casques de VR d’oculus fonctionnent avec une version modifiée de Android, permettant ainsi aux développeurs, et ingénieur de se concentrer sur l’optimisation, et le perfectionnement du système, ainsi que de réduire les couts. (Pas besoin de recréer un système pour gérer la mémoire d’un processeur d’architecture ARM pour développer un casque de VR). Le fait que l’oculus fonctionne sous Android ajoute en plus une question de compatibilité ainsi que de développement de driveur facilité, ce qui permet alors, de ne pas avoir à réécrire tout une librairie, ou à adapter les librairies existantes. Ainsi les moteurs de jeux permettant l’exportation vers la plateforme Android étant déjà préparé pour le développement pour Oculus.
L’importation d’un media dans Unity peut se faire de plusieurs façons, l’une étant de l’importer dans l’éditeur, et de l’afficher directement sur la plaque/ le Quadrilatère prévu à cet effet. Cependant cette méthode nécessite la connaissance et l’installation entière de l’éditeur Unity. Ce qui peut être fastidieux. En principe cette façon de faire est toujours nécessaire. Car il faut aussi avoir un média au cas où aucun n’a été trouvé. Qui indiquera qu’une erreur s’est produite durant l’importation.
La seconde façon de faire est de l’importer depuis l’intermédiaire du logiciel SideQuest, permettant d’administration d’un Oculus Quest depuis n’importe quel ordinateur. Ainsi que l’importation et la gestion des fichiers dans l’Oculus. Ici une difficulté fu rencontrer, en effet l’importation de fichier durant le temps d’exécution de l’application est quelque chose qui n’est pas intuitive dans les applications créer avec Unity. Or il faut pouvoir choisir facilement les fichiers depuis Unity, comme dans un navigateur serait le mieux. Cette configuration fu fastidieuse, notamment à cause de certaines incompatibilités des différentes méthodologies d’importation de fichier dans les différentes version d’Unity (certaines solutions était valide pour des versions datant de 2011, d’autres de 2015) la solution semble être fastidieuse, en passant par une émulation des fonctions de Java. Ne permettant pas ainsi l’ouverture de flux de données autres que de textes. Il ne semble pas possible d’importer de fichier média durant l’exécution d’une application Unity sur Android. Les fichiers Textes eux par contres sembles importables, c’est pourquoi un travail supplémentaire est nécessaire.
L’application fonctionne, mais l’édition de l’application au cas par cas en passant par l’éditeur, est la seule solution envisageable actuellement. Mais l’adaptation des photos et vidéos est faisable par l’intermédiaire. L’application fonctionne sur mon Oculus Quest, mais le développement est fastidieux à cause de la non-compatibilité de mon ordinateur fixe avec la VR. Je dois prendre 30 minutes pour compiler, exporter, et tester chaque itération ce qui peut ralentir énormément le développement. Je considère acheter une meilleur carte graphique pour me permettre d’utiliser la fonctionnalité de mon Oculus Quest : l’Oculus Link.