InTechVR - Introduction
Préface
InTech s'intéresse au secteur naissant de la réalité étendue. La réalité étendue est suffisamment mature pour permettre la réalisation de solutions de qualité avec des applications dans de nombreux domaines : santé, industrie, culture... L'équipe d'Innovation et Développement d'InTech s'est déjà penché sur ces technologies.
Ce site documente le travail réalisé lors de notre stage (Dorian NICOLAS, Alfred PERNY), sous la supervision de Kevin THIZY et Marc-Antoine BENOIST, au sein d'InTech. Vous y trouverez la description du travail réalisé, le fonctionnement de nos réalisations, les problèmes rencontrés et autres informations qui pourraient se révéler utiles pour de futurs projets.
Notre mission est de mettre au point deux démonstrateurs qui mettent en oeuvre des technologies de réalité étendue :
- Une solution d'interaction à distance, qui permet la communication entre des utilisateurs connecté depuis différentes plateformes, notamment VR, au travers de modules d'interaction.
- Un studio de production virtuelle, outil de production vidéo qui exploite les technologies de réalité étendue pour enrichir le tournage.
Ce faisant, on développe une base de connaissance afin de faciliter les prochaines réalisations et on présente des applications potentielles de ces technologies.
Réalité étendue
Avant d'aborder le travail réalisé, il convient de rapidement définir la notion de réalité étendue, qui a motivé ce sujet.
Sous la dénomination large de réalité étendue (XR), on retrouve toutes les applications qui modifient la perception du réel par un affichage virtuel. Sous ses formes les plus connues, on la qualifie de :
- Réalité augmentée (AR), qui consiste à ajouter des filtres sur le réel, il s'agit d'enrichir ou modifier notre perception. [IMG VR]
- Réalité virtuelle (VR), qui vise à substituer entièrement l'environnement réel par un environnement virtuel, il s'agit de maximiser l'immersion. [IMG AR]
- Réalité mixte (MR) ou hybride, entre-deux qui permet l'interaction entre les éléments réels et les éléments virtuels projetés dans l'environnement. [IMG MR]
Chaque forme a ses atouts distincts mais elles se basent sur des technologies similaires.
Les démonstrateurs explorent ces différentes formes d'XR : la solution d'interaction intègre des utilisateurs VR, le studio de production virtuel utilise des principes d'AR/MR pour ses fonctionnalités.
Déroulement
Après une première phase d'appropriation du sujet et de découverte des technologies, nous sommes rapidement passés à la réalisation de prototypes correspondant aux features qui nous paraissaient judicieuses.
[Schema roadmap]
On cherche d'abord comment implémenter les modules pour la solution d'interaction à distance. Les trois premières features qu'on souhaite implémenter sont : le partage d'écran, le streaming de caméra et le dessin collaboratif.
A force d'itération sur ces prototypes on monte en compétences et on parvient à la création de modules fonctionnels et réutilisables d'un projet sur l'autre. On les réunit dans un premier démonstrateur, il permet aux utilisateurs de se réunir via le web ou l'application Unreal, de partager leur caméra et de dessiner sur des surfaces virtuelles communes.
#TODO : Ajouter des refs vers d'autres proto pour les contextualiser.
Technologies
Moteur de jeu
Les solutions d'xR puissantes sont pour la plupart basées sur des moteurs de jeu. En effet, ceux-ci sont adaptés à la gestion d'interactions et d'environnements virtuels.
Ces moteurs sont nombreux, parmi les plus fréquemment utilisés on peut en isoler deux : Unreal Engine et Unity. Ce sont des moteurs très flexibles et puissants, conçus pour supporter des environnements 3D.
Unreal Engine propose deux langages : le C++, orienté objet et octroyant beaucoup de contrôle ; le Blueprint, langage de programmation visuelle dont les fonctions et variables se présentent sous la forme de blocs à relier, très pratique pour prototyper rapidement. C'est le moteur de jeu de loin le plus utilisé pour l'application de l'XR en production virtuelle, notamment parce qu'il est adapté à des graphismes de haute fidélité. C'est d'autant plus vrai dans sa version 5, la plus récente.
Quant à Unity, il propose le langage C#, orienté composant et flexible. Il est adapté pour une grande variété d'applications, notamment mobile et VR. Il est réputé plus simple à prendre en main qu'Unreal et sa communauté est plus active.
Nous avons fait le choix d'utiliser Unreal Engine. Ils sont certainement tous deux adaptés à notre mission, mais les points forts d'Unreal en terme de qualité graphique et de flexibilité des langages lui donnent l'avantage. De plus, l'équipe I&D d'InTech est plus familière avec ce moteur.
Matériel de capture
Une part non négligeable du travail à réaliser nécessite de la capture et du traitement vidéo. Pour prendre ces vidéos, nous avons accès à deux caméras en plus de la caméra intégrée de nos machines : une caméra Kinect XBox One et une caméra OAK-D Lite.
Elles sont en réalité chacune composée de plusieurs caméras : une caméra couleur et deux caméras qui mesurent la profondeur. La caméra Kinect dispose aussi d'une caméra infrarouge. La caméra OAK-D peut embarquer des modèles d'intelligence artificielle pour effectuer un pré-traitement en tant réel sur les vidéos qu'elle capture.
En exploitant la variété d'informations que ces caméras fournissent on peut réaliser des traitements plus fins que ce que permet une caméra simple.
De plus, ces outils de capture ont dans leurs composants un réseau de neurones qui permet de faire du traitement vidéo par intelligence artificielle. On appelle ça la vision par ordinateur ou vision artificielle. Il existe des modèles entraînés (inférence) mais il est aussi possible d'utiliser les réseaux de neurones pour créer son propre modèle (apprentissage).
Nous n'allons durant ce stage pas apprendre à une intelligence artificielle d'utiliser tel modèle mais nous allons majoritairement utiliser des modèles d'inférence surtout spécialisés dans la découpe d'individu pour le retrait de fond d'écran. De cette façon, on peut aisément intégrer un individu dans une scène 3D à partir d'une caméra, ce qui est un des objectifs donné durant ce stage. D'ailleurs, il existe un prototype dédié au détourage de fond d'écran ici : retrait du fond d'écran.
Equipement VR
Au cours du stage nous sommes amenés à réaliser des fonctionnalités utilisables en VR. Pour les tester, un casque de réalité virtuelle Quest 2 est à notre disposition. C'est un casque standalone : tous les capteurs nécessaires au suivi de l'utilisateur sont inclus dans le casque lui même et, de la même manière, tout les calculs sont réalisés sans passer par un ordinateur externe. Ces avantages se font au prix de moindres performances et d'une plus faible qualité visuelle.
Un défaut particulier du casque est sa dépendance à Facebook/Méta, dont il est nécessaire d'avoir un compte.
Documentation
Afin de faciliter la transmission du savoir acquis lors du stage et l'itération sur le travail effectué, nous réalisons ce site de documentation.
Chaque section du site correspond à un prototype d'une feature ou à l'expérimentation de technologies. Nous présentons chacun d'eux succintement avant d'en détailler les aspects techniques et les difficultés.