Captura de realidad mixta para desarrolladores (DirectX)

Nota:

Consulte Representación desde la cámara PV siguiente para obtener instrucciones sobre una nueva funcionalidad de MRC para HoloLens 2.

Antes de empezar aquí, se recomienda echar un vistazo al artículo introducción a la captura de realidad mixta .

Representación desde la cámara PV (participación)

HoloLens 2 agrega la posibilidad de que una aplicación inmersiva se represente 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 tiene que participar en esta funcionalidad.

La representación desde la cámara PV ofrece las siguientes mejoras sobre 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, como 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:

  1. Habilitación de PhotoVideoCamera HolographicViewConfiguration
  2. Controlar la representación adicional de HolographicCamera
  3. Compruebe que los sombreadores y el código se representen correctamente desde este 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:

  1. 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.
  2. 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 vista mientras se ejecuta la captura de realidad mixta): holographicCamera aparecerá en la siguiente lista RemovedCameras de HolographicFrame 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:

Aplicación inmersiva

Las aplicaciones inmersivas pueden optar por excluir su contenido visual de la captura de realidad mixta mediante:

  • Establecimiento de IsContentProtectionEnabled de HolographicCameraRenderingParameter para deshabilitar la captura de realidad mixta para su fotograma 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 la actualización de mayo de 2019 de Windows 10, el contenido visual se excluye automáticamente de la captura de realidad mixta cuando una contraseña o un teclado pin están visibles.

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 dentro de 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 "roll 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 capturada por el usuario con unas pocas líneas de código.

Esta API inicia la interfaz de usuario de cámara de MRC integrada, donde los usuarios pueden tomar una foto o vídeo y devuelven la captura resultante a la aplicación. Puede crear una grabadora de captura de Mixed Reality 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 2 (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, compile la 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

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 vídeos y todavías.

Las aplicaciones tienen dos opciones para agregar el efecto:

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 true Marca para habilitar o deshabilitar hologramas en la captura de vídeo.
RecordingIndicatorEnabled boolean true Marca para habilitar o deshabilitar el indicador de grabación en pantalla durante la captura de hologramas.
VideoStabilizationEnabled boolean false 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 máxima calidad (a costa de 15 fotogramas de latencia y memoria).
GlobalOpacityCoefficient FLOAT 0.9 (HoloLens) 1.0 (casco envolvente) Establezca el coeficiente de opacidad global del holograma en intervalo de 0,0 (totalmente transparente) a 1,0 (totalmente opaco).
BlankOnProtectedContent boolean false 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 false 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 false Marca para habilitar o deshabilitar que muestra 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 String 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 Argb32MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Representación desde la configuración de cámara en el Portal de dispositivos Windows Enumeración que se usa para indicar qué configuración de vista de cámara holográfica se debe capturar: 0 (Mostrar) significa que no se pedirá a la aplicación que se represente desde la cámara de fotos o vídeo, 1 (PhotoVideoCamera) pedirá a la aplicación que se represente desde la cámara de fotos y vídeo (si la aplicación la admite). Solo se admite en HoloLens 2

Nota:

Puedes cambiar el valor predeterminado de PreferredHologramPerspective en el Portal de dispositivos Windows; para ello, ve a la página Mixed Reality Captura y desactiva La representación de la cámara. El valor predeterminado es 1 (PhotoVideoCamera), pero se puede desactivar para establecerlo en 0 (Pantalla).

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).

La compatibilidad con OutputSubtype se agregó 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 usada 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 FLOAT Configuración De ganancia 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 FLOAT Configuración De ganancia de audio de micrófono 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:

Para cambiar el valor predeterminado de LoopbackGain o MicrophoneGain en el Portal de dispositivos Windows, vaya a la página captura de Mixed Reality y ajuste el control deslizante junto a su configuración respectiva. Ambos valores 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 está grabando vídeo o tomando 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 control directo de la resolución o la velocidad de fotogramas, puede inicializar MediaCapture mediante la propiedad SharedMode con SharedReadOnly.

Acceso integrado a la foto y la cámara de vídeo 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 foto/vídeo, 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 la 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 la cámara mrC integrada pueden reducirse a partir 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 un 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 mencionadas anteriormente.

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 mrC personalizada de una aplicación era mutuamente excluyente con MRC del sistema (capturando fotos, capturando vídeos o streaming desde el Portal de dispositivos Windows).

Consulte también