Captura de realidad mixta para desarrolladores (DirectX)
Nota:
Consulta Render from the PV camera below for guidance on a new MRC capability for HoloLens 2( Render from the PV camera below for guidance on a new MRC capability for HoloLens 2.
Antes de empezar aquí, se recomienda echar un vistazo al artículo de introducción a la captura de realidad mixta.
Representación desde la cámara PV (participación)
HoloLens 2 agrega la capacidad de una aplicación inmersiva para representar desde la cámara PV mientras se ejecuta la captura de realidad mixta. Para asegurarse de que la aplicación admite correctamente la representación adicional, la aplicación debe participar en esta funcionalidad.
La representación desde la cámara PV ofrece las siguientes mejoras en la experiencia predeterminada de MRC:
- La alineación del holograma con el entorno físico y las manos para las interacciones cercanas debe ser precisa a todas las distancias. Evite tener un desplazamiento a distancias distintas del punto de enfoque, ya que puede ver en el MRC predeterminado.
- El ojo derecho del casco no se verá comprometido, ya que no se usará para representar los hologramas para la salida de MRC.
Hay tres pasos para habilitar la representación desde la cámara PV:
- Habilitación de PhotoVideoCamera HolographicViewConfiguration
- Controlar la representación adicional de HolographicCamera
- Compruebe que los sombreadores y el código se representan correctamente desde esta holographicCamera adicional
Habilitación de PhotoVideoCamera HolographicViewConfiguration en DirectX
Para participar en la representación desde la cámara PV, una aplicación simplemente habilita la 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;
}
Controlar la representación adicional de HolographicCamera en DirectX
Cuando la aplicación tiene participación para representar desde la cámara PV y se inicia la captura de realidad mixta:
- Se desencadenará el evento CameraAdded de HolographicSpace. Este evento se puede aplazar si la aplicación no puede controlar la cámara en este momento.
- Una vez que el evento se haya completado sin aplazamientos pendientes, holographicCamera aparecerá en la siguiente lista addedCameras de HolographicFrame.
Cuando se detiene la captura de realidad mixta (o si la aplicación deshabilita la configuración de la vista mientras se está ejecutando la captura de realidad mixta): holographicCamera aparecerá en la siguiente lista de HolographicFrames RemovedCameras y se desencadenará el evento CameraRemoved de HolographicSpace.
Se ha agregado una propiedad ViewConfiguration a HolographicCamera para ayudar a identificar la configuración a la que pertenece una cámara.
Comprobación de que los sombreadores y el código admiten cámaras adicionales
Ejecute una captura de realidad mixta y compruebe si hay problemas inusuales de alineación, contenido que falta o rendimiento. Actualice los sombreadores y el código según corresponda.
Si hay ciertas escenas que no admiten la representación en una cámara adicional, puede deshabilitar la HolographicViewConfiguration de PhotoVideoCamera.
Deshabilitación de MRC en la aplicación
Aplicación 2D
Las aplicaciones 2D pueden optar por ocultar su contenido visual cuando la captura de realidad mixta se ejecuta mediante:
- Presente con la marca DXGI_PRESENT_RESTRICT_TO_OUTPUT
- Creación de la cadena de intercambio de la aplicación con la marca DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED
- Con el Actualización de mayo de 2019 de Windows 10, estableciendo isScreenCaptureEnabled de ApplicationView
Aplicación inmersiva
Las aplicaciones inmersivas pueden optar por excluir su contenido visual de la captura de realidad mixta mediante:
- Configuración de IsContentProtectionEnabled de HolographicCameraRenderingParameter para deshabilitar la captura de realidad mixta para su marco asociado
- Establecimiento de IsHardwareContentProtectionEnabled de HolographicCamera para deshabilitar la captura de realidad mixta para su cámara holográfica asociada
Teclado de contraseña
Con el Actualización de mayo de 2019 de Windows 10, el contenido visual se excluye automáticamente de la captura de realidad mixta cuando se ve una contraseña o un teclado de anclaje.
Saber cuándo está activo MRC
Una aplicación puede usar la clase AppCapture para saber cuándo se ejecuta la captura de realidad mixta del sistema (para audio o vídeo).
Nota:
La API GetForCurrentView de AppCapture puede devolver null si la captura de realidad mixta no está disponible en el dispositivo. También es importante anular el registro del evento CaptureingChanged cuando se suspenda la aplicación; de lo contrario, MRC puede entrar en un estado bloqueado.
Integración de la funcionalidad de MRC desde la aplicación
La aplicación de realidad mixta puede iniciar la captura de fotos o vídeos de MRC desde dentro de la aplicación, y el contenido capturado está disponible para la aplicación sin almacenarse en el "Rollo de cámara" del dispositivo. Puede crear una grabadora MRC personalizada o aprovechar la interfaz de usuario de captura de cámara integrada.
MRC con interfaz de usuario de cámara integrada
Los desarrolladores pueden usar camera Capture UI API para obtener una foto o vídeo de realidad mixta capturado por el usuario con solo unas pocas líneas de código.
Esta API inicia la interfaz de usuario integrada de la cámara MRC donde los usuarios pueden tomar una foto o vídeo y devuelve la captura resultante a la aplicación. Puede crear una grabadora de captura de realidad mixta personalizada si necesita agregar su propia interfaz de usuario de cámara o acceso de nivel inferior para capturar secuencias.
MRC con captura de pantalla
Con la actualización de mayo de 2021 de HoloLens (Windows Holographic, versión 21H1 compilación 20346.1002), los desarrolladores pueden usar la API de captura de pantalla para solicitar una secuencia de fotogramas de vídeo de realidad mixta.
Creación de una grabadora de MRC personalizada
Aunque el usuario siempre puede desencadenar una foto o un vídeo mediante el servicio de captura mrC del sistema, es posible que una aplicación quiera crear una aplicación de cámara personalizada que incluya hologramas en la secuencia de cámara como MRC. Esto permite que la aplicación inicie las capturas de la entrada del usuario, cree una interfaz de usuario de grabación personalizada o personalice la configuración de MRC para nombrar algunos ejemplos.
HoloStudio agrega una cámara MRC personalizada mediante efectos MRC
Otras aplicaciones pueden hacerlo mediante las API de captura de Windows Media para controlar la cámara y agregar un efecto MRC Video y Audio para incluir hologramas virtuales y audio de aplicación en imágenes y vídeos.
Las aplicaciones tienen dos opciones para agregar el efecto:
- La API anterior: Windows.Media.Capture.MediaCapture.AddEffectAsync()
- La nueva API recomendada de Microsoft (devuelve un objeto, lo que permite manipular propiedades dinámicas): Windows.Media.Capture.MediaCapture.AddVideoEffectAsync() / Windows.Media.Capture.MediaCapture.AddAudioEffectAsync() que requieren que la aplicación cree su propia implementación de IVideoEffectDefinition e IAudioEffectDefinition. Consulte la aplicación de ejemplo de MRC para obtener ejemplos.
Nota:
Visual Studio no reconocerá el espacio de nombres Windows.Media.MixedRealityCapture, pero las cadenas siguen siendo válidas.
Efecto de vídeo mrC (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)
Nombre de propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
StreamType | UINT32 (MediaStreamType) | 1 (VideoRecord) | Describir para qué secuencia de captura se usa este efecto. El audio no está disponible. |
HologramCompositionEnabled | boolean | VERDADERO | Marca para habilitar o deshabilitar hologramas en la captura de vídeo. |
RecordingIndicatorEnabled | boolean | VERDADERO | Marca para habilitar o deshabilitar el indicador de grabación en pantalla durante la captura del holograma. |
VideoStabilizationEnabled | boolean | FALSO | Marca para habilitar o deshabilitar la estabilización de vídeo con tecnología del rastreador de HoloLens. |
VideoStabilizationBufferLength | UINT32 | 0 | Establezca cuántos fotogramas históricos se usan para la estabilización de vídeo. 0 es de latencia 0 y casi "libre" desde una perspectiva de potencia y rendimiento. Se recomienda 15 para obtener la mayor calidad (a costa de 15 fotogramas de latencia y memoria). |
GlobalOpacityCoefficient | flotante | 0.9 (HoloLens) 1.0 (casco envolvente) | Establezca el coeficiente de opacidad global del holograma en el intervalo de 0,0 (totalmente transparente) a 1,0 (totalmente opaco). |
BlankOnProtectedContent | boolean | FALSO | Marca para habilitar o deshabilitar la devolución de un marco vacío si hay una aplicación para UWP 2d que muestra contenido protegido. Si esta marca es falsa y una aplicación para UWP 2d muestra contenido protegido, la aplicación para UWP 2d se reemplazará por una textura de contenido protegida en los auriculares y en la captura de realidad mixta. |
ShowHiddenMesh | boolean | FALSO | Marca para habilitar o deshabilitar la visualización de la malla de área oculta de la cámara holográfica y el contenido vecino. |
OutputSize | Size | 0, 0 | Establezca el tamaño de salida deseado después de recortar para la estabilización de vídeo. Se elige un tamaño de recorte predeterminado si se especifica 0 o un tamaño de salida no válido. |
OutputSubtype | Cadena | Nv12 | Establezca el subtipo de salida deseado después de la composición del holograma o la estabilización de vídeo. Admite Nv12 y Argb32 MediaEncodingSubtypes. |
PreferredHologramPerspective | UINT32 | Representar desde la configuración de cámara en el Portal de dispositivos Windows | Enumeración que se usa para indicar qué configuración de la vista de cámara holográfica se debe capturar: 0 (Mostrar) significa que no se pedirá que la aplicación se represente desde la cámara de fotos y vídeos, 1 (PhotoVideoCamera) pedirá a la aplicación que se represente desde la cámara de fotos y vídeo (si la aplicación lo admite). Solo se admite en HoloLens 2 |
Nota:
Puede cambiar el valor predeterminado de PreferredHologramPerspective en el Portal de dispositivos Windows; para ello, vaya a la página Captura de realidad mixta y desactive Render from Camera (Representar desde la cámara). El valor predeterminado es 1 (PhotoVideoCamera), pero se puede desactivar para establecerlo en 0 (Mostrar).
El valor predeterminado de PreferredHologramPerspective era 0 (Mostrar) antes de la actualización de junio de 2020 (Windows Holographic, versión 2004 compilación 19041.1106 y Windows Holographic, versión 1903 compilación 18362.1064).
Se agregó compatibilidad con OutputSubtype con la actualización de mayo de 2021 (Windows Holographic, versión 21H1 compilación 20346.1002).
Efecto de audio mrC (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)
Nombre de propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
MixerMode | UINT32 | 2 (micrófono y audio del sistema) | Enumeración que se usa para indicar qué orígenes de audio se deben usar: 0 (solo audio mic), 1 (solo audio del sistema), 2 (micrófono y audio del sistema) |
LoopbackGain | flotante | Configuración de obtención de audio de la aplicación en el Portal de dispositivos Windows | Ganancia para aplicar al volumen de audio del sistema. Oscila entre 0,0 y 5,0. Solo se admite en HoloLens 2 |
MicrophoneGain | flotante | Configuración De ganancia de audio mic en el Portal de dispositivos Windows | Ganancia para aplicar al volumen del micrófono. Oscila entre 0,0 y 5,0. Solo se admite en HoloLens 2 |
Nota:
Puede cambiar el valor predeterminado de LoopbackGain o MicrophoneGain en el Portal de dispositivos Windows; para ello, vaya a la página Captura de realidad mixta y ajuste el control deslizante junto a su configuración respectiva. Ambas opciones se establecen de forma predeterminada en 1.0, pero se pueden establecer en cualquier valor entre 0.0 y 5.0.
Con el Portal de dispositivos Windows para configurar los valores de ganancia predeterminados se agregó con la actualización de junio de 2020 (Windows Holographic, versión 2004, compilación 19041.1106 y Windows Holographic, versión 1903 compilación 18362.1064).
Limitaciones simultáneas de MRC
Debe tener en cuenta ciertas limitaciones cuando varias aplicaciones acceden a MRC al mismo tiempo.
Acceso a la cámara de fotos y vídeos
En HoloLens 1, MRC no podrá capturar una foto o capturar vídeo mientras un proceso graba vídeo o toma una foto. La inversa también es true: si MRC se está ejecutando, la aplicación no podrá acceder a la cámara.
Con HoloLens 2, es posible compartir el acceso a la cámara. Si no necesita el control directo de la resolución o la velocidad de fotogramas, puede inicializar MediaCapture mediante la propiedad SharedMode con SharedReadOnly.
Acceso integrado a la cámara de vídeo y fotos de MRC
Funcionalidad de MRC integrada en Windows 10 (a través de Cortana, menú Inicio, accesos directos de hardware, Miracast, Portal de dispositivos Windows):
- Se ejecutará con ExclusiveControl de forma predeterminada
Sin embargo, se ha agregado compatibilidad al subsistema MRC para funcionar en modo compartido:
- Si una aplicación solicita acceso ExclusiveControl a la cámara de fotos y vídeos, MRC integrado dejará de usar automáticamente la cámara de fotos y vídeo para que la solicitud de la aplicación se realice correctamente.
- Si se inicia MRC integrado mientras una aplicación tiene ExclusiveControl, mrC integrado se ejecutará en modo SharedReadOnly.
Esta funcionalidad de modo compartido tiene ciertas restricciones:
- Foto a través de Cortana, accesos directos de hardware o menú Inicio: requiere la actualización de abril de 2018 de Windows 10 (o posterior)
- Vídeo a través de Cortana, accesos directos de hardware o menú Inicio: requiere la actualización de abril de 2018 de Windows 10 (o posterior)
- Streaming de MRC a través de Miracast: requiere el Actualización de octubre de 2018 de Windows 10 (o posterior)
- Streaming de MRC a través del Portal de dispositivos Windows o a través de la aplicación complementaria HoloLens: Requiere HoloLens 2
Nota:
La resolución y la velocidad de fotogramas de la interfaz de usuario de cámara MRC integrada pueden reducirse de sus valores normales cuando otra aplicación usa la cámara de fotos y vídeo.
Acceso de MRC para desarrolladores
Se recomienda solicitar siempre el control exclusivo para la cámara al usar MRC. Esto garantizará que la aplicación tenga control total de la configuración de la cámara siempre que conozca las limitaciones enumeradas anteriormente.
- Creación de un objeto de captura multimedia mediante la configuración de inicialización
- Establezca la propiedad SharingMode en exclusiva.
Precaución
Asegúrese de leer cuidadosamente los comentarios sharingMode antes de continuar.
- Configurar la cámara de la manera que quiera
- Inicie la aplicación, capture fotogramas de vídeo con la API de inicio y, a continuación, habilite MRC.
Precaución
Si inicia MRC antes de iniciar la aplicación, no podemos garantizar que la característica funcionará según lo previsto.
Puede encontrar una muestra completa del proceso anterior en el ejemplo de seguimiento facial holográfico.
Nota:
Antes de la actualización de abril de 2018 de Windows 10, la grabadora de MRC personalizada de una aplicación era mutuamente exclusiva con MRC del sistema (capturar fotos, capturar vídeos o transmitir desde el Portal de dispositivos Windows).