Contourner les problèmes d’occlusion rencontrés en réalité augmentée

Depuis deux ans, nos équipes ont mis au point plus d’une trentaine d’expériences de réalité augmentée sur la plateforme AR de Google (Tango, et dorénavant ARCore). Lors de nos développements pour différents musées, une caractéristique spécifique de la réalité augmentée nous a donné bien du fil à retordre : l’occlusion.

Qu’est ce que l’occlusion ?

Il arrive qu’un objet virtuel affiché en réalité augmentée ne s’intègre pas correctement à l’environnement réel, faisant s’évanouir l’illusion d’immersion espérée. On a alors un problème d’occlusion. Il s’explique par le fait qu’à l’écran un objet virtuel apparaît toujours au-dessus du monde réel.

Prenons le cas d’une statue virtuelle placée dans une galerie. Lorsqu’un visiteur passe derrière l’oeuvre, l’expérience AR n’est pas perturbée puisque la statue apparaît bien devant lui.

occlusion effect A1

En revanche, si la personne se tient entre la tablette et l’oeuvre, l’illusion s’évanouit car la statue se superpose au visiteur au lieu d’être masquée par sa présence.

occlusion effect A2

De la même façon, un objet virtuel placé à l’intérieur d’un objet réel pourra lui aussi connaître un problème d’occlusion. Les images ci-dessous montrent comment l’illusion de la réalité augmentée peut fonctionner parfaitement sous un certain angle, mais plus du tout sous un autre. Là encore, l’objet virtuel (la pomme) passe devant un élément réel qui, vu de profil, serait censé le masquer.

occlusion effect B

Nos solutions aux problèmes d’occlusion

Beaucoup de problèmes d’occlusion peuvent être contournés à condition de les intégrer très en amont de la réflexion, dès la conception de l’expérience AR. Devant la variété des cas rencontrés chez nos clients, nous avons mis au point un éventail de solutions.

Créer un espace réservé. L’une des méthodes les plus efficaces pour lutter contre les problèmes d’occlusion consiste à contenir l’expérience AR au sein d’un périmètre qui lui est réservé. Par exemple, lors de l’exposition “Sites Eternels“ au Grand Palais, les tablettes étaient reliées par un câble à une grande table ronde sur laquelle se déroulait l’expérience AR. Ainsi, aucun visiteur ne pouvait venir s’immiscer entre l’arche de Palmyre reconstituée et la caméra de la tablette.

Ce visuel est une simulation. L’arche apparaissait sur l’écran de la tablette, à sa taille réelle.
Ce visuel est une simulation. L’arche apparaissait sur l’écran de la tablette, à sa taille réelle.

Une méthode similaire consiste à délimiter physiquement le périmètre de l’expérience AR, afin d’empêcher les visiteurs de le traverser. Ce type de solution dépend de l’espace disponible et sera plus facile à mettre en place dans le cadre d’une exposition que pour les collections permanentes du musée.

Placer l’objet de façon stratégique. Un problème d’occlusion peut parfois être résolu en plaçant l’objet virtuel à un emplacement bien étudié. L’application développée pour le Musée National de Singapour permet de faire apparaître un squelette de baleine puis la baleine elle-même, à taille réelle. L’expérience a été placée sous un haut plafond de verre, bien au-dessus des visiteurs. En pointant la tablette vers la verrière, l’animal s’affiche sans risque d’interférences avec les murs ou le public, et ce malgré son imposant volume.

image source: http://www.straitstimes.com/lifestyle/arts/take-a-selfie-with-a-whale-at-museum
image source: http://www.straitstimes.com

Maîtriser la position du visiteur. Lors d’un récent projet, nous avons placé au sol un repère virtuel (cercle lumineux) pour inviter les utilisateurs à se tenir à un endroit déterminé avant de lancer l’expérience. Cet emplacement a bien sûr été choisi de manière à ce que rien ne puisse venir s’interposer entre le visiteur et la scène AR.

“Entrez dans le cercle lumineux”
“Entrez dans le cercle lumineux”

Jouer le camouflage. Lorsque l’environnement cause des problèmes d’occlusion, on peut essayer de le masquer à l’aide de divers effets ajoutés à la scène virtuelle (nuages, brouillard…)
Dans un projet récent, nous avons simulé l’atterrissage d’une sonde spatiale à la surface d’un astéroïde. Située dans une galerie étroite et très fréquentée, l’expérience rencontrait de gros problèmes d’occlusion avec les vitrines alentour. Le sentiment d’immersion a pu être amélioré en ajoutant un nuage de poussière au bas de la scène virtuelle.

add masking effects

Intégrer des parties du monde réel à la scène virtuelle. Dans certains cas, il est possible de mettre en place une occlusion « planifiée ». C’est la méthode qu’utilise notre module d’orientation en réalité augmentée, qui guide les visiteurs  à l’aide de points bleus s’affichant au sol. Dans l’exemple ci-dessous, le visiteur est guidé vers la gauche. Masqué par la cloison, le reste du trajet lui apparaîtra après avoir pris le tournant. Nous intégrons en effet les obstacles identifiés en amont (murs, vitrines…) à notre algorithme d’orientation. Calculé en temps réel, l’affichage du trajet s’adapte ainsi, sans problèmes d’occlusion, aux contours de l’environnement physique.

Integrate real-world elements

Créer des masques d’occlusion. Récemment, nous devions afficher le long d’un mur un objet virtuel occupant toute la longueur de la pièce. Le visiteur étant supposé se tenir à bonne distance pour apprécier l’objet dans sa globalité, les meubles présents dans la pièce venaient immanquablement interférer dans le champ de vision, créant de gros problèmes d’occlusion. L’objet virtuel semblait flotter dans la pièce au lieu de donner l’illusion attendue : celle d’un objet plaqué au mur.

Pour remédier à ce problème, nos développeurs ont mis au point une technique exclusive : les masques d’occlusion. Il s’agit d’objets 3D auxquels nous donnons la même forme et la même taille que les éléments à l’origine du problème d’occlusion. Grâce à notre module AR Composer, nous plaçons ces masques de façon à dessiner les contours précis du mobilier. Les zones ainsi délimitées vont dès lors s’afficher devant l’objet virtuel, recréant l’illusion du virtuel se fondant au réel.

occlusion-mask-guidigo

Délimiter chaque section du musée. Le phénomène d’occlusion peut générer d’autres désagréments, comme le fait de voir dans une galerie un objet virtuel placé dans la galerie voisine. L’objet virtuel s’affichant toujours devant le réel, il apparait en effet « à travers » les cloisons censées le masquer. Dans ce type de situation, notre méthode consiste à délimiter des espaces virtuels et à détecter en permanence celui dans lequel évolue le visiteur. Il ne verra ainsi que les objets positionnés dans la galerie où il se trouve. Pour découvrir le résultat de cette technique appliquée au Clyfford Still Museum de Denver, consultez cet article.

Blue_painting

Reconstruire l’environnement en temps réel. Dans certains cas, les problèmes d’occlusion sont inévitables, notamment lorsqu’on ne peut empêcher le passage de visiteurs entre l’objet virtuel et l’utilisateur. Il est alors possible d’utiliser les capacités du mobile pour reconstruire l’environnement en temps réel et y fondre des éléments virtuels. Dans la pratique, le recours à cette option se heurte pour le moment à une limite technique : outre les capteurs spécifiques et les caméras multiples, le mobile doit également être équipé d’un processeur ultra-puissant.

source: Google Developers
source: Google Developers Youtube Channel

Et demain ?…

Chaque expérience AR soulève une problématique d’occlusion particulière appelant une solution spécifique. Dans un futur proche, les évolutions techniques – notamment la sensibilité des capteurs et la puissance des processeurs – vont à coup sûr faciliter la résolution de ce type de problème. L’alliance de la créativité et de la programmation permettront d’améliorer la réalité augmentée jusqu’à la rendre, un jour peut-être, quasi indétectable.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>