OpenXR

Logotipo de OpenXR

OpenXR es un estándar de API abierto sin impuestos de Khronosque proporciona a los motores acceso nativo a una variedad de dispositivos en el espectro de realidad mixta.

Puede desarrollar mediante OpenXR en un HoloLens 2 o Windows Mixed Reality casco de realidad virtual inmersivo en el escritorio. Si no tiene acceso a un casco, puede usar el HoloLens 2 Emulator o el simulador de Windows Mixed Reality en su lugar.

¿Por qué OpenXR?

Con OpenXR, puede crear motores destinados a dispositivos holográficos, como HoloLens 2, y dispositivos vr inmersivos, como cascos Windows Mixed Reality para equipos de escritorio. OpenXR le permite escribir código una vez que se pueda 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 nativa de la plataforma de los cascos. Los usuarios finales obtienen el máximo rendimiento y la latencia mínima, tanto si usan un Windows Mixed Reality como 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 APIy la guía de referencia rápida. Para obtener más información, vea la página de OpenXR de Khronos.

Para dirigirse al conjunto completo de características de HoloLens 2, también usará extensiones OpenXR específicas del proveedor y entre proveedores que habilitan características adicionales más allá del núcleo de OpenXR 1.0, como el seguimiento de manos articulados, el seguimiento de los ojos, la asignación espacial y los anclajes espaciales. Para obtener más información, consulte la sección Mapa de ruta a continuación sobre las extensiones que se publicarán más adelante este año.

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

Plan de desarrollo

La especificación de OpenXR define un mecanismo de extensión que permite a los implementadores en tiempo de ejecución exponer funcionalidades adicionales 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, ): permite 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, ): las extensiones de proveedor experimentales se están visualizando para recopilar comentarios. MSFT_preview Las extensiones son solo para dispositivos de desarrollador y se quitarán cuando se distribuye la extensión real. Para experimentar con ellas, puede habilitar las extensiones de versión preliminar en el dispositivo para desarrolladores.
  • Extensiones entre proveedores: extensiones entre proveedores que varias empresas definen e implementan. Los grupos de empresas interesadas pueden introducir extensiones EXT en cualquier momento.
  • Extensiones oficiales: extensiones oficiales de Khronos que se han publicado como parte de una versión de especificación básica. Las extensiones DEER están cubiertas por la misma licencia que la propia especificación principal.

El Windows Mixed Reality en tiempo de ejecución de OpenXR admite un conjunto de extensiones y que aporta el conjunto completo de características de HoloLens 2 a MSFTEXT las aplicaciones de OpenXR:

Área de función Disponibilidad de extensiones
Sistemas y sesiones Especificación de núcleo de OpenXR 1.0:
XrInstance, XrSystemId, XrSession
Espacios de referencia (vista, local, fase) Especificación de núcleo de OpenXR 1.0:
XrSpace
Ver configuraciones (mono, estéreo) Especificación de núcleo de OpenXR 1.0:
XrView...
Cadenas de intercambiotiempo de fotogramas Especificación de núcleo de OpenXR 1.0:
XrSwapchain... + xrWaitFrame
Capas de composición
(proyección, cuatro)
Especificación de núcleo de OpenXR 1.0:
XrCompositionLayer... + xrEndFrame
Entrada y hápticos Especificación de núcleo de OpenXR 1.0:
XrAction...
Integración de Direct3D 11 Extensión oficial publicada:
XR_KHR_D3D11_enable
Integración de Direct3D 12 Extensión oficial publicada:
XR_KHR_D3D12_enable
Espacio de referencia sin enlazar
(experiencias a escala mundial)
Extensión publicada:
XR_MSFT_unbounded_reference_space
Delimitadores espaciales

Extensión publicada:
XR_MSFT_spatial_anchor

Extensión en tiempo de ejecución de versión preliminar 107:
XR_MSFT_spatial_anchor_persistence_preview

Interacción con la mano
(posición de control/objetivo, pulsación en el aire, comprensión)

HoloLens 2 solo

Extensión publicada:
XR_MSFT_hand_interaction
Articulación de la mano + malla de mano

HoloLens 2 solo

Extensión publicada:
XR_EXT_hand_tracking

Extensión publicada:
XR_MSFT_hand_tracking_mesh
Mirada con ojo

HoloLens 2 solo

Extensión publicada:
XR_EXT_eye_gaze_interaction
Captura de realidad mixta
(tercera representación de la cámara PV)

HoloLens 2 solo

Extensiones publicadas:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Interoperabilidad con otros MIXED REALITY SDK
(por ejemplo, QR)

Extensión publicada:
XR_MSFT_spatial_graph_bridge

Extensión publicada en tiempo de ejecución 105:
XR_MSFT_perception_anchor_interop

Interoperabilidad con corewindow API de UWP
(por ejemplo, para el teclado o el mouse)
Extensión publicada en tiempo de ejecución 103:
XR_MSFT_holographic_window_attachment
Perfiles de interacción del controlador de movimiento
(Samsung Samsung Samsung y HP Reverb G2)
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 Extensión publicada en tiempo de ejecución 104:
XR_MSFT_controller_model
Descripción de la escena (planos, mallas)

HoloLens 2 solo

Extensión publicada en tiempo de ejecución 106:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization

Modos de reproducción de capas de composición
(reproyecto automático planar o solo orientación)
Extensión publicada en tiempo de ejecución 106:
XR_MSFT_composition_layer_reprojection
Otras extensiones entre proveedores

Extensiones oficiales publicadas:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

Extensiones publicadas:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Aunque algunas de estas extensiones pueden empezar como extensiones específicas del proveedor, Microsoft y otros proveedores de tiempo de ejecución de OpenXR trabajan conjuntamente para diseñar extensiones o entre proveedores para muchas de estas áreas de MSFTEXTKHR 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 Minecraft que un usuario reproduce con un casco de realidad mixta

Minecraft el nuevo motor Render Creative ha creado su compatibilidad de realidad virtual 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 gama de PC VR, incluido el nuevo casco Reverb G2 de HP. OpenXR potencia la compatibilidad de REALIDAD virtual entre proveedores para el envío de títulos principales hoy en día, como Minecraft y Simulador de vuelos de Microsoft. Para obtener más información sobre el desarrollo HoloLens (1.ª generación), vea las notas de la versión.

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

OpenXR en Unity

La configuración de Unity recomendada actualmente de Microsoft para el desarrollo de HoloLens 2 y Windows Mixed Reality es Unity 2020.3 LTS con la versión Mixed Reality complemento OpenXR más reciente. Este complemento incluye compatibilidad con las extensiones openXR que encienden todas las funcionalidades de los cascos de HoloLens 2y Windows Mixed Reality, incluido el seguimiento de manos y ojos, anclajes espaciales y controladores HP Reverb G2. MRTK-Unity admite OpenXR a partir de MRTK 2.7. Para 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 va a desarrollar para HoloLens (1.ª generación), deberá seguir usando Unity 2019.4 LTS con el back-end de api winRT heredado. Si tiene como destino el nuevo controlador HP Reverb G2 en una aplicación de Unity 2019, consulte la documentación de entrada de HP Reverb G2.

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

OpenXR en Unreal Engine

Unreal Engine 4.23 fue la primera versión principal del motor de juegos en enviar compatibilidad con la versión preliminar de 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 de OpenXR de Unreal Engine. Unreal Engine 4.26 también admite el complemento de extensión OpenXRde Microsoft, lo que permite la interacción con las manos y la compatibilidad con el controlador HP Reverb G2, lo que habilita el conjunto completo de características de HoloLens 2 y Windows Mixed Reality cascos. Unreal Engine 4.26 está disponible actualmente en Epic Games Selector, con MRTK-Unreal 0.12 compatible con proyectos de OpenXR.

OpenXR para el desarrollo nativo

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

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

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

Vea también