Étude de cas - Voir à travers vos objets

Quand 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 sur mon espace ? » J’aimerais mettre en évidence un autre domaine que vous pouvez envisager, essentiellement un tour magique, à l’aide de la même technologie pour examiner ou par le biais d’objets physiques réels autour de vous.

La technologie

Si vous avez combattu des aliens comme ils traversent vos murs à RoboRaid, déverrouillé un mur sûr dans Fragments, ou ont eu la chance de voir le hangar UNSC Infinity dans l’expérience Halo 5 à E3 en 2015, alors vous avez vu ce que je parle. Selon votre imagination, cette astuce visuelle peut être utilisée pour placer des trous temporaires dans votre cloison sèche ou pour cacher des mondes sous un plancher lâche.

RoboRaid adds three-dimensional pipes and other structure behind your walls, visible only through holes created as the invaders break through.

RoboRaid ajoute des tuyaux tridimensionnels et d’autres structures derrière vos murs, visibles uniquement par des trous créés au fur et à mesure que les envahisseurs traversent.

En utilisant l’un de ces hologrammes uniques sur HoloLens, une application peut fournir l’illusion de contenu derrière vos murs ou par le biais de 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 ne vous laissera pas monter jusqu’à ce contenu holographique magique. (J’ajouterai 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é au monde » signifie que ce que vous regardez ne dérive pas visuellement des objets physiques près de celui-ci, même lorsque vous déplacez ou que le système de mappage spatial sous-jacent met à jour son modèle 3D de votre salle.

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

This is not an actual screenshot, but an illustration of how the secret underworld from MR Basics 101 looks on HoloLens. The black enclosure doesn’t show up, but you can see content through a virtual hole. (When looking through an actual device, the floor would seem to disappear even more because your eyes focus at a further distance as if it’s not even there.)

Il ne s’agit pas d’une capture d’écran réelle, mais d’une illustration de la façon dont le secret sous-monde de MR Basics 101 regarde HoloLens. Le boîtier noir ne s’affiche pas, mais vous pouvez voir du contenu à travers un trou virtuel. (Lorsque vous regardez un appareil réel, le sol semble disparaître encore plus parce que vos yeux se concentrent à une distance plus éloignée comme si ce n’est même pas là.)

Verrouillage mondial du contenu holographique

Dans Unity, l’ajout d’un composant WorldAnchor est aussi simple que l’ajout d’un composant WorldAnchor :

myObject.AddComponent<WorldAnchor>();

Le composant WorldAnchor ajuste constamment la position et la rotation de son GameObject (et donc tout autre élément sous cet objet dans la hiérarchie) pour qu’il reste stable par rapport aux objets physiques proches. Lors de la création de votre contenu, créez-le de telle sorte que le pivot racine de votre objet soit centré au niveau de ce trou virtuel. (Si le pivot de votre objet est profond dans le mur, ses légères ajustements en position et rotation seront beaucoup plus notables, et le trou peut ne pas sembler très stable.)

Masquer tout, mais le trou virtuel

Il existe différentes façons de bloquer de manière sélective 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 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 l’impression 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 il s’agit du moyen le plus rapide d’obtenir quelque chose de opérationnel et d’obtenir une preuve de concept de faible fidélité est excellent, même si vous pensez que vous voudrez peut-être le refactoriser ultérieurement.

L’un des principaux inconvénients de l’approche « boîte noire » ci-dessus 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 affichent 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 composites hologrammes et la réalité différemment. Détourons pour un instant en quelques faux mathématiques...

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

Ce que vous voyez par 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 par des lunettes de soleil) et les hologrammes que l’application veut montrer. Toutefois, lorsque vous prenez 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 est de modifier 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, consultez 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 « Offset 50, 100 » est de traiter les problèmes non liés, donc il serait probablement judicieux de quitter cette ligne.)

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 généralement ne sera pas nécessaire.

Here is the secret underworld from MR Basics 101 as Unity draws it, except for the outer parts of the occluding box. Note that the pivot for the underworld is at the center of the box, which helps keep the hole as stable as possible relative to your actual floor.

Voici le sous-monde secret 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 inférieur est au centre de la boîte, ce qui permet de garder le trou aussi stable que possible par rapport à votre plancher réel.

Faites-le vous-même

Vous avez un HoloLens et voulez essayer l’effet pour 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 salle. Chargez-le sur HoloLens, et vous pouvez voir l’illusion au travail. Lorsque vous êtes devant le modèle, vous ne pouvez voir que dans le petit trou, tout le reste est invisible. Regardez 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 d’échelle de la visionneuse 3D pour positionner le trou virtuel sur n’importe quelle surface verticale que vous pouvez penser à générer des idées!

Viewing this model in your Unity editor will show a large black box around the flowerpot. On HoloLens, the box disappears, giving way to a magic window effect.

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, donnant la voie à un effet de fenêtre magique.

Si vous souhaitez créer une application qui utilise cette technique, consultez 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 sous-monde caché (comme illustré ci-dessus). Qui dit que les didacticiels devaient être ennuyeux?

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

  • Réfléchissez à des façons de rendre le contenu à l’intérieur du trou virtuel interactif. Permettre à vos utilisateurs d’avoir un certain impact au-delà de leurs murs peut vraiment améliorer le sens de la merveille que cette astuce peut fournir.
  • Réfléchissez à des façons de revenir aux objets connus. Par exemple, comment pouvez-vous placer un trou holographique dans votre table basse et voir votre plancher sous celui-ci ?

À propos de l’auteur

Picture of Eric Rehmeyer Eric Rehmeyer
Ingénieur logiciel senior @Microsoft

Voir aussi