Étude de cas - Voir à travers vos objetsCase study - Looking through holes in your reality

Lorsque les gens pensent à la réalité mixte et à ce qu’ils peuvent faire avec Microsoft HoloLens, ils sont généralement confrontés à des questions comme « quels objets puis-je ajouter à ma salle ? ».When people think about mixed reality and what they can do with Microsoft HoloLens, they usually stick to questions like "What objects can I add to my room?" ou « que puis-je couche en plus de mon espace ? »or “What can I layer on top of my space?" J’aimerais mettre en évidence une autre zone que vous pouvez prendre en compte, essentiellement une astuce magique, en utilisant la même technologie pour examiner ou parcourir des objets physiques réels autour de vous.I’d like to highlight another area you can consider—essentially a magic trick—using the same technology to look into or through real physical objects around you.

Le TechThe tech

Si vous avez lutté des étrangers lorsqu’ils sont confrontés à des murs dans RoboRaid, déverrouillé un mur protégé en fragments ou si vous étiez suffisamment heureux pour voir le UNSC infini hangar dans l' expérience de Halo 5 à E3 dans 2015, vous avez vu ce que je parle.If you've fought aliens as they break through your walls in RoboRaid, unlocked a wall safe in Fragments, or were lucky enough to see the UNSC Infinity hangar in the Halo 5 experience at E3 in 2015, then you've seen what I'm talking about. En fonction de votre imagination, cette astuce visuelle peut être utilisée pour placer des trous temporaires dans votre cloison ou pour masquer des mondes sous un plancher faible.Depending on your imagination, this visual trick can be used to put temporary holes in your drywall or to hide worlds under a loose floorboard.

RoboRaid ajoute des canaux à trois dimensions et d’autres structures derrière vos murs, visibles uniquement par des trous créés en tant que saut de envahisseurs.

RoboRaid ajoute des canaux à trois dimensions et d’autres structures derrière vos murs, visibles uniquement par des trous créés en tant que saut de envahisseurs.RoboRaid adds three-dimensional pipes and other structure behind your walls, visible only through holes created as the invaders break through.

À l’aide de l’un de ces hologrammes uniques sur HoloLens, une application peut fournir l’illusion de contenu derrière vos murs ou à travers votre étage de la même façon que la réalité s’affiche dans une fenêtre réelle.Using one of these unique holograms on HoloLens, an app can provide the illusion of content behind your walls or through your floor in the same way that reality presents itself through an actual window. Déplacez-vous vers la gauche et vous pouvez voir tout ce qui se trouve sur le côté droit.Move yourself left, and you can see whatever is on the right side. Plus près, vous pouvez voir un peu plus de tout.Get closer, and you can see a bit more of everything. La principale différence réside dans le fait que les véritables failles vous permettent, tandis que votre obstinément ne vous permet pas de passer à ce contenu holographique magique.The major difference is that real holes allow you through, while your floor stubbornly won't let you climb through to that magical holographic content. (J’ajoute une tâche au Backlog.)(I'll add a task to the backlog.)

Dans les coulissesBehind the scenes

Cette astuce est une combinaison de deux effets.This trick is a combination of two effects. Tout d’abord, le contenu holographique est épinglé au monde en utilisant des « ancres spatiales ».First, holographic content is pinned to the world using "spatial anchors." En utilisant des ancres pour que ce contenu soit « verrouillé par le monde », cela signifie que ce que vous regardez ne dérive pas visuellement des objets physiques près de lui, même lorsque vous déplacez ou le système de mappage spatial sous-jacent met à jour son modèle 3D de votre salle.Using anchors to make that content "world-locked" means that what you're looking at doesn't visually drift away from the physical objects near it, even as you move or the underlying spatial mapping system updates its 3D model of your room.

Deuxièmement, ce contenu holographique est visuellement limité à un espace très spécifique, de sorte que vous ne pouvez voir que dans le trou de votre réalité.Secondly, that holographic content is visually limited to a very specific space, so you can only see through the hole in your reality. Cette occlusion est nécessaire pour que vous ayez besoin d’un trou logique, d’une fenêtre ou d’une porte, qui vend le pli.That occlusion is necessary to require looking through a logical hole, window, or doorway, which sells the trick. Sans bloquer la majeure partie de la vue, une fissure dans l’espace d’une dimension Jurassique secrète peut simplement ressembler à un dinosaure mal placé.Without something blocking most of the view, a crack in space to a secret Jurassic dimension might just look like a poorly placed dinosaur.

Il ne s’agit pas d’une capture d’écran réelle, mais une illustration de la façon dont le sous-monde secret de la base de connaissances de m. 101 examine HoloLens.

Il ne s’agit pas d’une capture d’écran réelle, mais une illustration de la façon dont le sous-monde secret de la base de connaissances de m. 101 se penche sur HoloLens.This is not an actual screenshot, but an illustration of how the secret underworld from the MR Basics 101 looks on HoloLens. Le boîtier noir n’apparaît pas, mais vous pouvez voir le contenu via un trou virtuel.The black enclosure doesn’t show up, but you can see content through a virtual hole. (Lorsque vous examinez un appareil réel, le plancher semble disparaître encore davantage, car vos yeux se focalisent sur une autre distance comme s’il n’y est pas encore.)(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.)

Contenu holographique de verrouillage universelWorld-locking holographic content

Dans Unity, il est aussi facile de faire en sorte que le contenu holographique reste verrouillé en ajoutant un composant WorldAnchor :In Unity, causing holographic content to stay world-locked is as easy as adding a WorldAnchor component:

myObject.AddComponent<WorldAnchor>();

Le composant WorldAnchor ajuste en permanence 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 voisins.The WorldAnchor component will constantly adjust the position and rotation of its GameObject (and thus anything else under that object in the hierarchy) to keep it stable relative to nearby physical objects. Lors de la création de votre contenu, créez-le de façon à ce que le pivot racine de votre objet soit centré sur ce trou virtuel.When authoring your content, create it in such a way that the root pivot of your object is centered at this virtual hole. (Si le tableau croisé dynamique de votre objet est profond au mur, ses légères modifications de position et de rotation seront beaucoup plus perceptibles, et le trou peut ne pas sembler très stable.)(If your object's pivot is deep in the wall, its slight tweaks in position and rotation will be much more noticeable, and the hole may not look very stable.)

Boucher tout sauf le trou virtuelOccluding everything but the virtual hole

Il existe plusieurs façons de bloquer de manière sélective la vue sur ce qui est masqué dans vos murs.There are a variety of ways to selectively block the view to what is hidden in your walls. La plus simple tire parti du fait que HoloLens utilise un affichage additif, ce qui signifie que les objets noirs sont invisibles.The simplest one takes advantage of the fact that HoloLens uses an additive display, which means that fully black objects appear invisible. Vous pouvez effectuer cette opération dans Unity sans avoir à utiliser 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 contient des zones de votre contenu.You can do this in Unity without doing any special shader or material tricks— just create a black material and assign it to an object that boxes in your content. Si vous ne vous inquiétez pas de la modélisation 3D, utilisez simplement quelques objets Quad par défaut et faites-les légèrement chevaucher.If you don't feel like doing 3D modeling, just use a handful of default Quad objects and overlap them slightly. Cette approche présente un certain nombre d’inconvénients, mais il s’agit de la méthode la plus rapide pour travailler, et l’obtention d’une preuve de concept de faible fidélité est très intéressante, même si vous pensez que vous voudrez peut-être la Refactoriser ultérieurement.There are a number of drawbacks to this approach, but it is the fastest way to get something working, and getting a low-fidelity proof of concept working is great, even if you suspect you might want to refactor it later.

L’une des inconvénients majeurs de l’approche « Black Box » ci-dessus est qu’elle n’est pas bien photographie.One major drawback to the above "black box" approach is that it doesn't photograph well. Si votre effet peut sembler parfait par le biais de l’affichage de HoloLens, les captures d’écran que vous prenez affichent un gros objet noir au lieu de ce qui reste de votre mur ou de votre plancher.While your effect might look perfect through the display of HoloLens, any screenshots you take will show a large black object instead of what remains of your wall or floor. Cela est dû au fait que le matériel physique et les captures d’écran composites sont différents des hologrammes et de la réalité.The reason for this is that the physical hardware and screenshots composite holograms and reality differently. Nous allons nous pencher sur un moment dans quelques fausses maths...Let's detour for a moment into some fake math...

Alerte mathématique factice ! Ces chiffres et formules sont destinés à illustrer un point, et non une mesure exacte.Fake math alert! These numbers and formulas are meant to illustrate a point, not to be any sort of accurate metric!

Ce que vous voyez via HoloLens :What you see through HoloLens:

( Reality * darkening_amount ) + Holograms

Ce que vous voyez dans les captures d’écran et les vidéos :What you see in screenshots and video:

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

En anglais : ce que vous voyez par le biais de HoloLens est une combinaison simple de réalité obscurcie (par exemple, à travers les soleil) et les hologrammes que l’application souhaite afficher.In English: What you see through HoloLens is a simple combination of darkened reality (like through sunglasses) and whatever holograms the app wants to show. 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.But when you take a screenshot, the camera's image is blended with the app's holograms according to the per-pixel transparency value.

Pour contourner ce cas, vous pouvez modifier le matériel « boîte noire » pour écrire uniquement dans le tampon de profondeur et effectuer un tri avec tous les autres matériaux opaques.One way to get around this is to change the "black box" material to only write to the depth buffer, and sort with all the other opaque materials. Pour obtenir un exemple, consultez le fichier WindowOcclusion. Shader dans le MixedRealityToolkit sur GitHub.For an example of this, check out the WindowOcclusion.shader file in the MixedRealityToolkit on GitHub. Les lignes correspondantes sont copiées ici :The relevant lines are copied here:

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

(Notez que la ligne « offset 50, 100 » est de traiter les problèmes non liés, c’est pourquoi il est probablement judicieux de le faire.)(Note the "Offset 50, 100" line is to deal with unrelated issues, so it'd probably make sense to leave that out.)

L’implémentation d’un matériau d’occlusion invisible comme cela permet à votre application de dessiner une zone qui semble correcte dans l’affichage et dans des captures d’écran de réalité mixte.Implementing an invisible occlusion material like that will let your app draw a box that looks correct in the display and in mixed-reality screenshots. Pour les points de bonus, vous pouvez essayer d’améliorer encore davantage les performances de cette boîte en faisant des choses astucieuses pour dessiner encore moins de pixels invisibles, mais cela peut s’avérer très utile et ne pas être nécessaire.For bonus points, you can try to improve the performance of that box even further by doing clever things to draw even fewer invisible pixels, but that can really get into the weeds and usually won't be necessary.

Voici le sous-monde secret de la base de connaissances de m. 101, car Unity les dessine, à l’exception des parties externes de la zone d’occlusion.

Voici le sous-monde secret de la base de connaissances de m. 101 , car Unity les dessine, à l’exception des parties externes de la zone d’occlusion.Here is the secret underworld from MR Basics 101 as Unity draws it, except for the outer parts of the occluding box. Notez que le pivot du sous-monde se trouve au centre de la zone, ce qui permet de maintenir le trou aussi stable que possible par rapport à votre étage réel.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.

Faites-le vous-mêmeDo it yourself

Vous avez un HoloLens et souhaitez essayer l’effet pour vous-même ?Have a HoloLens and want to try out the effect for yourself? La méthode la plus simple que vous puissiez faire (aucun codage requis) consiste à installer l’application Free 3D Viewer, puis à charger le fichier. FBX que j’ai fourni sur GitHub pour afficher un modèle de pot de fleurs dans votre salle.The easiest thing you can do (no coding required) is to install the free 3D Viewer app and then load the download the.fbx file I've provided on GitHub to view a flower pot model in your room. Chargez-la sur HoloLens et vous pouvez voir l’illusion au travail.Load it on HoloLens, and you can see the illusion at work. Lorsque vous êtes devant le modèle, vous ne pouvez voir que dans le petit trou : tout le reste est invisible.When you're in front of the model, you can only see into the small hole—everything else is invisible. Examinez le modèle de tout autre côté et il disparaît entièrement.Look at the model from any other side and it disappears entirely. Utilisez les commandes de mouvement, de rotation et de mise à l’échelle de la visionneuse 3D pour positionner le trou virtuel sur n’importe quelle surface verticale que vous pouvez considérer pour générer des idées.Use the movement, rotation, and scale controls of 3D Viewer to position the virtual hole against any vertical surface you can think of to generate some ideas!

L’affichage de ce modèle dans l’éditeur Unity affiche une grande zone noire autour du Flowerpot.

L’affichage de ce modèle dans l’éditeur Unity affiche une grande zone noire autour du Flowerpot.Viewing this model in your Unity editor will show a large black box around the flowerpot. Sur HoloLens, la zone disparaît, en donnant un effet à une fenêtre magique.On HoloLens, the box disappears, giving way to a magic window effect.

Si vous souhaitez créer une application qui utilise cette technique, consultez le didacticiel 101 de base de l’utilisation de la version d’essai de la réalité de la réalité.If you want to build an app that uses this technique, check out the MR Basics 101 tutorial in the Mixed Reality tutorials. Le chapitre 7 se termine par une explosion de votre étage qui révèle un sous-monde masqué (comme illustré ci-dessus).Chapter 7 ends with an explosion in your floor that reveals a hidden underworld (as pictured above). Qui a dit que les didacticiels devaient être ennuyeuses ?Who said tutorials had to be boring?

Voici quelques idées pour vous permettre de suivre cette idée suivante :Here are some ideas of where you can take this idea next:

  • Pensez aux moyens de rendre le contenu à l’intérieur de la fenêtre interactive de trous virtuels.Think of ways to make the content inside the virtual hole interactive. Le fait de permettre à vos utilisateurs d’avoir un impact supérieur à leurs murs peut véritablement améliorer le sens que ce piège peut offrir.Letting your users have some impact beyond their walls can really improve the sense of wonder that this trick can provide.
  • Pensez aux différentes façons d’afficher les objets dans des zones connues.Think of ways to see through objects back to known areas. Par exemple, comment pouvez-vous placer un trou holographique dans votre table café pour voir votre étage sous celui-ci ?For example, how can you put a holographic hole in your coffee table and see your floor beneath it?

À propos de l’auteurAbout the author

Picture of Eric Rehmeyer Eric RehmeyerEric Rehmeyer
Ingénieur logiciel Senior @MicrosoftSenior Software Engineer @Microsoft

Voir aussiSee also