OpenXR

Logotipo de OpenXR

OpenXR es un estándar abierto de API libre de regalías de Khronos, que proporciona motores con acceso nativo a una gama de dispositivos en todo el espectro de realidad mixta.

Puede desarrollar con OpenXR en un HoloLens 2 o Windows Mixed Reality casco vr envolvente en el escritorio. Si no tiene acceso a un casco, puede usar el emulador de HoloLens 2 o el simulador de Windows Mixed Reality en su lugar.

¿Por qué OpenXR?

Con OpenXR, puede crear motores que tienen como destino dispositivos holográficos, como HoloLens 2 y dispositivos vr envolventes, como Windows Mixed Reality auriculares para equipos de escritorio. OpenXR permite escribir código una vez que sea portátil en una amplia gama de plataformas de hardware.

La API de OpenXR usa un cargador para conectar la aplicación directamente a la compatibilidad con la plataforma nativa de los auriculares. Los usuarios finales obtienen un rendimiento máximo y una latencia mínima, ya sea que usen un Windows Mixed Reality o cualquier otro casco.

¿Qué es OpenXR?

La API de OpenXR proporciona la predicción de posición principal, el tiempo de fotogramas y la funcionalidad de entrada espacial que necesitará para crear un motor que pueda tener como destino dispositivos holográficos y envolventes.

Para obtener información sobre la API de OpenXR, consulte la especificación de OpenXR 1.0, la referencia de API y la guía de referencia rápida. Para obtener más información, consulte la página Khronos OpenXR.

Para tener como destino el conjunto completo de características de HoloLens 2, también usará extensiones openXR específicas del proveedor y del proveedor que habilitan características adicionales más allá del núcleo de OpenXR 1.0, como el seguimiento de manos articulado, el seguimiento ocular, la asignación espacial y los anclajes espaciales. Para obtener más información, consulte la sección Hoja de ruta siguiente sobre las extensiones que vienen más adelante este año.

OpenXR no es un motor de realidad mixta. En su lugar, OpenXR permite a los motores como Unity y Unreal escribir código portátil una vez que pueda acceder a las características de la plataforma nativa del dispositivo holográfico o envolvente del usuario, sea cual sea el proveedor que haya creado esa plataforma.

Plan de desarrollo

La especificación OpenXR define un mecanismo de extensión que permite a los implementadores de tiempo de ejecución exponer funcionalidad adicional más allá de las características principales definidas en la especificación base de OpenXR 1.0.

Hay tres tipos de extensiones de OpenXR:

  • Extensiones de proveedor (por ejemplo, XR_MSFT_...): habilita la innovación por proveedor en características de hardware o software. Cualquier proveedor en tiempo de ejecución puede introducir y enviar una extensión de proveedor en cualquier momento.
    • Extensiones de proveedor experimentales (por ejemplo, XR_MSFTX_...): extensiones de proveedor experimentales que se están previsualizando para recopilar comentarios. XR_MSFTX_... las extensiones son solo para dispositivos de desarrollador y se quitarán cuando se envíe la extensión real. Para experimentar con ellos, puede habilitar extensiones de vista previa en el dispositivo para desarrolladores.
  • Extensiones entre proveedores: extensiones entre proveedores EXT que definen e implementan varias empresas. Los grupos de empresas interesadas pueden introducir extensiones EXT en cualquier momento.
  • Extensiones oficiales KHR : extensiones oficiales de Khronos ratificadas como parte de una versión de especificación básica. Las extensiones KHR están cubiertas por la misma licencia que la propia especificación principal.

El entorno de ejecución de OpenXR de Windows Mixed Reality admite un conjunto de MSFT extensiones y EXT que aporta todo el conjunto de características de HoloLens 2 a las aplicaciones de OpenXR:

Área de función Disponibilidad de extensiones
Sistemas y sesiones Especificación principal de OpenXR 1.0:
XrInstance, XrSystemId, XrSession
Espacios de referencia (vista, local, fase) Especificación principal de OpenXR 1.0:
XrSpace
Configuraciones de vista (mono, estéreo) Especificación principal de OpenXR 1.0:
XrView...
Cadenas de + intercambiointervalo de fotogramas Especificación principal de OpenXR 1.0:
XrSwapchain... + xrWaitFrame
Capas de composición
(proyección, quad)
Especificación principal de OpenXR 1.0:
XrCompositionLayer... + xrEndFrame
Entrada y hápticos Especificación principal de OpenXR 1.0:
XrAction...
Integración de Direct3D 11/12 Extensiones oficiales KHR publicadas:
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
Espacio de referencia sin enlazar
(experiencias a escala mundial)
MSFT extensión publicada:
XR_MSFT_unbounded_reference_space
Delimitadores espaciales

MSFT extensión publicada:
XR_MSFT_spatial_anchor

MSFT extensión publicada en tiempo de ejecución 108:(solo HoloLens 2)
XR_MSFT_spatial_anchor_persistence

Interacción con la mano
(posición de agarre/objetivo, pulsación de aire, agarre)

solo HoloLens 2

MSFT extensión publicada:
XR_MSFT_hand_interaction
Articulación de mano + malla de mano

solo HoloLens 2

EXT extensión publicada:
XR_EXT_hand_tracking

MSFT extensión publicada:
XR_MSFT_hand_tracking_mesh

Mirada con los ojos

solo HoloLens 2

EXT extensión publicada:
XR_EXT_eye_gaze_interaction
captura de Mixed Reality
(tercera representación de la cámara PV)

solo HoloLens 2

MSFT extensiones publicadas:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Perfiles de interacción del controlador de movimiento
(Samsung Talent y HP Reverb G2)
MSFT extensiones publicadas en tiempo de ejecución 103:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Modelos de representación del controlador de movimiento MSFT extensión publicada en tiempo de ejecución 104:
XR_MSFT_controller_model
Comprensión de escenas (planos, mallas)

solo HoloLens 2

MSFT extensión publicada en tiempo de ejecución 106:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
Modos de reproyecto de la capa de composición
(reproyecto de solo orientación o plano automático)
MSFT extensión publicada en tiempo de ejecución 106:
XR_MSFT_composition_layer_reprojection
Interoperabilidad con otros SDK de Mixed Reality
(por ejemplo, QR)
MSFT extensión publicada:
XR_MSFT_spatial_graph_bridge
Interoperabilidad con UWP CoreWindow API
(por ejemplo, para teclado o mouse)
MSFT extensión publicada en tiempo de ejecución 103:
XR_MSFT_holographic_window_attachment
Interoperabilidad con api de WinRT de Mixed Reality heredadas
(por ejemplo, SpatialAnchorTransferManager))

MSFT extensión publicada en tiempo de ejecución 105:
XR_MSFT_perception_anchor_interop

Otras extensiones entre proveedores

Extensiones oficiales KHR publicadas:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

EXT extensiones publicadas:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Aunque algunas de estas extensiones pueden empezar como extensiones específicas MSFT del proveedor, Microsoft y otros proveedores en tiempo de ejecución de OpenXR trabajan juntos para diseñar EXT extensiones o KHR entre proveedores para muchas de estas áreas de características. Las extensiones entre proveedores harán que el código que escriba para esas características sea portátil entre proveedores en tiempo de ejecución, como con la especificación principal.

¿Dónde puede usar OpenXR?

Captura de pantalla de Minecraft que está jugando un usuario con un casco de realidad mixta

El nuevo motor RenderDragon de Minecraft ha creado su compatibilidad con VR de escritorio con OpenXR!

Microsoft ha estado trabajando con Unity y Epic Games para asegurarse de que el futuro de la realidad mixta está abierto, no solo para HoloLens 2, sino en toda la amplitud de la realidad virtual de PC, incluidos los nuevos auriculares Reverb G2 de HP. OpenXR impulsa la compatibilidad de VR entre proveedores para los principales títulos que se envían hoy, como Minecraft y Microsoft Flight Simulator! Para obtener más información sobre el desarrollo de HoloLens (1ª generación), consulte las notas de la versión.

Para obtener información sobre cómo puede empezar a trabajar con OpenXR en Unity, Unreal Engine o su propio motor, lea.

OpenXR en Unity

La configuración de Unity recomendada por Microsoft para HoloLens 2 y el desarrollo de Windows Mixed Reality es Unity 2020.3 LTS con el complemento Mixed Reality OpenXR. Este complemento incluye compatibilidad con las extensiones de OpenXR que iluminan todas las funcionalidades de HoloLens 2 y cascos de Windows Mixed Reality, como seguimiento de manos/ojos, anclajes espaciales y controladores HP Reverb G2. MRTK-Unity admite OpenXR a partir de MRTK 2.7. Para obtener más información sobre cómo empezar a trabajar con Unity 2020 y OpenXR, consulte Elección de una versión de Unity y un complemento XR.

Si está desarrollando para HoloLens (1.ª generación), deberá seguir usando Unity 2019.4 LTS con el back-end de la API de WinRT heredado. Si tiene como destino el nuevo controlador HP Reverb G2 en una aplicación de Unity 2019, consulte nuestros documentos de entrada de HP Reverb G2.

A partir de Unity 2021.3 LTS, OpenXR será el único back-end de Unity compatible para tener como destino HoloLens 2 y cascos de Windows Mixed Reality.

OpenXR en Unreal Engine

Unreal Engine 4.23 fue la primera versión principal del motor de juegos para enviar soporte de versión preliminar para OpenXR 1.0! Ahora en Unreal Engine 4.26, la compatibilidad con HoloLens 2, Windows Mixed Reality y otros cascos vr de escritorio está disponible a través de la compatibilidad integrada con OpenXR de Unreal Engine. Unreal Engine 4.26 también admite el complemento de extensión OpenXR de Microsoft, lo que permite la interacción con la mano y la compatibilidad con el controlador HP Reverb G2, iluminando todo el conjunto de características de HoloLens 2 y cascos Windows Mixed Reality. Unreal Engine 4.26 está disponible hoy en epic games Launcher, con MRTK-Unreal 0.12 que admiten proyectos openXR.

OpenXR para el desarrollo nativo

Puede desarrollar con OpenXR en un HoloLens 2 o Windows Mixed Reality casco vr envolvente en el escritorio. Si no tiene acceso a un casco, puede usar el emulador de HoloLens 2 o el simulador de Windows Mixed Reality en su lugar.

Para empezar a desarrollar aplicaciones de OpenXR para HoloLens 2 o cascos vr de Windows Mixed Reality, consulte cómo empezar a trabajar con el desarrollo de OpenXR.

Para realizar un recorrido por todos los componentes principales de la API de OpenXR, junto con ejemplos de las aplicaciones reales que usan OpenXR hoy, consulte este vídeo de tutorial de 60 minutos:

Consulte también