Étude de cas : utilisation du plan de stabilisation pour réduire la turbulence holographiqueCase study - Using the stabilization plane to reduce holographic turbulence

L’utilisation des hologrammes est souvent délicate.Working with holograms is often tricky. Le fait de se déplacer autour d’un espace et d’examiner des hologrammes à partir de tous les angles différents fournit un niveau d’immersion qui n’est pas disponible sur un écran d’ordinateur normal.Moving around a space and looking at holograms from all different angles provides a level of immersion that isn't available on a normal computer screen. La mise en place de ces hologrammes et la recherche réaliste sont une fonction technique accomplie par le matériel Microsoft HoloLens et la conception intelligente des applications holographiques.Keeping these holograms in place and looking realistic is a technical feat accomplished by both the Microsoft HoloLens hardware and the intelligent design of holographic apps.

Le TechThe tech

Pour que les hologrammes apparaissent comme s’ils partagent réellement l’espace avec vous, ils doivent s’afficher correctement sans séparation des couleurs.To make holograms appear as though they're actually sharing the space with you, they should render properly without color separation. Cela est possible, en partie, par la technologie intégrée au matériel HoloLens, qui permet aux hologrammes d’être ancrés sur ce que nous appelons un plan de stabilisation.This is achieved, in part, by technology built-in to the HoloLens hardware, which keeps holograms anchored on what we call a stabilization plane.

Un plan est défini par un point et un normal.A plane is defined by a point and a normal. Étant donné que nous voulons toujours que le plan fasse face à l’appareil photo, nous sommes soucieux de définir le point du plan.Since we always want the plane to face the camera, we're concerned with setting the plane's point. Nous pouvons indiquer à HoloLens le point sur lequel concentrer son traitement pour garder tout ce qui est ancré et stable.We can tell HoloLens what point to focus its processing on to keep everything anchored and stable. Toutefois, la définition de ce point de focus est spécifique à l’application et peut créer ou rompre votre application en fonction du contenu.However, setting this focus point is app-specific and can make or break your app depending on the content.

Les hologrammes fonctionnent mieux lorsque le plan de stabilisation est correctement appliqué, mais ce qui en fait dépend du type d’application que vous créez.Holograms work best when the stabilization plane is properly applied, but what that actually means depends on the type of application you’re creating. Jetons un coup d’œil sur la façon dont certaines des applications actuellement disponibles pour HoloLens peuvent résoudre ce problème.Let’s take a look at how some of the apps currently available for HoloLens tackle this problem.

Dans les coulissesBehind the scenes

Lors du développement des applications suivantes, nous avons remarqué que lorsque nous n’avions pas utilisé le plan, les objets sont montés lorsque notre tête a été déplacé.While developing the following apps, we noticed that when we didn't use the plane, objects would sway when our head moved. Nous verrons également la séparation des couleurs avec des déplacements rapides ou des hologrammes.We'd also see color separation with quick head or hologram movements. Nous avons mis fin à l’apprentissage au cours de la période d’essai et nous avons rencontré une erreur pour utiliser au mieux le plan de stabilisation et concevoir nos applications autour des problèmes qu’il ne peut pas résoudre.We ended up learning through trial and error how to best use the stabilization plane and design our apps around the problems that it can't fix.

Explorateur Galaxy : contenu fixe, interactivité 3DGalaxy Explorer: Stationary content, 3D interactivity

L' Explorateur Galaxy comporte deux éléments majeurs dans la scène : la vue principale du contenu céleste et la petite barre d’outils d’interface utilisateur qui suit votre point de regard.Galaxy Explorer has two major elements in the scene: The main view of the celestial content and the small UI toolbar that follows your gaze. Pour la logique de stabilisation, nous examinons ce que votre vecteur de pointage actuel croise avec dans chaque frame pour déterminer s’il atteint n’importe quoi sur une couche de collision spécifiée.For the stabilization logic, we look at what your current gaze vector intersects with in each frame to determine if it hits anything on a specified collision layer. Dans ce cas, les couches qui nous intéressent sont les planètes. par conséquent, si votre point de vue se trouve sur une planète, le plan de stabilisation est placé là.In this case, the layers we’re interested in are the planets, so if your gaze falls on a planet, the stabilization plane is placed there. Si aucun des objets de la couche de collision cible n’est atteint, l’application utilise une couche « plan B » secondaire.If none of the objects in the target collision layer are hit, the app uses a secondary “plan B” layer. Si rien n’est placé dans le regard, le plan de stabilisation est conservé à la même distance que lorsqu’Gazing au contenu.If nothing is being gazed at, the stabilization plane is kept at the same distance as it was when gazing at the content. Les outils d’interface utilisateur sont laissés en tant que cible plan, car nous avons trouvé le saut entre presque et beaucoup réduit la stabilité de la scène globale.The UI tools are left out as a plane target as we found the jump between near and far reduced the stability of the overall scene.

La conception de l’Explorateur Galaxy se prête bien à préserver la stabilité des éléments et à réduire l’effet de la séparation des couleurs.The design of Galaxy Explorer lends itself well to keeping things stable and reducing the effect of color separation. L’utilisateur est encouragé à parcourir et à Orbiter le contenu plutôt que de le déplacer d’un côté à l’autre, et les planètes s’orbitent suffisamment lentement pour que la séparation des couleurs ne soit pas perceptible.The user is encouraged to walk around and orbit the content rather than move along it from side to side, and the planets are orbiting slowly enough that the color separation isn’t noticeable. En outre, une constante de 60 FPS est conservée, ce qui permet d’éviter la séparation des couleurs.Additionally, a constant 60 FPS is maintained, which goes a long way in preventing color separation from happening.

Pour vérifier cela, recherchez un fichier appelé LSRPlaneModifier.cs dans le code de l' Explorateur Galaxy sur GitHub.To check this out yourself, look for a file called LSRPlaneModifier.cs in the Galaxy Explorer code on GitHub.

HoloStudio : contenu stationnaire avec un focus de l’interface utilisateurHoloStudio: Stationary content with a UI focus

Dans HoloStudio, vous passez la majeure partie de votre temps à regarder le même modèle que sur lequel vous travaillez.In HoloStudio, you spend most of your time looking at the same model you’re working on. Votre point de regard ne déplace pas un volume significatif, à l’exception de lorsque vous sélectionnez un nouvel outil ou que vous souhaitez naviguer dans l’interface utilisateur, afin de simplifier la logique de définition du plan.Your gaze doesn’t move a significant amount, except for when you select a new tool or want to navigate the UI, so we can keep the plane setting logic simple. Lorsque vous examinez l’interface utilisateur, le plan est défini sur n’importe quel élément d’interface utilisateur.When looking at the UI, the plane is set to whatever UI element your gaze snaps to. Lorsque vous examinez le modèle, le plan est une distance définie, correspondant à la distance par défaut entre vous et le modèle.When looking at the model, the plane is a set distance away, corresponding with the default distance between you and the model.

Plan de stabilisation visualisé dans HoloStudio lorsque l’utilisateur est en regard du bouton d’hébergement

Visionneuse HoloTour et 3D : contenu stationnaire avec animation et filmsHoloTour and 3D Viewer: Stationary content with animation and movies

Dans HoloTour et la visionneuse 3D, vous regardez un objet animé solitaires ou un film avec des effets 3D ajoutés par-dessus.In HoloTour and 3D Viewer, you’re looking at a solitary animated object or movie with 3D effects added on top of it. La stabilisation dans ces applications est définie sur ce que vous visualisez actuellement.The stabilization in these apps is set to whatever you’re currently viewing.

HoloTour vous évite également d’être trop éloigné de votre monde virtuel en le déplaçant avec vous au lieu de rester dans un emplacement fixe.HoloTour also prevents you from straying too far from your virtual world by having it move with you instead of staying in a fixed location. Cela vous permet de vous assurer que vous ne serez pas suffisamment éloigné d’autres hologrammes pour éviter les problèmes de stabilité.This ensures that you won’t get far enough away from other holograms for stability issues to creep in.

Dans cet exemple de HoloTour, le plan de stabilisation est défini sur ce film du Pantheon de Hadrian.

RoboRaid : contenu dynamique et interactions environnementalesRoboRaid: Dynamic content and environmental interactions

La définition du plan de stabilisation dans RoboRaid est étonnamment simple, bien qu’il s’agit de l’application qui nécessite le mouvement le plus soudain.Setting the stabilization plane in RoboRaid is surprisingly simple, despite being the app that requires the most sudden movement. Le plan est orienté vers les murs ou les objets environnants, et flotte à une distance fixe devant vous lorsque vous êtes suffisamment éloigné.The plane is geared towards sticking to the walls or the surrounding objects and will float at a fixed distance in front of you when you’re far enough away.

RoboRaid a été conçu avec le plan de stabilisation à l’esprit.RoboRaid was designed with the stabilization plane in mind. Le réticule, qui se déplace le plus puisqu’il est verrouillé, le contourne en utilisant uniquement le rouge et le bleu, ce qui réduit les traces de couleurs.The reticle, which moves the most since it’s head-locked, circumvents this by using only red and blue, which minimizes any color bleeding. Il contient également un peu de profondeur entre les pièces, ce qui réduit le risque de débordement de couleur qui se produit en le masquant avec un effet de parallaxe déjà attendu.It also contains a small bit of depth between the pieces, minimizing any color bleed that would occur by masking it with an already expected parallax effect. Les robots ne se déplacent pas rapidement et ne voyagent que sur de courtes distances à intervalles réguliers.The robots don’t move quickly and only travel short distances in regular intervals. Ils ont tendance à rester autour de 2 mètres devant vous, où la stabilisation est définie par défaut.They tend to stay around 2 meters in front of you, where the stabilization is set by default.

Fragments et jeunes Conker : contenu dynamique avec interaction environnementaleFragments and Young Conker: Dynamic content with environmental interaction

Écrit par Asobo Studio en C++, les fragments et les jeunes Conker adoptent une approche différente pour définir le plan de stabilisation.Written by Asobo Studio in C++, Fragments and Young Conker take a different approach to setting the stabilization plane. Les points d’intérêt (e) sont définis dans le code et classés par priorité.Points of interest (POI) are defined in code and ordered by priority. Les POI sont du contenu en jeu, comme le modèle Conker dans Conker, les menus, le réticule de visée et les logos.POIs are in-game content, such as the Conker model in Young Conker, menus, the aiming reticle, and logos. Les POI sont croisés par le point de regard de l’utilisateur et le plan est défini au centre de l’objet avec la priorité la plus élevée.The POIs are intersected by the user’s gaze and the plane is set to the center of the object with the highest priority. Si aucune intersection n’est effectuée, le plan est défini sur la distance par défaut.If no intersection occurs, the plane is set to the default distance.

Les fragments et les jeunes Conkers vous informent trop loin des hologrammes en interrompant l’application si vous vous déplacez en dehors de ce qui a été précédemment analysé comme espace de lecture.Fragments and Young Conker also design around you straying too far from the holograms by pausing the app if you move outside of what’s been previously scanned as your play space. Par conséquent, ils vous tiennent dans les limites qui sont disponibles pour fournir l’expérience la plus stable.As such, they keep you within the boundaries that are found to provide the most stable experience.

Faites-le vous-mêmeDo it yourself

Si vous avez un HoloLens et que vous souhaitez vous amuser avec les concepts de cet article, vous pouvez télécharger une scène de test pour tester les exercices suivants.If you have a HoloLens and want to play around with the concepts in this article, you can download a test scene to try out the following exercises. La scène de test utilise l’API Gizmo intégrée d’Unity pour vous aider à visualiser l’emplacement où votre plan est défini.The test scene uses Unity’s built-in gizmo API to help you visualize where your plane is being set. Le code était également utilisé pour capturer les captures d’écran dans cette étude de cas.The code was also used to capture the screenshots in this case study.

  1. Synchronisez la dernière version de MixedRealityToolkit-Unity.Sync the latest version of MixedRealityToolkit-Unity.
  2. Ouvrez la scène HoloToolkit-examples/Utilities/scenes/StabilizationPlaneSetting. Unity .Open the HoloToolkit-Examples/Utilities/Scenes/StabilizationPlaneSetting.unity scene.
  3. Générez et configurez le projet généré.Build and configure the generated project.
  4. Exécutez sur votre appareil.Run on your device.

Exercice 1Exercise 1

Vous verrez plusieurs points blancs à travers les différentes orientations.You'll see several white dots around you at different orientations. En face de vous, vous verrez trois points à des profondeurs différentes.In front of you, you’ll see three dots at different depths. Appuyez sur l’air pour changer le point sur lequel le plan est défini.Air tap to change which dot the plane is set to. Dans le cadre de cet exercice, et pour les deux autres, déplacez votre espace tout en Gazing les points.For this exercise, and for the other two, move around your space while gazing at the dots. Tournez votre tête à gauche, à droite, en haut et en aval.Turn your head left, right, up, and down. Rapprochez-vous des points et éloignez-les.Move closer to and farther from the dots. Découvrez comment ils réagissent lorsque le plan de stabilisation est défini sur des cibles différentes.See how they react when the stabilization plane is set to different targets.

Exercice 2Exercise 2

À présent, passez à votre droite jusqu’à ce que vous voyez deux points mobiles, l’un oscillant sur un chemin horizontal et l’autre sur un tracé vertical.Now, turn to your right until you see two moving dots, one oscillating on a horizontal path and one on a vertical path. Une fois encore, appuyez sur l’air pour changer le point sur lequel le plan est défini.Once again, air-tap to change which dot the plane is set to. Notez la manière dont la séparation des couleurs est atténuée et apparaît sur le point qui est connecté au plan.Notice how color separation is lessened and appears on the dot that is connected to the plane. Appuyez de nouveau pour utiliser la vélocité du point dans la fonction de paramétrage du plan.Tap again to use the dot’s velocity in the plane setting function. Ce paramètre donne une indication à HoloLens sur le mouvement prévu de l’objet.This parameter gives a hint to HoloLens about the object’s intended motion. Il est important de savoir quand l’utiliser, comme vous pouvez le remarquer lorsque la vélocité est utilisée sur un point, l’autre point mobile affiche une plus grande séparation des couleurs.It’s important to know when to use this, as you’ll notice when velocity is used on one dot, the other moving dot will show greater color separation. Gardez cela à l’esprit lors de la conception de vos applications. Si vous avez un flot de mouvements de vos objets, vous pouvez empêcher l’affichage des artefacts.Keep this in mind when designing your apps—having a cohesive flow to the motion of your objects can help prevent artifacts from appearing.

Exercice 3Exercise 3

Retournez à votre droite jusqu’à ce qu’une nouvelle configuration de points s’affiche.Turn to your right once more until you see a new configuration of dots. Dans ce cas, il y a des points dans la distance et un point en spirale avant.In this case, there are dots in the distance and one dot spiraling in and out in front of them. Appuyez pour changer le point sur lequel le plan est défini, en alternant entre les points à l’arrière et le point dans le mouvement.Air tap to change which dot the plane is set to, alternating between the dots in the back and the dot in motion. Notez que la définition de la position du plan et de la vélocité à celle du point en spirale fait apparaître les artefacts partout.Notice how setting the plane position and the velocity to that of the spiraling dot makes artifacts appear everywhere.

ConseilsTips

  • N’oubliez pas que la logique de définition de votre plan est simple.Keep your plane setting logic simple. Comme vous l’avez vu, vous n’avez pas besoin d’algorithmes de paramètre de plan complexes pour effectuer une expérience immersive.As you’ve seen, you don’t need complex plane setting algorithms to make an immersive experience. Le plan de stabilisation n’est qu’une partie du puzzle.The stabilization plane is only one piece of the puzzle.
  • Dans la mesure du possible, déplacez toujours le plan entre les cibles en douceur.When at all possible, always move the plane between targets smoothly. Le basculement instantané des cibles à distance peut perturber visuellement la scène.Instantly switching distant targets can visually disrupt the scene.
  • Envisagez de disposer d’une option dans votre plan qui définit la logique de verrouillage sur une cible spécifique.Consider having an option in your plane setting logic to lock onto a specific target. De cette façon, le plan peut être verrouillé sur un objet, tel qu’un logo ou un écran de titre, si nécessaire.That way, you can have the plane locked on an object, such as a logo or title screen, if needed.

À propos de l’auteurAbout the author

Picture of Ben Strukus Ben StrukusBen Strukus
Ingénieur logiciel @MicrosoftSoftware Engineer @Microsoft

Voir aussiSee also