Vue d’ensemble du rendu holographique

Le rendu holographique permet à votre application de dessiner un hologramme à un emplacement précis dans le monde autour de l’utilisateur, qu’il soit précisément placé dans le monde physique ou dans un domaine virtuel que vous avez créé. Hologrammes sont des objets faits de son et de lumière. Le rendu permet à votre application d’ajouter la lumière.

Prise en charge des appareils

Fonctionnalité HoloLens (première génération) HoloLens 2 Casques immersifs
Rendu ✔️ ✔️ ✔️

Rendu holographique

La clé du rendu holographique sait quel type d’appareil est utilisé. Les appareils avec des écrans de vue, tels que HoloLens, ajoutent de la lumière au monde. Les pixels noirs sont entièrement transparents, tandis que les pixels plus brillants sont de plus en plus opaques. Étant donné que la lumière des écrans est ajoutée à la lumière du monde réel, les pixels blancs sont translucides.

Bien que le rendu stéréoscopique fournit un indicateur de profondeur pour vos hologrammes, l’ajout d’effets de sol peut aider les utilisateurs à voir plus facilement quelle surface un hologramme est proche. Une technique de sol consiste à ajouter une lumière autour d’un hologramme sur la surface voisine, puis à restituer une ombre contre cette lumière. De cette façon, votre ombre semble soustraire la lumière de l’environnement. Le son spatial est un autre indicateur de profondeur important, permettant aux utilisateurs de raisonner sur la distance et l’emplacement relatif d’un hologramme.

Les appareils avec des écrans opaques, comme Windows Mixed Reality casques immersifs, bloquent le monde. Les pixels noirs sont noirs unie, et toute autre couleur apparaît comme cette couleur à l’utilisateur. Votre application est responsable du rendu de tout ce que l’utilisateur voit. Cela rend encore plus important de maintenir un taux d’actualisation constant afin que les utilisateurs aient une expérience confortable.

Paramètres de rendu prédits

Casques de réalité mixte (à la fois HoloLens et casques immersifs) suivent continuellement la position et l’orientation de la tête de l’utilisateur par rapport à leur environnement. À mesure que votre application commence à préparer son image suivante, le système prédit où la tête de l’utilisateur sera à l’avenir au moment exact où le cadre apparaît sur les écrans. En fonction de cette prédiction, le système calcule la vue et les transformations de projection à utiliser pour cette image. Votre application doit utiliser ces transformations pour produire des résultats corrects. Si les transformations fournies par le système ne sont pas utilisées, l’image résultante ne s’aligne pas sur le monde réel, ce qui entraîne un malaise de l’utilisateur.

Notes

Pour prédire avec précision quand une nouvelle image atteint les affichages, le système mesure constamment la latence effective de bout en bout du pipeline de rendu de votre application. Bien que le système s’ajuste à la longueur de votre pipeline de rendu, vous pouvez améliorer la stabilité des hologrammes en gardant ce pipeline aussi court que possible.

Les applications qui utilisent des techniques avancées pour augmenter la prédiction système peuvent remplacer la vue système et les transformations de projection. Ces applications doivent toujours utiliser des transformations fournies par le système comme base pour leurs transformations personnalisées afin de produire des résultats significatifs.

Autres paramètres de rendu

Lors du rendu d’un frame, le système spécifie la fenêtre d’affichage back-buffer dans laquelle votre application doit dessiner. Cette fenêtre d’affichage est souvent inférieure à la taille totale de la mémoire tampon d’images. Quelle que soit la taille de la fenêtre d’affichage, une fois que le cadre est rendu par l’application, le système met à l’échelle l’image pour remplir l’intégralité des affichages.

Pour les applications qui ne parviennent pas à s’afficher à la vitesse d’actualisation requise, les paramètres de rendu système peuvent être configurés pour réduire la sollicitation de la mémoire et le coût de rendu au coût de l’alias de pixels accru. Le format de la mémoire tampon arrière peut également être modifié, ce qui peut aider à améliorer la bande passante mémoire et le débit de pixels.

Le rendu frustum, la résolution et la fréquence d’images dans lesquels votre application est invitée à effectuer le rendu peut également changer d’image à frame, et peut différer sur l’œil gauche et droit. Par exemple, lorsque la capture de réalité mixte (MRC) est active et que la configuration de la vue photo/vidéo n’est pas activée, un œil peut être rendu avec une plus grande FOV ou une résolution.

Pour un cadre donné, votre application doit s’afficher à l’aide de la transformation d’affichage, de la transformation de projection et de la résolution de la fenêtre d’affichage fournie par le système. De plus, votre application ne doit jamais supposer qu’un paramètre de rendu ou de vue reste fixe de frame à frame. Les moteurs comme Unity gèrent toutes ces transformations pour vous dans leurs propres objets caméra afin que le mouvement physique de vos utilisateurs et l’état du système soient toujours respectés. Si votre application autorise le déplacement virtuel de l’utilisateur dans le monde (par exemple, à l’aide du stick numérique sur un boîtier de commande), vous pouvez ajouter un objet de plate-forme parent au-dessus de la caméra qui le déplace. Cela fait que l’appareil photo reflète à la fois le mouvement virtuel et physique de l’utilisateur. Si votre application modifie la transformation d’affichage, la transformation de projection ou la dimension de fenêtre d’affichage fournie par le système, elle doit informer le système en appelant l’API de remplacement appropriée.

Pour améliorer la stabilité de votre rendu holographique, votre application doit fournir à Windows chaque image la mémoire tampon de profondeur utilisée pour le rendu. Si votre application fournit une mémoire tampon de profondeur, elle doit avoir des valeurs de profondeur cohérentes, avec une profondeur exprimée en mètres de la caméra. Cela permet au système d’utiliser vos données de profondeur par pixel pour mieux stabiliser le contenu si la tête de l’utilisateur finit légèrement décalée par rapport à l’emplacement prédit. Si vous n’êtes pas en mesure de fournir votre mémoire tampon de profondeur, vous pouvez fournir un point de focus et une normale, en définissant un plan qui coupe la plupart de votre contenu. Si la mémoire tampon de profondeur et un plan de focus sont fournis, le système peut utiliser les deux. En particulier, il est utile de fournir à la fois la mémoire tampon de profondeur et un point de focus qui inclut un vecteur de vitesse lorsque votre application affiche des hologrammes en mouvement.

Pour plus d’informations sur cette rubrique, consultez l’article Rendu dans DirectX .

Caméras holographiques

Windows Mixed Reality présente le concept d’une caméra holographique. Les caméras holographiques sont similaires à la caméra traditionnelle trouvée dans les textes graphiques 3D ; ils définissent à la fois les propriétés extrinsiques (position et orientation) et intrinsèques de la caméra. (Par exemple, le champ de vue est utilisé pour afficher une scène 3D virtuelle.) Contrairement aux caméras 3D traditionnelles, l’application ne contrôle pas la position, l’orientation et les propriétés intrinsèques de la caméra. Au lieu de cela, la position et l’orientation de la caméra holographique sont implicitement contrôlées par le mouvement de l’utilisateur. Le déplacement de l’utilisateur est relayé à l’application sur une base frame par image via une transformation d’affichage. De même, les propriétés intrinsèques de la caméra sont définies par l’optique étalonnée de l’appareil et par le biais de la transformation de projection.

En général, votre application s’affiche pour une seule caméra stéréo. Une boucle de rendu robuste prend en charge plusieurs caméras et prend en charge les caméras mono et stéréo. Par exemple, le système peut demander à votre application de s’afficher d’un autre point de vue lorsque l’utilisateur active une fonctionnalité telle que la capture de réalité mixte (MRC), en fonction de la forme du casque. Les applications qui peuvent prendre en charge plusieurs caméras les obtiennent en optant pour le type de caméras qu’ils peuvent prendre en charge.

Rendu du volume

Lors du rendu des IRM médicales ou des volumes d’ingénierie en 3D, les techniques de rendu des volumes sont souvent utilisées. Ces techniques peuvent être intéressantes dans la réalité mixte, où les utilisateurs peuvent naturellement voir un tel volume sous des angles clés, simplement en déplaçant leur tête.

Résolutions prises en charge sur HoloLens (première génération)

  • La taille maximale de la fenêtre d’affichage est une propriété de HolographicDisplay. HoloLens est défini sur la taille maximale de la fenêtre d’affichage, qui est de 720p (1268x720), par défaut.
  • La taille de la fenêtre d’affichage peut être modifiée en définissant ViewportScaleFactor sur HolographicCamera. Ce facteur d’échelle est comprise entre 0 et 1.
  • La taille de la fenêtre d’affichage la plus faible prise en charge sur HoloLens (première génération) est de 50 % de 720p, soit 360p (634 x 360). Il s’agit d’un ViewportScaleFactor de 0.5.
  • Tout ce qui est inférieur à 540p n’est pas recommandé en raison d’une dégradation visuelle, mais peut être utilisé pour identifier les goulots d’étranglement dans le taux de remplissage de pixels.

Résolutions prises en charge sur HoloLens 2

  • Les tailles cibles de rendu actuelles et maximales prises en charge sont des propriétés de la configuration de la vue. HoloLens 2 est défini sur la taille maximale de la cible de rendu, qui est de 1440 x 936, par défaut.
  • Les applications peuvent modifier la taille des mémoires tampons cibles de rendu en appelant la méthode RequestRenderTargetSize pour demander une nouvelle taille de cible de rendu. Une nouvelle taille de cible de rendu sera choisie, qui répond ou dépasse la taille de la cible de rendu demandée. Cette API modifie la taille de la mémoire tampon de la cible de rendu, ce qui nécessite une réaffectation de la mémoire sur le GPU. Les implications de cette opération sont les suivantes : la taille de la cible de rendu peut être réduite pour réduire la sollicitation de la mémoire sur le GPU, et cette méthode ne doit pas être appelée à une fréquence élevée.
  • Les applications peuvent toujours modifier la taille de la fenêtre d’affichage de la même façon que pour HoloLens 1. Il n’y a pas de réaffectation de mémoire ajoutée sur le GPU. Il peut donc être modifié à haute fréquence, mais il ne peut pas être utilisé pour réduire la sollicitation de la mémoire sur le GPU.
  • La taille de la fenêtre d’affichage la plus faible prise en charge sur HoloLens 2 est de 634 x 412, un ViewportScaleFactor d’environ 0,44 lorsque la taille de cible de rendu par défaut est utilisée.
  • Si une taille cible de rendu est fournie, plus petite que la taille de la fenêtre d’affichage prise en charge la plus faible, le facteur d’échelle de la fenêtre d’affichage est ignoré.
  • Tout ce qui est inférieur à 540p n’est pas recommandé en raison d’une dégradation visuelle, mais peut être utilisé pour identifier les goulots d’étranglement dans le taux de remplissage de pixels.

Voir aussi