NUI / UX

Article

L’AR et la manière avec ARCore et ARKit

La mixité c’est bien…

Avec Hololens, un terminal autonome ayant la capacité d’analyser et de se situer dans son environnement proche, Microsoft a ouvert la voie à un nouveau type de Réalité Augmentée : la Réalité “Mixte”.

Google et Apple ont répliqué récemment (fin 2017) dans ce domaine en proposant ARCore et ARKit : une adaptation simplifiée de cette technologie pour les terminaux mobiles.

Je vous propose, dans cet article, un aperçu de ces deux solutions.

La technologie, en théorie…

Que se soit avec ARCore (cf Présentation d’ARCore par Google) ou ARKit (cf Présentation d’ARKit par Apple) le principe est le même : il s’agit d’exploiter les différents capteurs de votre smartphone pour analyser au mieux l’environnement 3D proche de l’utilisateur. Cette technologie est ainsi appelée sans marqueur (ou “Marker Less”) car elle permet d’intégrer des contenus 3D de manière réaliste sans artifice, et ce contrairement aux solutions comme Vuforia, AR.js ou OpenCV qui analysent les images en 2D captées par le smartphone pour y trouver et exploiter des marqueurs bien spécifiques (QRCode, images, formes, visages, etc.).

ARCore et ARKit se basent sur trois concepts principaux :
– L’analyse du mouvement (ou “Motion Tracking”), pour permettre de positionner l’utilisateur (ou plus exactement son smartphone), en temps réel, dans un référentiel fixe. Pour ce faire un algorithme combine les mesures effectuées par le gyroscope et l’analyse de la position de plusieurs points caractéristiques (ou “Feature Points”) pour calculer la position exacte du terminal dans l’espace.

Motion tracking

Motion tracking

– La compréhension spatiale (ou “Spatial Understanding”), pour reconnaître et schématiser l’environnement à proximité de celui-ci. Une nouvelle fois il s’agit d’utiliser les points caractéristiques pour identifier les surfaces horizontales filmées par le smartphone.

Environment understanding

Environment understanding

– et enfin la mesure de la lumière environnante (ou “Light Estimation”) pour évaluer les conditions de lumières permettant un rendu réaliste des objets 3D présentés à l’utilisateur.

Light Estimation

Light Estimation

Et en pratique avec Unity 3D

L’ARCore parfait

ARCore est le digne successeur de feu Tango, la solution est pour le moment toujours en preview. L’ensemble des instructions permettant de tester ARCore sont disponibles sur la page suivante : Débuter avec ARCore avec Unity 3D.

De mon côté j’ai utilisé les pré-requis suivants pour réaliser mes tests  :

(In)compréhension spatiale

J’ai dans une premier temps testé la capacité d’ARCore à détecter les surfaces horizontales.

Premier constat, le traitement est un peu en « mode diesel » : il doit cumuler un nombre important de “feature points” avant de commencer à reconnaître les différents plans. Comme vous pouvez le constater dans la vidéo ci-dessous (avec un poney dedans), la technique utilisée n’est pas très précise. Le sol est généralement bien reconnu et rapidement étendu, mais les zones plus petites, comme une table basse ou un fauteuil, sont soit totalement ignorées soit surévaluées en terme de taille. De plus, certaines surfaces (les lisses et uniformes) sont totalement oubliées car elles ne contiennent pas de texture permettant de générer suffisamment de points caractéristiques.

Au début de la vidéo, j’ai ajouté deux séquences présentant la découverte des points caractéristiques et la reconnaissance des formes qui permettent à ARCore de délimiter les surfaces horizontales identifiées.

Ancrer dans la réalité

Pour la partie ancrage, les résultats sont plutôt intéressants, car les objets placés dans la scène sont relativement stables, malgré les mouvements parfois saccadés quand on tient le smartphone.

 

L’ombre et la lumière

Je me suis, dans un deuxième temps, intéressé à la gestion des ombres et de la lumière. Rien de tel qu’un peu d’ombre pour intégrer de manière plus réaliste un objet virtuel dans le réel !

La fonction n’est pas à proprement parlé directement disponible dans ARCore… Pour me faciliter la tâche, j’ai utilisé une extension pour Unity 3D (disponible ici) qui permet la projection des ombres sur les surfaces horizontales reconnues par ARCore.

Il faut en outre un composant “Directional Light” dans votre scène avec le paramétrage suivant :

Réglable de la lumière pour intégrer des ombres

Réglable de la lumière pour intégrer des ombres

Le résultat obtenu avec ces réglages est visible au début de la vidéo ci-dessous.

J’ai également testé la fonction d’adaptation de l’intensité lumineuse.

ARCore met à disposition une API permettant d’obtenir l’intensité lumineuse ambiante. Il suffit ensuite d’utiliser cette variable pour adapter l’intensité des couleurs du sujet via un shader spécifique. Dans la seconde partie de la vidéo vous verrez ainsi que mon double numérique (merci à notre partenaire Silkke) est beaucoup plus sombre sous mon bureau qu’au milieu de l’open space.

L’AR en KIT

Du côté d’Apple, la technologie est très similaire. Pour l’essentiel, nous avons également droit à une fonction permettant d’identifier les surfaces, un algorithme pour situer le smartphone dans cet environnement et enfin une fonction d’estimation de l’intensité lumineuse ambiante.

Pour un guide de démarrage, je vous conseille de vous référer à la FAQ du plugin Unity.

Du côté des pré-requis, voici ceux que j’ai utilisés pour mes tests :

  • un iphone 6S sur iOS 11.2.5 (et un iphone X pour le test de face tracking)
  • Unity 3D version 2017.3f03
  • Le plugin unity ARKit
  • un MAC sur High Sierra avec XCode 9.2

Les deux vidéos ci-dessous présentent rapidement des tests équivalents à ceux réalisés pour ARcore.

Dans la première, vous pouvez observer les capacités d’ARKit à découvrir les surfaces planes horizontales.

On constate qu’ARKit s’en sort légèrement mieux qu’ARCore pour les petites surfaces et semble mieux distinguer les différentes zones/hauteurs. En revanche, même si ce n’est pas visible dans cette vidéo, ARKit n’est pas plus (voir même un peu moins) réactif qu’ARCore. On doit, en effet, bien souvent patienter un peu avant que le smartphone n’identifie une ou plusieurs surfaces.

Concernant la gestion des ombres et de la lumière, le plugin unity d’ARKit a l’avantage d’intégrer directement plusieurs fonctions “toutes faites”. Elles permettent notamment de gérer l’occlusion, les ombres et l’adaptation de l’intensité des couleurs en fonction de la lumière ambiante.

Il faut aussi remarquer la fonction de « face tracking » intégrée à ARKit qui permet, dans un tout autre style, de créer son propre animoji. Même si je n’ai pas encore testé cette fonctionnalité dans tous les sens, j’avoue m’être bien amusé avec les scènes fournies avec le plugin unity :

Conclusion

Avec ARKit et ARCore, le domaine des réalités “mixtes” se démocratise. Ces kits permettent vraiment d’imaginer une large adoption à moyen terme dans de nombreux domaines ! Il restera évidemment à trouver les bons usages, qui (eux seuls) donneront une véritable valeur ajoutée à ces technologies. Dans le cas contraire, tout cela ne restera qu’un nouveau gadget à laisser reposer au fin fond du smartphone 😉

Nouveau commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Solve : *
29 − 12 =


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.