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 :
- Activer PhotoVideoCamera HolographicViewConfiguration
- Gérer le rendu HolographicCamera supplémentaire
- 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 :
- 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.
- 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 :
- Présenter avec l’indicateur de DXGI_PRESENT_RESTRICT_TO_OUTPUT
- Créer la chaîne d’échange de l’application avec l’indicateur de DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED
- Avec la Mise à jour de mai 2019 de Windows 10, définition de IsScreenCaptureEnabled d’ApplicationView
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
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 :
- L’ANCIENNE API : Windows.Media.Capture.MediaCapture.AddEffectAsync()
- La nouvelle API recommandée par Microsoft (retourne un objet, ce qui permet de manipuler des propriétés dynamiques) : Windows.Media.Capture.MediaCapture.AddVideoEffectAsync() / Windows.Media.Capture.MediaCapture.AddAudioEffectAsync() qui oblige l’application à créer sa propre implémentation d’IVideoEffectDefinition et IAudioEffectDefinition. Pour obtenir des exemples, consultez l’exemple d’application CRM.
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).