La réalité augmentée et la modélisation 3D avec ARToolkit
Introduction
Lors d’un temps de R&D interne, nous avons testé la techno du moment : la réalité augmentée. Rappelons ce qu’est la réalité augmentée : “La réalité augmentée désigne les systèmes informatiques qui rendent possible la superposition d’un modèle virtuel 2D ou 3D à la perception que nous avons naturellement de la réalité et ceci en temps réel. Elle désigne les différentes méthodes qui permettent d’incruster de façon réaliste des objets virtuels dans une séquence d’images. Elle s’applique aussi bien à la perception visuelle (superposition d’image virtuelle aux images réelles) qu’aux perceptions proprioceptives comme les perceptions tactiles ou auditives.”
Le but de ces deux journées était de découvrir la technologie afin de pouvoir afficher sur un marqueur de réalité augmentée un modèle 3D que nous avons créé.
Choix de la technologie
Pour préparer ce projet, nous avons recherché quelques librairies de réalité augmentée disponibles sur iOS.
Beaucoup de ces librairies utilisent la géolocalisation afin de positionner des éléments virtuels aux coordonnées indiquées. Cependant, nous ne voulions pas utiliser cette technologie qui n’était pas l’objectif à atteindre sur ce PoC. Nous avons donc affiné nos recherches pour trouver des librairies plus complètes et en nous focalisant exclusivement sur la modélisation 3D sur marqueurs.
L’une d’entre elles est Vuforia, une librairie créée par Qualcomm. L’application de démonstration proposée par Vuforia est assez complète (modélisation 3D avec marqueur, sans marqueur, interface graphique virtuelle), simple d’utilisation et rapide à prendre en main. En revanche, le manque de documentation et la complexité du code (ainsi son organisation) en font une application assez complexe et à améliorer pour pouvoir nous y greffer et ajouter ou modifier du code pour les besoins du PoC.
De plus, la librairie ne permet pas d’utiliser des modèle 3D ouverts. Nous devons absolument passer par l’outil de l’éditeur et là où le bât blesse, celui-ci est payant même pour une utilisation développeur.
Nous avons finalement choisi l’alternative Open source ARToolkit. Nous avons également testé l’application de démonstration qui est aussi complète que l’application de Vuforia au niveau des possibilités de modélisation 3D sur marqueurs. La documentation est plus complète, le code plus simple à prendre en main et cette librairie supporte les modèles 3D standards ouverts, contrairement à son homologue.
Design des modèles
Le design des modèles dans la réalité augmentée fait partie intégrante de la technologie, il faut donc être capable de modéliser aisément des objets 3D. Lors de la création du premier modèle, nous avons eu besoin en sortie d’un fichier au format wavefront (.obj). Cependant, Cinema4D ne sait pas exporter un modèle sous ce format. Nous avons utilisé Blender (alternative libre et Open Source de Cinema4D) mais dont l’usage est peu intuitif sans réelle maîtrise de l’outil. Nous avons finalement trouvé un plug-in de conversion .c4d permettant d’obtenir un fichier .obj en sortie.
Résultat
À l’issue de deux jours de R&D nous avons produit un “Proof Of Concept” fonctionnel, sous la forme d’une application iOS disposant des fonctionnalités suivantes :
- Reconnaissance de deux marqueurs personnalisés
- Association d’un modèle 3D à chacun de ces marqueurs
- Affichage du modèle et suivi en temps réel des déplacements de la caméra
La génération d’un marqueur à partir d’un fichier JPG se fait grâce à un utilitaire en ligne de commande intégré au SDK ARToolkit. Chaque marqueur doit être ensuite déclaré au sein de l’application et associé à un modèle 3D.
Le but de l’application est notamment de pouvoir distinguer deux marqueurs et de leur associer un modèle 3D spécifique sans pour autant que ceux-ci soient reconnaissables à l’œil nu.
Nous avons dans un premier temps généré et enregistré un des deux marqueurs et celui-ci était bien reconnu par notre application. Cependant, le deuxième marqueur était lui aussi détecté.
Après quelques essais, il s’est avéré que contrairement à un SDK plus évolué comme Vuforia, ARToolkit a un seuil de tolérance relativement permissif et tente reconnaître le marqueur le plus proche parmi ceux enregistrés.
En déclarant deux marqueurs simultanément, l’application est en mesure d’associer avec succès un modèle différent à chaque marqueur mais un troisième marqueur relativement proche est détecté aléatoirement comme étant l’un des deux autres. Ceci confirme que les marqueurs ne sont pas formellement identifiés mais classés selon leur ressemblance.
Nous avons également tenté d’afficher en simultané nos deux modèles sur les deux marqueurs côte à côte mais sans succès : cette fonctionnalité est supportée par la bibliothèque mais ne semble ne plus fonctionner depuis une récente mise à jour.
Dès qu’un marqueur est reconnu, il est traqué en permanence afin que le modèle soit toujours affiché au bon endroit mais la détection d’un nouveau marqueur est alors désactivée jusqu’à la fin du tracking. Seul le premier marqueur reconnu est pris en compte.
À noter également que la bibliothèque, comme la plupart des bibliothèques de réalité augmentée que nous avons étudiées, est assez peu accessible.
L’API est uniquement disponible en C++ et à relativement bas niveau. Son utilisation nécessite une connaissance de base en modélisation 3D, et demande de maîtriser des notions comme les vertices, les shaders, les materials, les textures et la géométrie dans l’espace en 3 dimensions.
Des connaissances en 3D sont donc nécessaires pour l’utilisation de l’API mais aussi pour la simple génération d’un modèle 3D. Le Framework supporte exclusivement les fichiers OBJ, éventuellement accompagnés d’un fichier MTL et de JPG pour les textures. Mais tous les fichiers que nous avons téléchargés sur internet n’ont pas fonctionné. Pour certains, il est nécessaire de les importer dans l’outil Open source Blender et de les exporter à nouveau dans le même format.
Viennent ensuite les problématiques d’éclairage. Le visualiseur de modèle 3D intégré à l’IDE xCode affiche par défaut les objets avec un éclairage très diffus, faisant apparaître de belles couleurs uniformes. A contrario, ARToolkit utilise uniquement l’éclairage explicitement défini dans le fichier du modèle et fait apparaître dans notre application nos modèles avec beaucoup d’ombres et des couleurs assez éloignées du résultat attendu. Deux pistes nous permettent d’expliquer ce problème :
- Un manque de compétences dans la compréhension de la bibliothèque, notamment au niveau de configuration
- Le plug-in de conversion du modèle Cinema4D vers le format wavefront perd des informations notamment au niveau des textures et éclairage.
Enfin, nous avons été confrontés à des problématiques de taille et de positionnement des modèles 3D.
Pour positionner un objet, il est nécessaire d’indiquer les coordonnées centrales d’un point, qui sont fonction de la taille du marqueur. Ainsi, pour positionner un objet au centre, il est nécessaire de diviser par deux la hauteur et la largeur du marqueur. Cela implique qu’un changement de marqueur ou un simple redimensionnement nécessite d’ajuster la position du modèle.
Nous avons également constaté que la taille d’affichage est dépendante de la taille de l’objet lui-même, de la taille du marqueur et de sa résolution, sans en avoir réellement compris la règle. Par contrainte de temps et avec notre connaissance limitée du monde 3D, nous avons ajusté ces 3 variables jusqu’à obtenir le résultat souhaité.
Conclusion
La technologie est très prometteuse et les usages semblent infinis. En testant la bibliothèque Vuforia, nous avons vu un usage de modèle 3D qui change de couleur lorsque l’on appuie sur des boutons eux-mêmes générés en réalité augmentée. La bibliothèque ARToolkit semble être la meilleure alternative gratuite sur beaucoup de points. Elle est Open source, maintenue, possède les fonctionnalités minimales recherchées pour notre PoC et surtout les modèles 3D utilisés sont standards (wavefront). La réalité augmentée ne concerne pas seulement l’affichage d’un objet 3D à partir d’un marqueur. La technologie permet aussi d’afficher des objets par géolocalisation (procédé exploité par pokémon GO) et nous avons hâte de tester cet aspect de la technologie.
Nous avons aussi vu que le projet ARToolkit a un code “legacy” lourd et nous souhaiterions contribuer à la communauté Open Source en y apportant notre savoir-faire : passer le projet sous A.R.C., mieux isoler la bibliothèque et ses dépendances, améliorer la documentation…
Pour aller plus loin : La réalité virtuelle est morte, Pokemon GO l’a tuée. https://www.linkedin.com/pulse/virtual-reality-dead-pok%C3%A9mon-go-killed-jeremy-klutts
Nous publions régulièrement des articles sur des sujets de développement produit web et mobile, data et analytics, sécurité, cloud, hyperautomatisation et digital workplace.
Suivez-nous pour être notifié des prochains articles et réaliser votre veille professionnelle.
Retrouvez aussi nos publications et notre actualité via notre newsletter, ainsi que nos différents réseaux sociaux : LinkedIn, Twitter, Youtube, Twitch et Instagram
Vous souhaitez en savoir plus ? Consultez notre site web et nos offres d’emploi.