Étude de cas - Voir à travers vos objets

Lorsque les gens pensent à la réalité mixte et à ce qu’ils peuvent faire avec Microsoft HoloLens, ils s’en tiennent généralement à des questions telles que « Quels objets puis-je ajouter à ma pièce ? » ou « Que puis-je superposer au-dessus de mon espace ? » J’aimerais souligner un autre domaine que vous pouvez envisager, essentiellement un tour de magie, en utilisant la même technologie pour examiner ou à travers des objets physiques réels autour de vous.

La technologie

Si vous avez combattu des extra-terrestres qui se brisent à travers vos murs dans RoboRaid, déverrouillé un coffre-fort dans Fragments, ou avez eu la chance de voir le hangar Infinity de l’UNSC dans l’expérience Halo 5 à l’E3 en 2015, alors vous avez vu de quoi je parle. Selon votre imagination, cette astuce visuelle peut être utilisée pour mettre des trous temporaires dans votre cloison sèche ou pour masquer des mondes sous un plancher lâche.

RoboRaid ajoute des tuyaux en trois dimensions et d’autres structures derrière vos murs, visibles uniquement par les trous créés lorsque les envahisseurs se brisent.

RoboRaid ajoute des tuyaux en trois dimensions et d’autres structures derrière vos murs, visibles uniquement par les trous créés lorsque les envahisseurs se brisent.

En utilisant l’un de ces hologrammes uniques sur HoloLens, une application peut fournir l’illusion de contenu derrière vos murs ou à travers votre plancher de la même façon que la réalité se présente à travers une fenêtre réelle. Déplacez-vous vers la gauche, et vous pouvez voir ce qui se trouve sur le côté droit. Rapprochez-vous, et vous pouvez voir un peu plus de tout. La principale différence est que les trous réels vous permettent de traverser, tandis que votre plancher obstinément ne vous laissera pas grimper à travers ce contenu holographique magique. (Je vais ajouter une tâche au backlog.)

Dans les coulisses

Cette astuce est une combinaison de deux effets. Tout d’abord, le contenu holographique est épinglé au monde à l’aide de « ancres spatiales ». L’utilisation d’ancres pour rendre ce contenu « verrouillé dans le monde » signifie que ce que vous regardez ne dérive pas visuellement des objets physiques à proximité, même lorsque vous vous déplacez ou que le système de mappage spatial sous-jacent met à jour son modèle 3D de votre pièce.

Deuxièmement, ce contenu holographique est visuellement limité à un espace très spécifique, de sorte que vous ne pouvez voir que par le trou dans votre réalité. Cette occlusion est nécessaire pour qu’il soit nécessaire de regarder à travers un trou logique, une fenêtre ou une porte, ce qui vend le truc. Sans quelque chose qui bloque la plupart de la vue, une fissure dans l’espace à une dimension jurassique secrète pourrait ressembler à un dinosaure mal placé.

Il ne s’agit pas d’une capture d’écran réelle, mais d’une illustration de l’apparence de la pègre secrète de MR Basics 101 sur HoloLens. Le boîtier noir ne s’affiche pas, mais vous pouvez voir le contenu à travers un trou virtuel. (Lorsque vous regardez à travers un appareil réel, le sol semble disparaître encore plus parce que vos yeux se concentrent plus loin comme s’il n’était même pas là.)

Il ne s’agit pas d’une capture d’écran réelle, mais d’une illustration de l’apparence de la pègre secrète de MR Basics 101 sur HoloLens. Le boîtier noir ne s’affiche pas, mais vous pouvez voir le contenu à travers un trou virtuel. (Lorsque vous regardez à travers un appareil réel, le sol semble disparaître encore plus parce que vos yeux se concentrent plus loin comme s’il n’était même pas là.)

Contenu holographique à verrouillage mondial

Dans Unity, l’ajout d’un composant WorldAnchor est aussi simple que l’ajout d’un composant WorldAnchor pour le contenu holographique :

myObject.AddComponent<WorldAnchor>();

Le composant WorldAnchor ajuste constamment la position et la rotation de son GameObject (et donc de tout autre élément sous cet objet dans la hiérarchie) pour le maintenir stable par rapport aux objets physiques proches. Lors de la création de votre contenu, créez-le de manière à ce que le pivot racine de votre objet soit centré sur ce trou virtuel. (Si le pivot de votre objet est profond dans le mur, ses légères ajustements de position et de rotation seront beaucoup plus visibles, et le trou peut ne pas paraître très stable.)

Obluding tout sauf le trou virtuel

Il existe différentes façons de bloquer sélectivement la vue sur ce qui est caché dans vos murs. Le plus simple tire parti du fait que HoloLens utilise un affichage additif, ce qui signifie que les objets entièrement noirs apparaissent invisibles. Vous pouvez le faire dans Unity sans faire de nuanceur spécial ou d’astuces matérielles. Il vous suffit de créer un matériau noir et de l’affecter à un objet qui boxe dans votre contenu. Si vous n’avez pas envie d’effectuer une modélisation 3D, utilisez simplement une poignée d’objets Quad par défaut et les chevauchez légèrement. Il existe un certain nombre d’inconvénients à cette approche, mais c’est le moyen le plus rapide de faire fonctionner quelque chose, et l’obtention d’une preuve de concept de faible fidélité est génial, même si vous pensez que vous voudrez peut-être la refactoriser plus tard.

L’un des inconvénients majeurs de l’approche ci-dessus « boîte noire » est qu’elle ne photographie pas bien. Bien que votre effet puisse sembler parfait à travers l’affichage de HoloLens, toutes les captures d’écran que vous prenez montreront un grand objet noir au lieu de ce qui reste de votre mur ou plancher. La raison en est que le matériel physique et les captures d’écran composite hologrammes et la réalité différemment. Nous allons faire un détour par un peu de faux mathématiques...

Fausse alerte mathématique ! Ces nombres et formules sont destinés à illustrer un point, à ne pas être une sorte de métrique précise!

Ce que vous voyez via HoloLens :

( Reality * darkening_amount ) + Holograms

Ce que vous voyez dans les captures d’écran et la vidéo :

( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha

En anglais : Ce que vous voyez à travers HoloLens est une combinaison simple de réalité sombre (comme avec des lunettes de soleil) et de tout ce que l’application souhaite afficher. Toutefois, lorsque vous effectuez une capture d’écran, l’image de l’appareil photo est fusionnée avec les hologrammes de l’application en fonction de la valeur de transparence par pixel.

Une façon de contourner ce problème consiste à changer le matériau « boîte noire » pour écrire uniquement dans la mémoire tampon de profondeur, et trier avec tous les autres matériaux opaques. Pour obtenir un exemple de ceci, case activée le fichier WindowOcclusion.shader dans mixedRealityToolkit sur GitHub. Les lignes pertinentes sont copiées ici :

"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0

(Notez que la ligne « Décalage 50, 100 » est pour traiter des problèmes non liés, il serait donc probablement judicieux de l’ignorer.)

L’implémentation d’un matériau d’occlusion invisible comme celui-ci permet à votre application de dessiner une zone qui semble correcte dans l’affichage et dans les captures d’écran de réalité mixte. Pour les points bonus, vous pouvez essayer d’améliorer les performances de cette boîte encore plus en faisant des choses intelligentes pour dessiner encore moins de pixels invisibles, mais cela peut vraiment entrer dans les mauvaises herbes et ne sera généralement pas nécessaire.

Voici la pègre secrète de MR Basics 101 que Unity dessine, à l’exception des parties externes de la boîte d’occluding. Notez que le pivot pour le monde souterrain est au centre de la boîte, ce qui permet de maintenir le trou aussi stable que possible par rapport à votre plancher réel.

Voici la pègre secrète de MR Basics 101 que Unity dessine, à l’exception des parties externes de la boîte d’occluding. Notez que le pivot pour le monde souterrain est au centre de la boîte, ce qui permet de maintenir le trou aussi stable que possible par rapport à votre plancher réel.

Faites-le vous-même

Vous avez un HoloLens et vous voulez essayer l’effet par vous-même ? La chose la plus simple que vous pouvez faire (aucun codage requis) consiste à installer l’application visionneuse 3D gratuite, puis à charger le fichier .fbx que j’ai fourni sur GitHub pour afficher un modèle de pot de fleurs dans votre chambre. Chargez-le sur HoloLens, et vous pouvez voir l’illusion à l’œuvre. Lorsque vous êtes devant le modèle, vous ne pouvez voir que dans le petit trou , tout le reste est invisible. Examinez le modèle de n’importe quel autre côté et il disparaît entièrement. Utilisez les contrôles de mouvement, de rotation et de mise à l’échelle de la visionneuse 3D pour positionner le trou virtuel sur n’importe quelle surface verticale à laquelle vous pouvez penser et générer des idées !

L’affichage de ce modèle dans votre éditeur Unity affiche une grande boîte noire autour du pot de fleurs. Sur HoloLens, la boîte disparaît, laissant place à un effet de fenêtre magique.

L’affichage de ce modèle dans votre éditeur Unity affiche une grande boîte noire autour du pot de fleurs. Sur HoloLens, la boîte disparaît, laissant place à un effet de fenêtre magique.

Si vous souhaitez créer une application qui utilise cette technique, case activée le didacticiel Mr Basics 101 dans les didacticiels Mixed Reality. Le chapitre 7 se termine par une explosion dans votre sol qui révèle un monde souterrain caché (comme illustré ci-dessus). Qui a dit que les tutoriels devaient être ennuyeux?

Voici quelques idées de l’endroit où vous pouvez prendre cette idée ensuite :

  • Pensez à des façons de rendre le contenu à l’intérieur du trou virtuel interactif. Laisser vos utilisateurs avoir un impact au-delà de leurs murs peut vraiment améliorer le sentiment d’émerveillement que cette astuce peut fournir.
  • Pensez à des façons de voir à travers les objets dans les zones connues. Par exemple, comment pouvez-vous placer un trou holographique dans votre table basse et voir votre plancher en dessous ?

À propos de l’auteur

Photo d’Eric Rehmeyer Eric Rehmeyer
Ingénieur logiciel senior @Microsoft

Voir aussi