Stabilité des hologrammes

Pour obtenir des hologrammes stables, HoloLens dispose d’un pipeline de stabilisation d’image intégré. Le pipeline de stabilisation fonctionne automatiquement en arrière-plan. Vous n’avez donc pas besoin d’effectuer d’étapes supplémentaires pour l’activer. Toutefois, vous devez exercer des techniques qui améliorent la stabilité de l’hologramme et évitent les scénarios qui réduisent la stabilité.

Terminologie de qualité des hologrammes

La qualité des hologrammes est le résultat d’un bon environnement et d’un bon développement d’applications. Les applications s’exécutant à une constante de 60 images par seconde dans un environnement où HoloLens pouvez suivre l’environnement garantit que l’hologramme et le système de coordonnées correspondant sont synchronisés. Du point de vue d’un utilisateur, les hologrammes destinés à être stationnaires ne se déplacent pas par rapport à l’environnement.

La terminologie suivante peut vous aider lorsque vous identifiez des problèmes avec l’environnement, des taux de rendu incohérents ou faibles, ou tout autre élément.

  • Justesse. Une fois que l’hologramme est verrouillé dans le monde et placé dans le monde réel, il doit rester là où il est placé par rapport à l’environnement environnant et indépendamment du mouvement de l’utilisateur ou des changements d’environnement petits et épars. Si un hologramme apparaît ultérieurement dans un emplacement inattendu, il s’agit d’un problème de précision . De tels scénarios peuvent se produire si deux salles distinctes semblent identiques.
  • Gigue. Les utilisateurs observent la gigue comme un tremblement de fréquence élevée d’un hologramme, ce qui peut se produire lors du suivi de l’environnement se dégrade. Pour les utilisateurs, la solution exécute le réglage des capteurs.
  • Judder. Les fréquences de rendu faibles entraînent un mouvement inégale et des images doubles d’hologrammes. Judder est particulièrement visible dans les hologrammes avec mouvement. Les développeurs doivent maintenir une constante de 60 FPS.
  • Dérive. Les utilisateurs voient la dérive comme un hologramme semble s’éloigner de l’endroit où il a été placé à l’origine. La dérive se produit lorsque vous placez des hologrammes loin des ancres spatiales, en particulier dans des parties non mappées de l’environnement. La création d’hologrammes proches des ancres spatiales réduit la probabilité de dérive.
  • Jumpiness. Lorsqu’un hologramme « pops » ou « saute » de son emplacement occasionnellement. La jumpiness peut se produire lorsque le suivi ajuste les hologrammes pour qu’ils correspondent à la compréhension mise à jour de votre environnement.
  • Nager. Lorsqu’un hologramme apparaît comme correspondant au mouvement de la tête de l’utilisateur. Nager se produit lorsque l’application n’a pas entièrement implémenté la reprojection et si le HoloLens n’est pas étalonné pour l’utilisateur actuel. L’utilisateur peut réexécuter l’application d’étalonnage pour résoudre le problème. Les développeurs peuvent mettre à jour le plan de stabilisation pour améliorer davantage la stabilité.
  • Séparation des couleurs. Les affichages dans HoloLens sont des affichages séquentiels de couleur, qui les canaux de couleur flash de rouge-vert-bleu-vert-vert à 60 Hz (les champs de couleur individuels sont affichés à 240 Hz). Chaque fois qu’un utilisateur suit un hologramme mobile avec ses yeux, les bords de début et de fin de cet hologramme se séparent dans leurs couleurs constituantes, ce qui produit un effet arc-en-ciel. Le degré de séparation dépend de la vitesse de l’hologramme. Dans certains cas plus rares, le déplacement rapide d’une tête tout en regardant un hologramme stationnaire peut également entraîner un effet arc-en-ciel, qui est appelé séparation des couleurs.

Fréquence d’images

La fréquence d’images est le premier pilier de la stabilité de l’hologramme. Pour que les hologrammes apparaissent stables dans le monde, chaque image présentée à l’utilisateur doit avoir les hologrammes dessinés au bon endroit. Les affichages sur HoloLens actualiser 240 fois par seconde, montrant quatre champs de couleur distincts pour chaque image nouvellement rendue, ce qui entraîne une expérience utilisateur de 60 FPS (images par seconde). Pour offrir la meilleure expérience possible, les développeurs d’applications doivent conserver 60 FPS, ce qui se traduit par la fourniture cohérente d’une nouvelle image au système d’exploitation toutes les 16 millisecondes.

60 FPS Pour dessiner des hologrammes comme s’ils sont assis dans le monde réel, HoloLens doit afficher des images à partir de la position de l’utilisateur. Étant donné que le rendu d’image prend du temps, HoloLens prédit l’emplacement où se trouve la tête d’un utilisateur lorsque les images sont affichées dans les affichages. Toutefois, cet algorithme de prédiction est une approximation. HoloLens dispose d’un matériel qui ajuste l’image rendue pour tenir compte de l’écart entre la position de tête prédite et la position réelle de la tête. L’ajustement rend l’image que l’utilisateur voit apparaître comme s’il est rendu à partir de l’emplacement approprié, et les hologrammes se sentent stables. Les mises à jour de l’image fonctionnent mieux avec de petites modifications, et il ne peut pas complètement corriger certaines choses dans l’image rendue comme motion-parallax.

En effectuant un rendu à 60 FPS, vous effectuez trois opérations pour vous aider à créer des hologrammes stables :

  1. Réduction de la latence globale entre le rendu d’une image et cette image vue par l’utilisateur. Dans un moteur avec un jeu et un thread de rendu s’exécutant dans lockstep, l’exécution à 30FPS peut ajouter 33,3 ms de latence supplémentaire. La réduction de la latence diminue l’erreur de prédiction et augmente la stabilité de l’hologramme.
  2. Ce qui permet à chaque image d’atteindre les yeux de l’utilisateur d’une quantité cohérente de latence. Si vous affichez à 30 fps, l’affichage affiche toujours des images à 60 FPS, ce qui signifie que la même image s’affiche deux fois dans une ligne. La deuxième image aura une latence de 16,6 ms supérieure à la première image et devra corriger une quantité d’erreur plus prononcée. Cette incohérence dans l’ampleur de l’erreur peut provoquer un judder de 60 Hz indésirable.
  3. Vous réduisez l’impression de vibration, qui se caractérise par des mouvements irréguliers et des images dédoublées. Les mouvements rapides des hologrammes et les fréquences d’images peu élevées provoquent une impression de vibration plus prononcée. S’efforcer de maintenir 60 FPS à tout moment aidera à éviter la judder pour un hologramme mobile donné.

Cohérence de fréquence d’images La cohérence de la fréquence d’images est aussi importante qu’une trame élevée par seconde. Parfois, les images supprimées sont inévitables pour n’importe quelle application riche en contenu, et le HoloLens implémente certains algorithmes sophistiqués à récupérer à partir de problèmes occasionnels. Toutefois, une fréquence d’images fluctuante constante est beaucoup plus notable pour un utilisateur que l’exécution cohérente à des fréquences d’images inférieures. Par exemple, une application qui s’affiche en douceur pour cinq images (60 FPS pour la durée de ces cinq images), puis supprime toutes les autres images pour les 10 images suivantes (30 FPS pour la durée de ces 10 images) apparaît plus instable qu’une application qui s’affiche de manière cohérente à 30 FPS.

Dans une note connexe, le système d’exploitation limite les applications à 30 FPS lorsque la capture de réalité mixte est en cours d’exécution.

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 :

  • GPUView
  • Le débogueur de graphiques Visual Studio
  • Profils intégrés dans des moteurs 3D tels que Unity

Distances de rendu d’hologramme

Le système visuel humain intègre plusieurs signaux dépendants de la distance lorsqu’il corrige et se concentre sur un objet.

  • Hébergement - Le focus d’un œil individuel.
  • Convergence - Deux yeux se déplaçant vers l’intérieur ou vers l’extérieur pour centrer sur un objet.
  • Vision binoculaire - Disparités entre les images gauche et droite qui dépendent de la distance d’un objet loin de votre point de fixation.
  • Trame de fond, taille angulaire relative et autres signaux monoculaires (œil unique).

La convergence et l’hébergement sont uniques, car leurs signaux extra-rétiniens liés à la façon dont les yeux changent pour percevoir des objets à différentes distances. Dans l’affichage naturel, la convergence et l’hébergement sont liés. Lorsque les yeux regardent quelque chose près (par exemple, votre nez), les yeux croisent et s’accommodent à un point proche. Lorsque les yeux regardent quelque chose à l’infini, les yeux deviennent parallèles et l’œil s’installe à l’infini.

Les utilisateurs portant HoloLens s’adapteront toujours à 2,0 m pour conserver une image claire, car les écrans HoloLens sont fixés à une distance optique d’environ 2,0 m de l’utilisateur. Les développeurs d’applications contrôlent l’endroit où les yeux des utilisateurs convergent en plaçant du contenu et des hologrammes à différentes profondeurs. Lorsque les utilisateurs prennent en charge et convergent vers différentes distances, le lien naturel entre les deux signaux est rompu, ce qui peut entraîner un malaise visuel ou une fatigue, en particulier lorsque l’ampleur du conflit est importante.

L’inconfort du conflit de vergence-hébergement peut être évité ou réduit en conservant le contenu convergé aussi près de 2,0 m que possible (c’est-à-dire, dans une scène avec beaucoup de profondeur place les zones d’intérêt près de 2,0 m, si possible). Lorsque le contenu ne peut pas être placé près de 2,0 m, l’inconfort du conflit vergence-hébergement est le plus grand lorsque le regard de l’utilisateur revient entre différentes distances. En d’autres termes, il est bien plus confortable de regarder un hologramme stationnaire situé à 50 cm que de regarder un hologramme situé à 50 cm qui se rapproche et s’éloigne de vous continuellement.

Le placement de contenu à 2,0 m est également avantageux, car les deux écrans sont conçus pour se chevaucher entièrement à cette distance. Pour les images placées hors de ce plan, à mesure qu’elles se déplacent du côté du cadre holographique, elles apparaissent d’un affichage tout en étant toujours visibles sur l’autre. Cette rivalité binoculaire peut perturber la perception de profondeur de l’hologramme.

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

Optimal distance for placing holograms from the user

Plans de découpage Pour un confort maximal, nous vous recommandons de découper la distance de rendu à 85 cm avec fondu hors de contenu à partir de 1 m. Dans les applications où les hologrammes et les utilisateurs sont à la fois stationnaires, les hologrammes peuvent être vus confortablement aussi près de 50 cm. Dans ce cas, les applications doivent placer un plan de clip pas plus de 30 cm et disparaître en fondu doivent démarrer au moins 10 cm à l’écart du plan clip. Chaque fois que le contenu est plus proche de 85 cm, il est important de s’assurer que les utilisateurs ne se rapprochent pas fréquemment ou loin des hologrammes ou que les hologrammes ne se rapprochent pas fréquemment ou loin de l’utilisateur, car ces situations sont probablement à l’origine de l’inconfort du conflit vergence-accommodation. Le contenu doit être conçu pour réduire le besoin d’interaction plus de 85 cm de l’utilisateur, mais lorsque le contenu doit être rendu plus proche de 85 cm, une bonne règle de pouce pour les développeurs consiste à concevoir des scénarios où les utilisateurs et/ou les hologrammes ne se déplacent pas en profondeur plus de 25 % du temps.

Meilleures pratiques Lorsque les hologrammes ne peuvent pas être placés à 2 m et les conflits entre la convergence et l’hébergement ne peuvent pas être évités, la zone optimale pour le placement des hologrammes est comprise entre 1,25 m et 5 m. Dans tous les cas, les concepteurs doivent structurer le contenu pour encourager les utilisateurs à interagir de 1+ m (par exemple, ajuster la taille du contenu et les paramètres de placement par défaut).

Reprojection

HoloLens a une technique sophistiquée de stabilisation holographique assistée par le matériel appelée reprojection. La reprojection prend en compte le mouvement et le changement de point de vue (CameraPose) lorsque la scène s’anime et que l’utilisateur déplace sa tête. Les applications doivent effectuer des actions spécifiques pour mieux utiliser la reprojection.

Il existe quatre principaux types de reprojection

  • Reprojection de profondeur : Produit les meilleurs résultats avec le moins d’efforts de l’application. Toutes les parties de la scène rendue sont stabilisées indépendamment en fonction de leur distance de l’utilisateur. Certains artefacts de rendu peuvent être visibles lorsqu’il existe des modifications nettes en profondeur. Cette option est disponible uniquement sur les casques HoloLens 2 et immersifs.
  • Reprojection planaire : Permet au contrôle précis de l’application sur la stabilisation. Un plan est défini par l’application et tout ce qui se trouve sur ce plan sera la partie la plus stable de la scène. Plus un hologramme est loin du plan, moins stable il sera. Cette option est disponible sur toutes les plateformes MR Windows.
  • Reprojection planaire automatique : Le système définit un plan de stabilisation à l’aide d’informations dans la mémoire tampon de profondeur. Cette option est disponible sur HoloLens génération 1 et HoloLens 2.
  • Aucun: Si l’application ne fait rien, Planar Reprojection est utilisé avec le plan de stabilisation fixe à 2 mètres dans la direction du regard de la tête de l’utilisateur, produisant généralement des résultats sous-standard.

Les applications doivent effectuer des actions spécifiques pour activer les différents types de reprojection

  • Reprojection de profondeur : L’application envoie sa mémoire tampon de profondeur au système pour chaque trame rendue. Sur Unity, la reprojection de profondeur est effectuée avec l’option Mémoire tampon de profondeur partagée dans le volet Windows Mixed Reality Paramètres sous Gestion des plug-ins XR. Les applications DirectX appellent CommitDirect3D11DepthBuffer. L’application ne doit pas appeler SetFocusPoint.
  • Reprojection planaire : Sur chaque trame, les applications indiquent au système l’emplacement d’un plan à stabiliser. Les applications Unity appellent SetFocusPointForFrame et doivent avoir désactivé la mémoire tampon de profondeur partagée . Les applications DirectX appellent SetFocusPoint et ne doivent pas appeler CommitDirect3D11DepthBuffer.
  • Reprojection planaire automatique : Pour activer, l’application doit soumettre sa mémoire tampon de profondeur au système, car elle le ferait pour la reprojection de profondeur. Les applications utilisant le Mixed Reality Shared Computer Toolkit (MRTK) peuvent configurer le fournisseur de paramètres de caméra pour utiliser la reprojection autoplanaire. Les applications natives doivent définir les DepthReprojectionMode paramètres dans holographicCameraRenderingParameters sur AutoPlanar chaque image. Pour HoloLens génération 1, l’application ne doit pas appeler SetFocusPoint.

Choix de la technique de reprojection

Type de stabilisation Casques immersifs HoloLens génération 1 HoloLens 2
Reprojection de profondeur Recommandé N/A Recommandé

Les applications Unity doivent utiliser Unity 2018.4.12+, Unity 2019.3+ ou Unity 2020.3+. Dans le cas contraire, utilisez la reprojection planaire automatique.
Reprojection planaire automatique N/A Valeur par défaut recommandée Recommandé si la reprojection de profondeur n’offre pas les meilleurs résultats

Les applications Unity sont recommandées pour utiliser Unity 2018.4.12+, Unity 2019.3+ ou Unity 2020.3+. Les versions précédentes d’Unity fonctionnent avec des résultats de reprojection légèrement dégradés.
Reprojection planaire Non recommandé Recommandé si le planar automatique ne donne pas les meilleurs résultats Utiliser si aucune des options de profondeur ne donne les résultats souhaités

La vérification de la profondeur est définie correctement

Lorsqu’une méthode de reprojection utilise la mémoire tampon de profondeur, il est important de vérifier le contenu de la mémoire tampon de profondeur représente la scène rendue de l’application. Un certain nombre de facteurs peuvent causer des problèmes. S’il existe une deuxième caméra utilisée pour afficher les superpositions d’interface utilisateur, par exemple, il est susceptible de remplacer toutes les informations de profondeur de la vue réelle. Les objets transparents ne définissent souvent pas de profondeur. Par défaut, un rendu de texte ne définit pas la profondeur. Il y aura des glissements visibles dans le rendu lorsque la profondeur ne correspond pas aux hologrammes rendus.

HoloLens 2 a un visualiseur pour montrer où se trouve la profondeur et n’est pas définie, ce qui peut être activé à partir du portail d’appareil. Sous l’onglet ViewsHologramme> Stabilité, activez la case à cocher Afficher la visualisation de profondeur dans le casque. Les zones dont la profondeur est définie correctement seront bleues. Les éléments rendus qui n’ont pas de jeu de profondeur sont marqués en rouge et doivent être résolus.

Notes

La visualisation de la profondeur ne s’affiche pas dans Mixed Reality Capture. Il n’est visible que par le biais de l’appareil.

Certains outils d’affichage GPU permettent de visualiser la mémoire tampon de profondeur. Les développeurs d’applications peuvent utiliser ces outils pour vérifier que la profondeur est correctement définie. Consultez la documentation des outils de l’application.

Utilisation de la reprojection planaire

Notes

Pour les casques immersifs de bureau, la définition d’un plan de stabilisation est généralement contre-productive, car elle offre moins de qualité visuelle que de fournir la mémoire tampon de profondeur de votre application au système pour activer la reprojection basée sur une profondeur par pixel. À moins d’exécuter sur un HoloLens, vous devez généralement éviter de définir le plan de stabilisation.

Stabilization plane for 3D objects

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. Les applications Unity s’exécutant sur un HoloLens doivent choisir le meilleur point de focus en fonction de votre scène et la transmettre à SetFocusPoint(). Un exemple de définition du point de focus dans DirectX est inclus dans le modèle de cube d’épinglage par défaut.

Unity envoie votre mémoire tampon de profondeur à Windows pour activer la reprojection par pixel lorsque vous exécutez votre application sur un casque immersif connecté à un PC de bureau, ce qui offre une meilleure qualité d’image sans travail explicite de l’application. Vous ne devez fournir qu’un point de focus lorsque votre application s’exécute sur un HoloLens ou que la reprojection par pixel est remplacée.

// 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 placement du point de focus dépend en grande partie de ce que l’hologramme examine. L’application a le vecteur de regard pour référence et le concepteur d’applications sait quel contenu il souhaite que l’utilisateur observe.

La seule chose la plus importante qu’un développeur peut faire pour stabiliser les hologrammes est de rendre à 60 FPS. La chute inférieure à 60 FPS réduit considérablement la stabilité de l’hologramme, quelle que soit l’optimisation du plan de stabilisation.

Meilleures pratiques Il n’existe aucun moyen universel de configurer le plan de stabilisation et il est spécifique à l’application. Notre principale recommandation est d’expérimenter et de voir ce qui fonctionne le mieux pour votre scénario. Toutefois, essayez d’aligner le plan de stabilisation avec autant de contenu que possible, car tout le contenu sur ce plan est parfaitement stabilisé.

Par exemple :

  • Si vous n’avez que du contenu planaire (application de lecture, application de lecture vidéo), alignez le plan de stabilisation avec le plan qui contient votre contenu.
  • S’il existe trois petites sphères verrouillées dans le monde, faites du plan de stabilisation « couper » bien que les centres de toutes les sphères actuellement dans la vue de l’utilisateur.
  • Si votre scène a du contenu à des profondeurs sensiblement différentes, privilégiez d’autres objets.
  • Veillez à ajuster le point de stabilisation à chaque trame pour coïncider avec l’hologramme que l’utilisateur examine

Choses à éviter Le plan de stabilisation est un excellent outil pour obtenir des hologrammes stables, mais s’il est mal utilisé, il peut entraîner une instabilité grave de l’image.

  • N’oubliez pas le feu et l’oubli. Vous pouvez finir par le plan de stabilisation derrière l’utilisateur ou attaché à un objet qui n’est plus dans l’affichage de l’utilisateur. Assurez-vous que le plan de stabilisation normal est défini en avant de caméra opposée (par exemple, -camera.forward)
  • Ne changez pas rapidement le plan de stabilisation entre les extrêmes
  • Ne laissez pas le plan de stabilisation défini sur une distance/orientation fixe
  • Ne laissez pas le plan de stabilisation traverser l’utilisateur
  • Ne définissez pas le point de focus lors de l’exécution sur un PC de bureau plutôt qu’un HoloLens, et utilisez plutôt une reprojection par pixel.

Séparation des couleurs

En raison de la nature des HoloLens s’affiche, un artefact appelé « séparation des couleurs » peut parfois être perçu. Il se manifeste comme l’image séparant en couleurs de base individuelles - rouge, vert et bleu. L’artefact peut être particulièrement visible lors de l’affichage d’objets blancs, car ils ont de grandes quantités de rouge, de vert et de bleu. Il est le plus prononcé lorsqu’un utilisateur suit visuellement un hologramme qui se déplace sur le cadre holographique à haute vitesse. Une autre façon que l’artefact puisse se manifeste est la warping/la déformation d’objets. Si un objet a un contraste élevé et/ou des couleurs pures telles que le rouge, le vert, le bleu, la séparation des couleurs sera perçu comme un warping de différentes parties de l’objet.

Exemple de la séparation des couleurs d’un curseur rond blanc verrouillé par la tête comme un utilisateur fait pivoter sa tête vers 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.

Bien qu’il soit difficile d’éviter complètement la séparation des couleurs, il existe plusieurs techniques disponibles pour l’atténuer.

La séparation des couleurs est visible sur :

  • Objets qui se déplacent rapidement, y compris les objets verrouillés par la tête tels que le curseur.
  • Objets qui sont considérablement éloignés du plan de stabilisation.

Pour atténuer les effets de la séparation des couleurs :

  • Faites en sorte que l’objet retarde le regard de l’utilisateur. Il doit apparaître comme s’il a une certaine inertie et est attaché au regard « sur les ressorts ». Cette approche ralentit le curseur (réduisant la distance de séparation) et le place derrière le point de regard probable de l’utilisateur. Tant qu’il rattrape rapidement quand l’utilisateur cesse de déplacer son regard, il se sent naturel.
  • Si vous souhaitez déplacer un hologramme, essayez de maintenir sa vitesse de mouvement inférieure à 5 degrés/seconde si vous attendez que l’utilisateur le suive avec ses yeux.
  • Utilisez la lumière au lieu de la géométrie pour le curseur. Une source d’illumination virtuelle attachée au regard sera perçue comme un pointeur interactif, mais ne provoquera pas la séparation des couleurs.
  • Ajustez le plan de stabilisation pour qu’il corresponde aux hologrammes que l’utilisateur observe.
  • Rendez l’objet rouge, vert ou bleu.
  • Basculez vers une version floue du contenu. Par exemple, un curseur blanc rond peut être remplacé par une ligne légèrement floue orientée vers la direction du mouvement.

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é de l’hologramme. Si la séparation des couleurs visible est visible, vérifiez d’abord que la fréquence d’images répond aux attentes.

Voir aussi