Stabilité des hologrammesHologram stability

Pour obtenir des hologrammes stables, HoloLens dispose d’un pipeline de stabilisation d’image intégré.To achieve stable holograms, HoloLens has a built-in image stabilization pipeline. Le pipeline de stabilisation fonctionne automatiquement en arrière-plan. vous n’avez donc pas besoin d’effectuer des étapes supplémentaires pour l’activer.The stabilization pipeline works automatically in the background, so you don't need to take any extra steps to enable it. Toutefois, vous devez exercer des techniques qui améliorent la stabilité des hologrammes et évitez les scénarios qui réduisent la stabilité.However, you should exercise techniques that improve hologram stability and avoid scenarios that reduce stability.

Terminologie de la qualité des hologrammesHologram quality terminology

La qualité des hologrammes est un résultat d’un bon environnement et d’un développement d’applications correct.The quality of holograms is a result of good environment and good app development. Les applications qui s’exécutent à une constante 60 images par seconde dans un environnement où HoloLens peut suivre l’environnement garantissent la synchronisation de l’hologramme et du système de coordonnées correspondant. Du point de vue de l’utilisateur, les hologrammes destinés à être stationnaires ne seront pas déplacés par rapport à l’environnement.Apps running at a constant 60 frames-per-second in an environment where HoloLens can track the surroundings ensures the hologram and the matching coordinate system are in sync. From a user's perspective, holograms that are meant to be stationary won't move relative to the environment.

La terminologie suivante peut vous aider lorsque vous identifiez des problèmes liés à l’environnement, à des taux de rendu incohérents ou peu élevés, ou à tout autre.The following terminology can help you when you're identifying problems with the environment, inconsistent or low rendering rates, or anything else.

  • Précision.Accuracy. Une fois que l’hologramme est verrouillé et placé dans le monde réel, il doit rester à l’endroit où il est placé par rapport à l’environnement environnant et indépendamment du mouvement de l’utilisateur ou des modifications de l’environnement faible et épars.Once the hologram is world-locked and placed in the real world, it should stay where it's placed relative to the surrounding environment and independent of user motion or small and sparse environment changes. Si un hologramme s’affiche plus tard dans un emplacement inattendu, il s’agit d’un problème de précision .If a hologram later appears in an unexpected location, it's an accuracy problem. De tels scénarios peuvent se produire si deux salles distinctes paraissent identiques.Such scenarios can happen if two distinct rooms look identical.
  • Instabilité.Jitter. Les utilisateurs observent le bougé comme un tremblement haute fréquence d’un hologramme, ce qui peut se produire lorsque le suivi de l’environnement se dégrade.Users observe jitter as high frequency shaking of a hologram, which can happen when tracking of the environment degrades. Pour les utilisateurs, la solution exécute le Paramétrage du capteur.For users, the solution is running sensor tuning.
  • Judder.Judder. Une faible fréquence de rendu entraîne des mouvements inégaux et des images double d’hologrammes.Low rendering frequencies result in uneven motion and double images of holograms. Judder est particulièrement visible dans les hologrammes avec motion.Judder is especially noticeable in holograms with motion. Les développeurs doivent conserver une constante de 60 fps.Developers need to maintain a constant 60 FPS.
  • Cession.Drift. Les utilisateurs voient la dérive lorsqu’un hologramme s’éloigne de l’endroit où il a été placé à l’origine.Users see drift as a hologram appears to move away from where it was originally placed. La dérive se produit lorsque vous placez des hologrammes loin des ancres spatiales, en particulier dans les parties non mappées de l’environnement.Drift happens when you place holograms far away from spatial anchors, particularly in unmapped parts of the environment. La création d’hologrammes proches des ancres spatiales réduit la probabilité de dérive.Creating holograms close to spatial anchors lowers the likelihood of drift.
  • Jumpiness.Jumpiness. Quand un hologramme « sort » ou « saute » à son emplacement, parfois.When a hologram "pops" or "jumps" away from its location occasionally. Jumpiness peut se produire lorsque le suivi ajuste les hologrammes pour correspondre à la compréhension mise à jour de votre environnement.Jumpiness can occur as tracking adjusts holograms to match updated understanding of your environment.
  • Jeter.Swim. Lorsqu’un hologramme apparaît sur le Sway correspondant au mouvement de la tête de l’utilisateur.When a hologram appears to sway corresponding to the motion of the user's head. Cet événement se produit lorsque l’application n’a pas été entièrement implémentée et quela vue HoloLens n’est pas étalonnée pour l’utilisateur actuel.Swim occurs when the application hasn't fully implemented reprojection, and if the HoloLens isn't calibrated for the current user. L’utilisateur peut réexécuter l’application d' étalonnage pour résoudre le problème.The user can rerun the calibration application to fix the issue. Les développeurs peuvent mettre à jour le plan de stabilisation pour améliorer la stabilité.Developers can update the stabilization plane to further enhance stability.
  • Séparation des couleurs.Color separation. Les affichages dans HoloLens sont des affichages séquentiels de couleur, qui sont des canaux de couleur Flash rouge-vert-bleu-vert à 60 Hz (les champs de couleur individuels sont affichés à 240 Hz).The displays in HoloLens are color sequential displays, which flash color channels of red-green-blue-green at 60 Hz (individual color fields are shown at 240 Hz). Chaque fois qu’un utilisateur effectue le suivi d’un hologramme mobile avec ses yeux, les bords de début et de fin de l’hologramme sont séparés dans leurs couleurs constitutives, ce qui produit un effet arc-en-ciel.Whenever a user tracks a moving hologram with their eyes, that hologram's leading and trailing edges separate in their constituent colors, producing a rainbow effect. Le degré de séparation dépend de la vitesse de l’hologramme.The degree of separation is dependent upon the speed of the hologram. Dans certains cas plus rares, le déplacement des têtes s’effectue rapidement tout en regardant un hologramme stationnaire, ce qui se traduit par une séparation des couleurs.In some rarer cases, moving ones head rapidly while looking at a stationary hologram can also result in a rainbow effect, which is called color separation.

Fréquence d’imagesFrame rate

La fréquence d’images est le premier pilier de la stabilité de l’hologramme.Frame rate is the first pillar of hologram stability. Pour que les hologrammes apparaissent stables dans le monde, chaque image présentée à l’utilisateur doit avoir des hologrammes dessinés à l’endroit approprié.For holograms to appear stable in the world, each image presented to the user must have the holograms drawn in the correct spot. Le s’affiche sur HoloLens Refresh 240 fois par seconde, affichant quatre champs de couleur distincts pour chaque image nouvellement rendue, ce qui aboutit à une expérience utilisateur de 60 FPS (images par seconde).The displays on HoloLens refresh 240 times a second, showing four separate color fields for each newly rendered image, resulting in a user experience of 60 FPS (frames per second). Pour offrir la meilleure expérience possible, les développeurs d’applications doivent gérer 60 images/s, ce qui se traduit par la fourniture cohérente d’une nouvelle image au système d’exploitation toutes les 16 millisecondes.To provide the best experience possible, application developers must maintain 60 FPS, which translates to consistently providing a new image to the operating system every 16 milliseconds.

60 fps Pour dessiner des hologrammes pour qu’ils se trouvent dans le monde réel, HoloLens doit afficher les images à partir de la position de l’utilisateur.60 FPS To draw holograms to look like they're sitting in the real world, HoloLens needs to render images from the user's position. Étant donné que le rendu d’image prend du temps, HoloLens prédit l’emplacement où se trouve l’utilisateur lorsque les images sont affichées dans l’affichage.Since image rendering takes time, HoloLens predicts where a user's head will be when the images are shown in the displays. Toutefois, cet algorithme de prédiction est une approximation.However, this prediction algorithm is an approximation. HoloLens possède un matériel qui ajuste l’image rendue pour tenir compte de l’écart entre la position de la tête prédite et la position réelle de la tête.HoloLens has hardware that adjusts the rendered image to account for the discrepancy between the predicted head position and the actual head position. L’ajustement rend l’image visible par l’utilisateur comme si elle était affichée à partir de l’emplacement approprié, et les hologrammes semblent stables.The adjustment makes the image the user sees appear as if it's rendered from the correct location, and holograms feel stable. Les mises à jour de l’image fonctionnent mieux avec les petites modifications, et elles ne peuvent pas entièrement résoudre certains éléments dans l’image rendue, par exemple Motion-parallaxe.The image updates work best with small changes, and it can't completely fix certain things in the rendered image like motion-parallax.

En procédant à un rendu à 60 FPS, vous effectuez trois opérations pour vous aider à créer des hologrammes stables :By rendering at 60 FPS, you're doing three things to help make stable holograms:

  1. Minimisation de la latence globale entre le rendu d’une image et cette image qui est visible par l’utilisateur.Minimizing the overall latency between rendering an image and that image being seen by the user. Dans un moteur avec un jeu et un thread de rendu s’exécutant dans échelons, l’exécution sur 30FPS peut ajouter 33,3 ms de latence supplémentaire.In an engine with a game and a render thread running in lockstep, running at 30FPS can add 33.3 ms of extra latency. La réduction de la latence diminue l’erreur de prédiction et augmente la stabilité de l’hologramme.Reducing latency decreases prediction error and increases hologram stability.
  2. En faisant en sorte que chaque image atteignant les yeux de l’utilisateur a une latence cohérente.Making it so every image reaching the user's eyes have a consistent amount of latency. Si vous le rendez à 30 i/s, l’affichage affiche toujours les images à 60 FPS, ce qui signifie que la même image s’affiche deux fois dans une ligne.If you render at 30 fps, the display still displays images at 60 FPS, meaning the same image will be displayed twice in a row. Le deuxième Frame aura une latence de 16,6 ms supérieure à celle du premier frame et devra corriger une plus grande quantité d’erreur.The second frame will have 16.6-ms more latency than the first frame and will have to correct a more pronounced amount of error. Cette incohérence dans l’amplitude des erreurs peut entraîner des judders de 60 Hz indésirables.This inconsistency in error magnitude can cause unwanted 60 Hz judder.
  3. Vous réduisez l’impression de vibration, qui se caractérise par des mouvements irréguliers et des images dédoublées.Reducing the appearance of judder, which is characterized by uneven motion and double images. Les mouvements rapides des hologrammes et les fréquences d’images peu élevées provoquent une impression de vibration plus prononcée.Faster hologram motion and lower render rates are associated with more pronounced judder. Le maintien de la maintenance de 60 FPS à tout moment permet d’éviter Judder pour un hologramme mobile donné.Striving to maintain 60 FPS at all times will help avoid judder for a given moving hologram.

Cohérence du taux de trames La cohérence de la fréquence d’images est aussi importante qu’un nombre élevé d’images par seconde.Frame-rate consistency Frame rate consistency is as important as a high frames-per-second. Parfois, les trames supprimées sont inévitables pour toute application riche en contenu, et le HoloLens implémente des algorithmes sophistiqués pour effectuer une récupération suite à des erreurs occasionnelles.Occasionally dropped frames are inevitable for any content-rich application, and the HoloLens implements some sophisticated algorithms to recover from occasional glitches. Toutefois, une fréquence d’images fluctuante est beaucoup plus perceptible pour un utilisateur que de s’exécuter régulièrement à des fréquences d’images inférieures.However, a constantly fluctuating framerate is a lot more noticeable to a user than running consistently at lower frame rates. Par exemple, une application qui s’affiche en douceur pour cinq images (60 FPS pour la durée de ces cinq frames), puis supprime toutes les autres images pour les 10 images suivantes (30 i/s pour la durée de ces 10 images) apparaîtra plus instable qu’une application qui s’affiche régulièrement à 30 i/s.For example, an application that renders smoothly for five frames (60 FPS for the duration of these five frames) and then drops every other frame for the next 10 frames (30 FPS for the duration of these 10 frames) will appear more unstable than an application that consistently renders at 30 FPS.

Sur une note connexe, le système d’exploitation limite les applications à 30 FPS lorsque la capture de la réalité mixte est en cours d’exécution.On a related note, the operating system throttles down applications to 30 FPS when mixed reality capture is running.

Analyse des performances Il existe différents types d’outils qui peuvent être utilisés pour évaluer la fréquence d’images de votre application, par exemple :Performance analysis There are different kinds of tools that can be used to benchmark your application frame rate, such as:

  • GPUViewGPUView
  • Le débogueur de graphiques Visual StudioVisual Studio Graphics Debugger
  • Profileurs intégrés à des moteurs 3D tels qu’UnityProfilers built into 3D engines such as Unity

Distances de rendu d’hologrammeHologram render distances

Le système visuel humain intègre plusieurs signaux dépendant des distances lorsqu’il fixates et se concentre sur un objet.The human visual system integrates multiple distance-dependent signals when it fixates and focuses on an object.

  • Hébergement : la focalisation d’un oeil individuel.Accommodation - The focus of an individual eye.
  • Convergence : deux yeux se déplacent vers l’intérieur ou vers l’extérieur sur un objet.Convergence - Two eyes moving inward or outward to center on an object.
  • Vision binoculaire : disparités entre les images de gauche et de droite qui dépendent de la distance d’un objet par rapport à votre point de fixation.Binocular vision - Disparities between the left- and right-eye images that are dependent on an object's distance away from your fixation point.
  • Ombrage, taille angulaire relative et autres signaux monoculaire (simple oeil).Shading, relative angular size, and other monocular (single eye) cues.

La convergence et l’hébergement sont uniques, car leurs signaux extra-rétinienne liés à la façon dont les yeux changent pour percevoir des objets à des distances différentes.Convergence and accommodation are unique because their extra-retinal cues related to how the eyes change to perceive objects at different distances. Dans un affichage naturel, la convergence et l’hébergement sont liés.In natural viewing, convergence and accommodation are linked. Lorsque la vue des yeux est proche (par exemple, votre nez), les yeux se croisent et s’adaptent à un point proche.When the eyes view something near (for example, your nose), the eyes cross and accommodate to a near point. Lorsque la vue des yeux est infinie, les yeux deviennent parallèles et l’œil s’ajuste à l’infini.When the eyes view something at infinity, the eyes become parallel and the eye accommodates to infinity.

Les utilisateurs qui ont le port HoloLens s’adapteront toujours à 2,0 m pour maintenir une image claire, car les affichages HoloLens sont fixés à une distance optique d’environ 2,0 mètres de l’utilisateur.Users wearing HoloLens will always accommodate to 2.0 m to maintain a clear image because the HoloLens displays are fixed at an optical distance approximately 2.0 m away from the user. Les développeurs d’applications contrôlent l’emplacement des yeux des utilisateurs en plaçant le contenu et les hologrammes à différents niveaux.App developers control where users' eyes converge by placing content and holograms at various depths. Lorsque les utilisateurs s’accommodent de différentes distances, le lien naturel entre les deux signaux est cassé, ce qui peut entraîner une gêne visuelle ou une fatigue, en particulier lorsque l’ampleur du conflit est importante.When users accommodate and converge to different distances, the natural link between the two cues is broken, which can lead to visual discomfort or fatigue, especially when the magnitude of the conflict is large.

Il est possible d’éviter ou de minimiser le conflit entre le vergence et l’hébergement en conservant un contenu convergé aussi proche que possible de 2,0 m (autrement dit, dans une scène avec un grand nombre de points d’intérêt près de 2,0 m, si possible).Discomfort from the vergence-accommodation conflict can be avoided or minimized by keeping converged content as close to 2.0 m as possible (that is, in a scene with lots of depth place the areas of interest near 2.0 m, when possible). Lorsque le contenu ne peut pas être placé près de 2,0 m, le conflit entre le vergence et l’hébergement est plus grand lorsque l’utilisateur se déplace entre les différentes distances.When content can't be placed near 2.0 m, discomfort from the vergence-accommodation conflict is greatest when user’s gaze back and forth between different distances. En d’autres termes, il est bien plus facile de regarder un hologramme stationnaire qui reste 50 cm de plus que d’examiner un hologramme de 50 cm qui se déplace vers et à partir de vous dans le temps.In other words, it's much more comfortable to look at a stationary hologram that stays 50 cm away than to look at a hologram 50 cm away that moves toward and away from you over time.

Il est également avantageux de placer du contenu à 2,0 m, car les deux écrans sont conçus pour se chevaucher entièrement à cette distance.Placing content at 2.0 m is also advantageous because the two displays are designed to fully overlap at this distance. Pour les images placées en dehors de ce plan, lorsqu’elles se déplacent du côté du cadre holographique, elles apparaissent d’un affichage à l’autre, tout en étant toujours visibles.For images placed off this plane, as they move off the side of the holographic frame they'll appear from one display while still being visible on the other. Cette rivalisation binoculaire peut perturber le sentiment de profondeur de l’hologramme.This binocular rivalry can be disruptive to the depth perception of the hologram.

Distance optimale pour le placement des hologrammes par rapport à l’utilisateurOptimal distance for placing holograms from the user

Distance optimale pour le placement des hologrammes par rapport à l’utilisateur

Plans de coupe Pour un maximum de confort, nous vous recommandons de découper la distance de rendu à 85 cm avec disparition en fondu du contenu à partir de 1 m.Clip Planes For maximum comfort, we recommend clipping render distance at 85 cm with fade out of content starting at 1 m. Dans les applications où les hologrammes et les utilisateurs sont à la fois stationnaires, les hologrammes peuvent être visualisés confortablement aussi près de 50 cm. Dans ces cas, les applications doivent placer un plan de découpage inférieur à 30 cm et la disparition en fondu doit commencer au moins 10 cm du plan de découpage.In applications where holograms and users are both stationary, holograms can be viewed comfortably as near as 50 cm. In those cases, applications should place a clip plane no closer than 30 cm and fade out should start at least 10 cm away from the clip plane. Chaque fois que le contenu est plus proche de 85 cm, il est important de s’assurer que les utilisateurs ne se déplacent pas souvent de manière plus proche ou plus éloignée des hologrammes, ou qu’ils ne se déplacent pas souvent plus près ou plus loin de l’utilisateur, car ces situations sont susceptibles de provoquer une gêne à cause du conflit d’hébergement vergence.Whenever content is closer than 85 cm, it's important to ensure that users don't frequently move closer or farther from holograms or that holograms don't frequently move closer to or farther from the user as these situations are most likely to cause discomfort from the vergence-accommodation conflict. Le contenu doit être conçu pour réduire le besoin d’interaction plus proche que 85 cm de l’utilisateur, mais quand le contenu doit être rendu plus proche que 85 cm, une bonne règle empirique pour les développeurs consiste à concevoir des scénarios dans lesquels les utilisateurs et/ou les hologrammes ne se déplacent pas plus de 25% du temps.Content should be designed to minimize the need for interaction closer than 85 cm from the user, but when content must be rendered closer than 85 cm, a good rule of thumb for developers is to design scenarios where users and/or holograms don't move in depth more than 25% of the time.

Meilleures pratiques Lorsque les hologrammes ne peuvent pas être placés à 2 m et que les conflits entre la convergence et l’hébergement ne peuvent pas être évités, la zone optimale pour le placement de l’hologramme est comprise entre 1,25 m et 5 mètres.Best practices When holograms can't be placed at 2 m and conflicts between convergence and accommodation can't be avoided, the optimal zone for hologram placement is between 1.25 m and 5 m. Dans tous les cas, les concepteurs doivent structurer le contenu pour encourager les utilisateurs à interagir à 1 + m de distance (par exemple, ajuster la taille du contenu et les paramètres de positionnement par défaut).In every case, designers should structure content to encourage users to interact 1+ m away (for example, adjust content size and default placement parameters).

ReprojectionReprojection

HoloLens dispose d’une technique de stabilisation holographique à assistance matérielle sophistiquée appelée reprojection.HoloLens has a sophisticated hardware-assisted holographic stabilization technique known as reprojection. La reprojection prend en compte le mouvement et la modification du point de vue (CameraPose) à mesure que la scène s’anime et que l’utilisateur déplace sa tête.Reprojection takes into account motion and change of the point of view (CameraPose) as the scene animates and the user moves their head. Les applications doivent prendre des mesures spécifiques pour utiliser au mieux la reprojection.Applications need to take specific actions to best use reprojection.

Il existe quatre types principaux de reprojectionThere are four main types of reprojection

  • Reprojection de profondeur : Produit les meilleurs résultats avec le moins d’effort possible de l’application.Depth Reprojection: Produces the best results with the least amount of effort from the application. Toutes les parties de la scène rendue sont stabilisées indépendamment en fonction de leur distance par rapport à l’utilisateur.All parts of the rendered scene are independently stabilized based on their distance from the user. Certains artefacts de rendu peuvent être visibles lorsqu’il y a des modifications nettes en profondeur.Some rendering artifacts may be visible where there are sharp changes in depth. Cette option est uniquement disponible sur HoloLens 2 et les casques immersifs.This option is only available on HoloLens 2 and Immersive Headsets.
  • Reprojection planaire : Permet à l’application de contrôler précisément la stabilisation.Planar Reprojection: Allows the application precise control over stabilization. Un plan est défini par l’application et tout ce qui se trouve sur ce plan est la partie la plus stable de la scène.A plane is set by the application and everything on that plane will be the most stable part of the scene. Plus un hologramme est éloigné du plan, moins il sera stable.The further a hologram is away from the plane, the less stable it will be. Cette option est disponible sur toutes les plateformes Windows MR.This option is available on all Windows MR platforms.
  • Reprojection plan automatique : Le système définit un plan de stabilisation à l’aide des informations contenues dans le tampon de profondeur.Automatic Planar Reprojection: The system sets a stabilization plane using information in the depth buffer. Cette option est disponible sur HoloLens Generation 1 et HoloLens 2.This option is available on HoloLens generation 1 and HoloLens 2.
  • Aucun : Si l’application n’a aucun effet, la reprojection planaire est utilisée avec le plan de stabilisation fixe à 2 mètres dans la direction du point de regard de l’utilisateur, ce qui produit généralement des résultats sous-standard.None: If the application does nothing, Planar Reprojection is used with the stabilization plane fixed at 2 meters in the direction of the user's head gaze, usually producing substandard results.

Les applications doivent prendre des mesures spécifiques pour activer les différents types de reprojectionApplications need to take specific actions to enable the different types of reprojection

  • Reprojection de profondeur : L’application soumet son tampon de profondeur au système pour chaque frame rendu.Depth Reprojection: The application submits their depth buffer to the system for every rendered frame. Sur Unity, la reprojection de profondeur s’effectue à l’aide de l’option de mémoire tampon de profondeur partagée dans le volet Windows Mixed Reality Settings sous gestion du plug-in XR.On Unity, Depth Reprojection is done with the Shared Depth Buffer option in the Windows Mixed Reality Settings pane under XR Plugin Management. Les applications DirectX appellent CommitDirect3D11DepthBuffer.DirectX apps call CommitDirect3D11DepthBuffer. L’application ne doit pas appeler SetFocusPoint.The application shouldn't call SetFocusPoint.
  • Reprojection planaire : Sur chaque image, les applications indiquent au système l’emplacement d’un plan à stabiliser.Planar Reprojection: On every frame, applications tell the system the location of a plane to stabilize. Les applications Unity appellent SetFocusPointForFrame et doivent avoir une mémoire tampon de profondeur partagée désactivée.Unity applications call SetFocusPointForFrame and should have Shared Depth Buffer disabled. Les applications DirectX appellent SetFocusPoint et ne doivent pas appeler CommitDirect3D11DepthBuffer.DirectX apps call SetFocusPoint and shouldn't call CommitDirect3D11DepthBuffer.
  • Reprojection plan automatique : Pour activer, l’application doit envoyer son tampon de profondeur au système comme pour la reprojection de profondeur.Automatic Planar Reprojection: To enable, the application needs to submit their depth buffer to the system as they would for Depth Reprojection. Les applications qui utilisent la boîte à outils de la réalité mixte (MRTK) peuvent configurer le fournisseur de paramètres d’appareil photo pour qu’il utilise la reprojection autoplanaire.Apps using the Mixed Reality Toolkit (MRTK) can configure the camera settings provider to use AutoPlanar Reprojection. Les applications natives doivent définir le DepthReprojectionMode HolographicCameraRenderingParameters sur AutoPlanar chaque frame.Native apps should set the DepthReprojectionMode in the HolographicCameraRenderingParameters to AutoPlanar each frame. Pour la génération de HoloLens 1, l’application ne doit pas appeler SetFocusPoint.For HoloLens generation 1, the application should not call SetFocusPoint.

Choix de la technique de reprojectionChoosing Reprojection Technique

Type de stabilisationStabilization Type Casques immersifsImmersive Headsets Génération HoloLens 1HoloLens generation 1 HoloLens 2HoloLens 2
Reprojection de profondeurDepth Reprojection RecommandéRecommended N/AN/A RecommandéRecommended

Les applications Unity doivent utiliser Unity 2018.4.12 ou version ultérieure ou Unity 2019,3 ou une version ultérieure.Unity applications must use Unity 2018.4.12 or later or Unity 2019.3 or later. Sinon, utilisez la reprojection automatique planaire.Otherwise use Automatic Planar Reprojection.
Reprojection plan automatiqueAutomatic Planar Reprojection N/AN/A Valeur par défaut recommandéeRecommended default Recommandé si la reprojection de profondeur ne donne pas les meilleurs résultatsRecommended if Depth Reprojection isn't giving the best results

Les applications Unity sont recommandées pour utiliser Unity 2018.4.12 ou version ultérieure ou Unity 2019,3 ou une version ultérieure.Unity applications are recommended to use Unity 2018.4.12 or later or Unity 2019.3 or later. Les versions d’Unity précédentes fonctionnent avec des résultats de reprojection légèrement dégradés.Previous Unity versions will work with slightly degraded reprojection results.
Reprojection planairePlanar Reprojection Non recommandéNot Recommended Recommandé si le plan automatique ne donne pas les meilleurs résultatsRecommended if Automatic Planar isn't giving the best results Utilisez si aucune des options de profondeur ne donne les résultats souhaitésUse if neither of the depth options give desired results

La précision de la vérification est définie correctementVerifying Depth is Set Correctly

Lorsqu’une méthode de reprojection utilise la mémoire tampon de profondeur, il est important de vérifier que le contenu de la mémoire tampon de profondeur représente la scène rendue de l’application.When a reprojection method uses the depth buffer, it's important to verify the contents of the depth buffer represent the application's rendered scene. Un certain nombre de facteurs peuvent entraîner des problèmes.A number of factors can cause problems. Si un deuxième appareil photo est utilisé pour afficher les superpositions de l’interface utilisateur, par exemple, il est probable qu’il remplace toutes les informations de profondeur de la vue réelle.If there's a second camera used to render user interface overlays, for example, it's likely to overwrite all the depth information from the actual view. Les objets transparents ne définissent souvent pas la profondeur.Transparent objects often don't set depth. Une partie du rendu du texte ne définit pas la profondeur par défaut.Some text rendering won't set depth by default. Il y aura des problèmes visibles dans le rendu lorsque la profondeur ne correspondra pas aux hologrammes rendus.There will be visible glitches in the rendering when depth doesn't match the rendered holograms.

HoloLens 2 a un visualiseur qui indique où la profondeur est et n’est pas définie, ce qui peut être activé à partir du portail de l’appareil.HoloLens 2 has a visualizer to show where depth is and isn't being set, which can be enabled from Device Portal. Dans l’onglet vues > de stabilité d’hologramme , activez la case à cocher Afficher la visualisation de profondeur dans le casque .On the Views > Hologram Stability tab, select the Display depth visualization in headset checkbox. Les zones dont la profondeur est définie correctement sont bleues.Areas that have depth set properly will be blue. Les éléments rendus qui n’ont pas d’ensemble de profondeur sont marqués en rouge et doivent être corrigés.Rendered items that don't have depth set are marked in red and need to be fixed.

Notes

La visualisation de la profondeur n’apparaît pas dans la capture de la réalité mixte.The visualization of the depth will not show up in Mixed Reality Capture. Il n’est visible que par l’intermédiaire de l’appareil.It is only visible through the device.

Certains outils d’affichage GPU permettent de visualiser le tampon de profondeur.Some GPU viewing tools will allow visualization of the depth buffer. Les développeurs d’applications peuvent utiliser ces outils pour s’assurer que la profondeur est correctement définie.Application developers can use these tools to make sure depth is being set properly. Consultez la documentation pour les outils de l’application.Consult the documentation for the application's tools.

Utilisation de la reprojection planaireUsing Planar Reprojection

Notes

Pour les casques immersifs sur les ordinateurs de bureau, la définition d’un plan de stabilisation est généralement moins productive, car elle offre moins de qualité visuelle que le fait de fournir le tampon de profondeur de votre application au système pour permettre une reprojection basée sur la profondeur par pixel.For desktop immersive headsets, setting a stabilization plane is usually counter-productive, as it offers less visual quality than providing your app's depth buffer to the system to enable per-pixel depth-based reprojection. À moins d’être exécuté sur un HoloLens, vous devez généralement éviter de définir le plan de stabilisation.Unless running on a HoloLens, you should generally avoid setting the stabilization plane.

Plan de stabilisation pour les objets 3D

L’appareil tente automatiquement de choisir ce plan, mais l’application doit vous aider en sélectionnant le point de focus dans la scène.The device will automatically attempt to choose this plane, but the application should assist by selecting the focus point in the scene. Les applications Unity qui s’exécutent sur un HoloLens doivent choisir le meilleur point de focalisation en fonction de votre scène et la passer dans SetFocusPoint ().Unity apps running on a HoloLens should choose the best focus point based on your scene and pass it into SetFocusPoint(). Un exemple de définition du point de focus dans DirectX est inclus dans le modèle de cube à rotation par défaut.An example of setting the focus point in DirectX is included in the default spinning cube template.

Unity envoie votre tampon de profondeur à Windows pour permettre une reprojection par pixel quand vous exécutez votre application sur un casque immersif connecté à un PC de bureau, ce qui offre une meilleure qualité d’image sans un travail explicite par l’application.Unity will submit your depth buffer to Windows to enable per-pixel reprojection when you run your app on an immersive headset connected to a desktop PC, which provides even better image quality without explicit work by the app. Vous ne devez fournir un point de focus que lorsque votre application s’exécute sur un HoloLens ou que la reprojection par pixel sera remplacée.You should only provide a Focus Point when your app is running on a HoloLens, or the per-pixel reprojection will be overridden.

// SetFocusPoint informs the system about a specific point in your scene to
// prioritize for image stabilization. The focus point is set independently
// for each holographic camera.
// You should set the focus point near the content that the user is looking at.
// In this example, we put the focus point at the center of the sample hologram,
// since that is the only hologram available for the user to focus on.
// You can also set the relative velocity and facing of that content; the sample
// hologram is at a fixed point so we only need to indicate its position.
renderingParameters.SetFocusPoint(
    currentCoordinateSystem,
    spinningCubeRenderer.Position
    );

Le positionnement du point de concentration dépend en grande partie de ce que l’hologramme examine.Placement of the focus point largely depends on what the hologram is looking at. L’application a le vecteur de pointage pour référence et le concepteur d’applications sait à quel contenu il souhaite que l’utilisateur observe.The app has the gaze vector for reference and the app designer knows what content they want the user to observe.

La seule chose la plus importante qu’un développeur puisse faire pour stabiliser des hologrammes est son rendu à 60 FPS.The single most important thing a developer can do to stabilize holograms is to render at 60 FPS. La chute inférieure à 60 FPS réduit considérablement la stabilité des hologrammes, quelle que soit l’optimisation du plan de stabilisation.Dropping below 60 FPS will dramatically reduce hologram stability, whatever the stabilization plane optimization.

Meilleures pratiques Il n’existe pas de méthode universelle pour configurer le plan de stabilisation et il est spécifique à l’application.Best practices There's no universal way to set up the stabilization plane and it's app-specific. Notre recommandation principale est d’expérimenter et de voir ce qui convient le mieux à votre scénario.Our main recommendation is to experiment and see what works best for your scenario. Toutefois, essayez d’aligner le plan de stabilisation avec autant de contenu que possible, car tout le contenu de ce plan est parfaitement stabilisé.However, try to align the stabilization plane with as much content as possible because all the content on this plane is perfectly stabilized.

Par exemple :For example:

  • Si vous disposez uniquement d’un contenu planaire (lecture de l’application de lecture vidéo), alignez le plan de stabilisation avec le plan qui contient votre contenu.If you have only planar content (reading app, video playback app), align the stabilization plane with the plane that has your content.
  • Si trois petites sphères sont verrouillées dans le monde, faites en sorte que le plan de stabilisation soit « coupé » par le biais des centres de tous les sphères actuellement dans la vue de l’utilisateur.If there are three small spheres that are world-locked, make the stabilization plane "cut" though the centers of all the spheres that are currently in the user's view.
  • Si votre scène a du contenu à des profondeurs sensiblement différentes, privilégiez les autres objets.If your scene has content at substantially different depths, favor further objects.
  • Veillez à ajuster le point de stabilisation chaque cadre pour qu’il coïncide avec l’hologramme que l’utilisateur regarde.Make sure to adjust the stabilization point every frame to coincide with the hologram the user is looking at

Éléments à éviter Le plan de stabilisation est un outil formidable pour obtenir des hologrammes stables, mais en cas d’utilisation inutilisée, cela peut entraîner une sérieuse instabilité de l’image.Things to Avoid The stabilization plane is a great tool to achieve stable holograms, but if misused it can result in severe image instability.

  • Ne pas « déclencher et oublier ».Don't "fire and forget". Vous pouvez vous retrouver avec le plan de stabilisation derrière l’utilisateur ou attaché à un objet qui n’est plus dans la vue de l’utilisateur.You can end up with the stabilization plane behind the user or attached to an object that is no longer in the user's view. Assurez-vous que le plan de stabilisation normal est défini en regard de caméra-Forward (par exemple,-Camera. Forward).Ensure the stabilization plane normal is set opposite camera-forward (for example, -camera.forward)
  • Ne modifiez pas rapidement le plan de stabilisation entre les extrêmesDon't rapidly change the stabilization plane back and forth between extremes
  • Ne laissez pas le plan de stabilisation défini sur une distance/orientation fixeDon't leave the stabilization plane set to a fixed distance/orientation
  • Ne laissez pas le plan de stabilisation passer par l’utilisateurDon't let the stabilization plane cut through the user
  • Ne définissez pas le point de focus lorsqu’il s’exécute sur un PC de bureau plutôt qu’un HoloLens, et recourez plutôt à une reprojection basée sur la profondeur par pixel.Don't set the focus point when running on a desktop PC rather than a HoloLens, and instead rely on per-pixel depth-based reprojection.

Séparation des couleursColor separation

En raison de la nature des affichages HoloLens, un artefact appelé « séparation des couleurs » peut parfois être perçu.Because of the nature of HoloLens displays, an artifact called "color-separation" can sometimes be perceived. Il se manifeste en tant qu’image séparant les couleurs de base individuelles (rouge, vert et bleu).It manifests as the image separating into individual base colors - red, green, and blue. L’artefact peut être particulièrement visible quand vous affichez des objets blancs, car ils ont de grandes quantités de rouge, de vert et de bleu.The artifact can be especially visible when displaying white objects, since they have large amounts of red, green, and blue. Elle est la plus prononcée lorsqu’un utilisateur effectue un suivi visuel d’un hologramme qui se déplace sur l’image holographique à grande vitesse.It's most pronounced when a user visually tracks a hologram that is moving across the holographic frame at high speed. Une autre façon dont l’artefact peut manifester est la déformation/déformation des objets.Another way the artifact can manifest is warping/deformation of objects. Si un objet a un contraste élevé et/ou des couleurs pures, comme le rouge, le vert, le bleu, la séparation des couleurs sera perçue comme déviation des différentes parties de l’objet.If an object has high contrast and/or pure colors such as red, green, blue, color-separation will be perceived as warping of different parts of the object.

Exemple de ce à quoi peut ressembler la séparation des couleurs d’un curseur blanc en tête verrouillé à mesure qu’un utilisateur fait pivoter son en-tête sur le côté :Example of what the color separation of a head-locked white round cursor could look like as a user rotates their head to the side:

Exemple de ce à quoi peut ressembler la séparation des couleurs d’un curseur blanc en tête verrouillé à mesure qu’un utilisateur fait pivoter son en-tête sur le côté.

Bien qu’il soit difficile d’éviter complètement la séparation des couleurs, plusieurs techniques sont disponibles pour y remédier.Though it's difficult to completely avoid color separation, there are several techniques available to mitigate it.

La séparation des couleurs peut être observée sur :Color-separation can be seen on:

  • Objets qui se déplacent rapidement, y compris les objets verrouillés en tête tels que le curseur.Objects that are moving quickly, including head-locked objects such as the cursor.
  • Objets qui sont largement éloignés du plan de stabilisation.Objects that are substantially far from the stabilization plane.

Pour atténuer les effets de la séparation des couleurs :To attenuate the effects of color-separation:

  • Faites en sorte que l’objet retarde le regard de l’utilisateur.Make the object lag the user's gaze. Elle doit apparaître comme si elle avait une certaine inertie et est attachée au point de regard « sur les ressorts ».It should appear as if it has some inertia and is attached to the gaze "on springs". Cette approche ralentit le curseur (ce qui réduit la distance de séparation) et le met derrière le point de regard probable de l’utilisateur.This approach slows the cursor (reducing separation distance) and puts it behind the user's likely gaze point. Tant qu’il rattrape rapidement l’utilisateur lorsque l’utilisateur cesse de décaler le regard, il pense naturellement.So long as it quickly catches up when the user stops shifting their gaze it feels natural.
  • Si vous ne souhaitez pas déplacer un hologramme, essayez de conserver sa vitesse de mouvement en dessous de 5 degrés/seconde si vous pensez que l’utilisateur la suivra avec ses yeux.If you do want to move a hologram, try to keep its movement speed below 5 degrees/second if you expect the user to follow it with their eyes.
  • Utilisez Light au lieu de Geometry pour le curseur.Use light instead of geometry for the cursor. Une source d’éclairage virtuel attachée au point de regard est perçue comme un pointeur interactif, mais n’entraîne pas de séparation des couleurs.A source of virtual illumination attached to the gaze will be perceived as an interactive pointer but won't cause color-separation.
  • Ajustez le plan de stabilisation pour qu’il corresponde aux hologrammes auxquels l’utilisateur est Gazing.Adjust the stabilization plane to match the holograms the user is gazing at.
  • Rendez l’objet rouge, vert ou bleu.Make the object red, green, or blue.
  • Basculez vers une version floue du contenu.Switch to a blurred version of the content. Par exemple, un curseur blanc rond peut être remplacé par une ligne légèrement floue dans le sens du mouvement.For example, a round white cursor could be changed to a slightly blurred line oriented in the direction of motion.

Comme précédemment, le rendu à 60 FPS et la définition du plan de stabilisation sont les techniques les plus importantes pour la stabilité des hologrammes.As before, rendering at 60 FPS and setting the stabilization plane are the most important techniques for hologram stability. En cas de séparation sensible des couleurs, vérifiez d’abord que la fréquence d’images répond aux attentes.If facing noticeable color separation, first make sure the frame rate meets expectations.

Voir aussiSee also