Partager via


Capture de réalité mixte pour les développeurs (DirectX)

Remarque

Consultez Render from the PV camera below for guidance on a new CRM capability for HoloLens 2.

Avant de commencer ici, nous vous recommandons de consulter notre article de vue d’ensemble de la capture de réalité mixte.

Rendu à partir de la caméra PV (opt-in)

HoloLens 2 ajoute la possibilité pour une application immersive de s’afficher à partir de la caméra PV pendant l’exécution de la capture de réalité mixte. Pour vous assurer que l’application prend correctement en charge le rendu supplémentaire, l’application doit choisir cette fonctionnalité.

Le rendu à partir de la caméra PV offre les améliorations suivantes sur l’expérience CRM par défaut :

  • L’alignement de l’hologramme sur votre environnement physique et les mains pour les interactions proches doivent être précis à toutes les distances. Évitez d’avoir un décalage à distance autre que le point de focus, car vous pouvez le voir dans la MRC par défaut.
  • L’œil droit dans le casque ne sera pas compromis, car il ne sera pas utilisé pour afficher les hologrammes pour la sortie de la MRC.

Il existe trois étapes pour activer le rendu à partir de la caméra PV :

  1. Activer PhotoVideoCamera HolographicViewConfiguration
  2. Gérer le rendu HolographicCamera supplémentaire
  3. Vérifiez que vos nuanceurs et votre code s’affichent correctement à partir de cet autre HolographicCamera
Activer PhotoVideoCamera HolographicViewConfiguration dans DirectX

Pour choisir le rendu à partir de la caméra PV, une application active simplement l’HolographicViewConfiguration de PhotoVideoCamera :

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
Gérer le rendu HolographicCamera supplémentaire dans DirectX

Lorsque l’application a choisi d’effectuer le rendu à partir de la caméra PV et de la capture de réalité mixte démarre :

  1. L’événement CameraAdded de HolographicSpace se déclenche. Cet événement peut être différé si l’application ne peut pas gérer la caméra pour l’instant.
  2. Une fois l’événement terminé sans report en suspens, l’HolographicCamera apparaît dans la liste AddedCameras de HolographicFrame suivante.

Lorsque la capture de réalité mixte s’arrête (ou si l’application désactive la configuration de la vue pendant l’exécution de la capture de réalité mixte) : l’HolographicCamera apparaît dans la liste RemovedCameras de HolographicFrame suivante et l’événement CameraRemoved de HolographicSpace s’active.

Une propriété ViewConfiguration a été ajoutée à HolographicCamera pour aider à identifier la configuration à laquelle appartient une caméra.

Vérifier que les nuanceurs et le code prennent en charge des caméras supplémentaires

Exécutez une capture de réalité mixte et vérifiez l’alignement inhabituel, le contenu manquant ou les problèmes de performances. Mettez à jour les nuanceurs et le code selon les besoins.

S’il existe certaines scènes qui ne peuvent pas prendre en charge le rendu sur une caméra supplémentaire, vous pouvez désactiver l’HolographicViewConfiguration de PhotoVideoCamera.

Désactivation du CRM dans votre application

Application 2D

Les applications 2D peuvent choisir d’masquer leur contenu visuel lorsque la capture de réalité mixte est en cours d’exécution :

Application immersive

Les applications immersives peuvent choisir d’exclure leur contenu visuel de la capture de réalité mixte en :

  • Définition de IsContentProtectionEnabled de HolographicCameraRenderingParameter pour désactiver la capture de réalité mixte pour son frame associé
  • Définition de IsHardwareContentProtectionEnabled de HolographicCamera pour désactiver la capture de réalité mixte pour sa caméra holographique associée

Clavier de mot de passe

Avec la Mise à jour de mai 2019 de Windows 10, le contenu visuel est automatiquement exclu de la capture de réalité mixte lorsqu’un mot de passe ou un clavier pin est visible.

Savoir quand la MRC est active

La classe AppCapture peut être utilisée par une application pour savoir quand la capture de réalité mixte système est en cours d’exécution (pour l’audio ou la vidéo).

Remarque

L’API GetForCurrentView d’AppCapture peut retourner null si la capture de réalité mixte n’est pas disponible sur l’appareil. Il est également important de désinscrire l’événement CapturingChanged lorsque votre application est suspendue, sinon la MRC peut entrer dans un état bloqué.

Intégration de la fonctionnalité CRM à partir de votre application

Votre application de réalité mixte peut démarrer la capture photo ou vidéo DE LA CRM à partir de l’application, et le contenu capturé est mis à la disposition de votre application sans être stocké dans le « roll » de l’appareil. Vous pouvez créer un enregistreur CRM personnalisé ou tirer parti de l’interface utilisateur de capture de caméra intégrée.

CRM avec interface utilisateur de caméra intégrée

Les développeurs peuvent utiliser l’API d’interface utilisateur Camera Capture pour obtenir une photo ou une vidéo de réalité mixte capturée par l’utilisateur avec seulement quelques lignes de code.

Cette API lance l’interface utilisateur intégrée de l’appareil photo CRM où les utilisateurs peuvent prendre une photo ou une vidéo et renvoyer la capture obtenue à votre application. Vous pouvez créer un enregistreur Mixed Reality Capture personnalisé si vous devez ajouter votre propre interface utilisateur de caméra ou un accès de niveau inférieur aux flux de capture.

CRM avec capture d’écran

Avec la mise à jour holoLens 2 mai 2021 (Windows Holographic version 21H1 build 20346.1002), les développeurs peuvent utiliser l’API capture d’écran pour demander un flux de trames vidéo de réalité mixte.

Création d’un enregistreur CRM personnalisé

Bien que l’utilisateur puisse toujours déclencher une photo ou une vidéo à l’aide du service de capture CRM système, une application peut créer une application de caméra personnalisée qui inclut des hologrammes dans le flux de caméra, tout comme la MRC. Cela permet à l’application de lancer des captures à partir de l’entrée utilisateur, de créer une interface utilisateur d’enregistrement personnalisée ou de personnaliser les paramètres DU CRM pour nommer quelques exemples.

HoloStudio ajoute une caméra CRM personnalisée à l’aide d’effets CRM

HoloStudio ajoute une caméra CRM personnalisée à l’aide d’effets CRM

D’autres applications peuvent le faire à l’aide des API Windows Media Capture pour contrôler l’appareil photo et ajouter un effet vidéo et audio CRM pour inclure des hologrammes virtuels et l’audio d’application dans des vidéos et des images.

Les applications ont deux options pour ajouter l’effet :

Remarque

L’espace de noms Windows.Media.MixedRealityCapture ne sera pas reconnu par Visual Studio, mais les chaînes sont toujours valides.

EFFET VIDÉO DE LA MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

Nom de la propriété Type Valeur par défaut Description
StreamType UINT32 (MediaStreamType) 1 (VideoRecord) Décrire le flux de capture pour lequel cet effet est utilisé. L’audio n’est pas disponible.
HologramCompositionEnabled booléen VRAI Indicateur permettant d’activer ou de désactiver les hologrammes dans la capture vidéo.
RecordingIndicatorEnabled booléen VRAI Indicateur permettant d’activer ou de désactiver l’indicateur d’enregistrement sur l’écran pendant la capture d’hologramme.
VideoStabilizationEnabled booléen FAUX Indicateur permettant d’activer ou de désactiver la stabilisation vidéo alimentée par le dispositif de suivi HoloLens.
VideoStabilizationBufferLength UINT32 0 Définissez le nombre d’images historiques utilisées pour la stabilisation vidéo. 0 est une latence de 0 et presque « libre » du point de vue de la puissance et des performances. 15 est recommandé pour la meilleure qualité (au coût de 15 images de latence et de mémoire).
GlobalOpacityCoefficient virgule flottante 0.9 (HoloLens) 1.0 (casque immersif) Définissez le coefficient d’opacité globale de l’hologramme entre 0,0 (entièrement transparent) et 1,0 (entièrement opaque).
BlankOnProtectedContent booléen FAUX Indicateur permettant d’activer ou de désactiver le retour d’une trame vide s’il existe une application UWP 2d affichant du contenu protégé. Si cet indicateur a la valeur false et qu’une application UWP 2d affiche du contenu protégé, l’application UWP 2d est remplacée par une texture de contenu protégée dans le casque et dans la capture de réalité mixte.
ShowHiddenMesh booléen FAUX Indicateur permettant d’activer ou de désactiver l’affichage du maillage de zone masqué de la caméra holographique et du contenu voisin.
OutputSize Taille 0, 0 Définissez la taille de sortie souhaitée après rognage pour la stabilisation vidéo. Une taille de rognage par défaut est choisie si 0 ou une taille de sortie non valide est spécifiée.
OutputSubtype Chaîne Nv12 Définissez le sous-type de sortie souhaité après la composition de l’hologramme et/ou la stabilisation vidéo. Prend en charge Nv12 et Argb32 MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Rendu à partir du paramètre Caméra dans le portail d’appareil Windows Énumération utilisée pour indiquer la configuration de la vue de l’appareil photo holographique à capturer : 0 (Affichage) signifie que l’application ne sera pas invitée à effectuer le rendu à partir de la caméra photo/vidéo, 1 (PhotoVideoCamera) demande à l’application de restituer à partir de la caméra photo/vidéo (si l’application la prend en charge). Uniquement pris en charge sur HoloLens 2

Remarque

Vous pouvez modifier la valeur par défaut de PreferredHologramPerspective dans le portail d’appareil Windows en accédant à la page Capture de réalité mixte et en désactivant le rendu à partir de la caméra. Le paramètre est défini par défaut sur 1 (PhotoVideoCamera), mais peut être désactivé pour le définir sur 0 (Affichage).

La valeur par défaut de PreferredHologramPerspective était 0 (Display) avant la mise à jour de juin 2020 (Windows Holographic, version 2004 build 19041.1106 et Windows Holographic, version 1903 build 18362.1064).

La prise en charge de OutputSubtype a été ajoutée avec la mise à jour de mai 2021 (Windows Holographic, version 21H1 build 20346.1002).

Effet audio DU CRM (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

Nom de la propriété Type Valeur par défaut Description
MixerMode UINT32 2 (micro et audio système) Énumération utilisée pour indiquer quelles sources audio doivent être utilisées : 0 (micro audio uniquement), 1 (audio système uniquement), 2 (micro et audio système)
LoopbackGain virgule flottante Paramètre Gain audio de l’application dans le portail d’appareil Windows Gagnez à appliquer au volume audio système. Varie de 0,0 à 5.0. Uniquement pris en charge sur HoloLens 2
MicrophoneGain virgule flottante Paramètre Gain audio du micro dans le portail d’appareil Windows Gagnez à appliquer au volume du micro. Varie de 0,0 à 5.0. Uniquement pris en charge sur HoloLens 2

Remarque

Vous pouvez modifier la valeur par défaut de LoopbackGain ou microphoneGain dans le portail d’appareil Windows en accédant à la page Capture de réalité mixte et en ajustant le curseur en regard de leurs paramètres respectifs. Les deux paramètres par défaut sont 1.0, mais peuvent être définis sur n’importe quelle valeur comprise entre 0.0 et 5.0.

L’utilisation de Windows Device Portal pour configurer les valeurs de gain par défaut a été ajoutée avec la mise à jour de juin 2020 (Windows Holographic, version 2004 build 19041.1106 et Windows Holographic, version 1903 build 18362.1064).

Limitations de LA MRC simultanées

Vous devez connaître certaines limitations lorsque plusieurs applications accèdent simultanément à la MRC.

Accès photo/vidéo à la caméra

Sur HoloLens 1, la MRC ne capture pas une photo ou capture vidéo pendant qu’un processus enregistre une vidéo ou prend une photo. L’inverse est également vrai : si la MRC est en cours d’exécution, l’application ne parvient pas à accéder à la caméra.

Avec HoloLens 2, il est possible de partager l’accès à l’appareil photo. Si vous n’avez pas besoin de contrôle direct de la résolution ou de la fréquence d’images, vous pouvez initialiser MediaCapture à l’aide de la propriété SharedMode avec SharedReadOnly.

Accès photo et vidéo intégré à la CRM

Fonctionnalité CRM intégrée à Windows 10 (via Cortana, menu Démarrer, raccourcis matériels, Miracast, Portail d’appareil Windows) :

  • S’exécutera avec ExclusiveControl par défaut

Toutefois, la prise en charge a été ajoutée au sous-système CRM pour fonctionner en mode partagé :

  • Si une application demande l’accès ExclusiveControl à la caméra photo/vidéo, le CRM intégré s’arrête automatiquement à l’aide de la caméra photo/vidéo afin que la demande de l’application réussisse.
  • Si le CRM intégré est démarré alors qu’une application a ExclusiveControl, la MRC intégrée s’exécute en mode SharedReadOnly

Cette fonctionnalité en mode partagé a certaines restrictions :

  • Photo via Cortana, raccourcis matériels ou menu Démarrer : nécessite la mise à jour d’avril 2018 de Windows 10 (ou version ultérieure)
  • Vidéo via Cortana, raccourcis matériels ou menu Démarrer : nécessite la mise à jour d’avril 2018 de Windows 10 (ou ultérieure)
  • Streaming CRM sur Miracast : nécessite la mise à jour d’octobre 2018 windows 2018 (ou ultérieure)
  • Streaming CRM sur le portail d’appareil Windows ou via l’application complémentaire HoloLens : nécessite HoloLens 2

Remarque

La résolution et la fréquence d’images de l’interface utilisateur intégrée de la caméra CRM peuvent être réduites de ses valeurs normales lorsqu’une autre application utilise la caméra photo/vidéo.

Accès AU CRM pour les développeurs

Nous vous recommandons de toujours demander un contrôle exclusif pour l’appareil photo lors de l’utilisation du CRM. Cela garantit que votre application dispose d’un contrôle total des paramètres de la caméra tant que vous connaissez les limitations répertoriées ci-dessus.

  • Créer un objet de capture multimédia à l’aide des paramètres d’initialisation
  • Définir la propriété SharingMode sur exclusive

Attention

Veillez à lire attentivement les remarques SharingMode avant de continuer.

  • Configurer votre caméra comme vous le souhaitez
  • Démarrez l’application, capturez des images vidéo avec l’API de démarrage, puis activez le CRM

Attention

Si vous démarrez la MRC avant de démarrer votre application, nous ne pouvons pas garantir que la fonctionnalité fonctionnera comme prévu.

Vous trouverez un exemple complet du processus ci-dessus dans l’exemple de suivi des visages holographiques.

Remarque

Avant la mise à jour d’avril 2018 de Windows 10, l’enregistreur CRM personnalisé d’une application était mutuellement exclusif avec la CRM système (capture de photos, capture de vidéos ou diffusion en continu à partir du portail d’appareil Windows).

Voir aussi