OpenXR
OpenXR es un estándar abierto de API libre de regalías de Khronos, lo que proporciona motores con acceso nativo a una gama de dispositivos en todo el espectro de realidad mixta.
Puede desarrollar con OpenXR en un casco de Realidad virtual envolvente de HoloLens 2 o Windows Mixed Reality 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 cascos de Windows Mixed Reality para equipos de escritorio. OpenXR le permite escribir código una vez que se pueda transferir a través de 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, tanto si usan 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 necesita 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 de características completo de HoloLens 2, también usa extensiones openXR específicas de varios proveedores y proveedores. Estas habilitan características 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 sobre las extensiones que vienen más adelante este año.
OpenXR no es un motor de realidad mixta. En su lugar, OpenXR permite que los motores como Unity y Unreal escriban código portátil una vez que puedan acceder a las características de la plataforma nativa del dispositivo holográfico o inmersivo 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 en tiempo de ejecución exponer otras funciones 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 las 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 en versión preliminar para recopilar comentarios.XR_MSFTX_...
las extensiones son solo para dispositivos de desarrollador y se quitan cuando se incluye la extensión real. Para experimentar con ellos, puede habilitar extensiones de vista previa en el dispositivo para desarrolladores. - Extensiones entre proveedores
EXT
: extensiones entre proveedores que definen e implementan varias empresas. Los grupos de empresas interesadas pueden introducir extensiones EXT en cualquier momento. - Extensiones oficiales
KHR
: extensiones oficiales 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 características | 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... |
Intervalos de fotogramas + de cadenas de intercambio | Especificación de núcleo de OpenXR 1.0:XrSwapchain... + xrWaitFrame |
Capas de composición (proyección, quad) |
Especificación de núcleo de OpenXR 1.0:XrCompositionLayer... + xrEndFrame |
Entrada y hápticas | Especificación de núcleo de OpenXR 1.0:XrAction... |
Integración de Direct3D 11/12 | Extensiones oficiales KHR publicadas:XR_KHR_D3D11_enable |
Espacio de referencia sin enlazar (experiencias a escala mundial) |
MSFT extensión publicada:XR_MSFT_unbounded_reference_space |
Delimitadores espaciales |
|
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 |
|
Mirada con ojo Solo HoloLens 2 |
EXT extensión publicada:XR_EXT_eye_gaze_interaction |
Captura de realidad mixta (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 (SamsungDisea 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 la escena (planos, mallas) Solo HoloLens 2 |
MSFT extensión publicada en tiempo de ejecución 106:XR_MSFT_scene_understanding XR_MSFT_scene_understanding_serialization |
Marcador de escena (códigos QR) Solo HoloLens 2 |
MSFT extensión publicada en tiempo de ejecución 113: XR_MSFT_scene_marker |
Modos de reproyecto de capa de composición (reproyecto de solo orientación o planar automático) |
MSFT extensión publicada en tiempo de ejecución 106:XR_MSFT_composition_layer_reprojection |
Interoperabilidad con otros SDK de realidad mixta (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 las API heredadas de WinRT de Mixed Reality (por ejemplo, SpatialAnchorTransferManager )) |
|
Otras extensiones entre proveedores | Extensiones oficiales
|
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
proveedores cruzados para muchas de estas áreas de características. Las extensiones entre proveedores hacen que el código que escriba para esas características sea portátil entre proveedores en tiempo de ejecución, al igual que con la especificación principal.
¿Dónde puede usar OpenXR?
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 VR de PC, incluido el nuevo casco Reverb G2 de HP. OpenXR potencia 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 para 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, consulte!
OpenXR en Unity
La configuración de Unity recomendada actual de Microsoft para el desarrollo de HoloLens 2 y Windows Mixed Reality es Unity 2020.3 LTS con el complemento OpenXR de Mixed Reality. Este complemento incluye compatibilidad con las extensiones de OpenXR que iluminan todas las funcionalidades de los cascos holoLens 2 y Windows Mixed Reality, incluidos el seguimiento manual/ocular, los anclajes espaciales y los 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 usar 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), debe seguir usando Unity 2019.4 LTS con el back-end de 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 es el único back-end de Unity compatible con 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 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 OpenXR de Microsoft. Esto permite la interacción con la mano y la compatibilidad con el controlador HP Reverb G2, iluminando el conjunto completo de características de holoLens 2 y cascos de Windows Mixed Reality. Unreal Engine 4.26 está disponible en la actualidad en epic games Launcher, con MRTK-Unreal 0.12 que admite proyectos OpenXR.
OpenXR para el desarrollo nativo
Puede desarrollar con OpenXR en un casco de Realidad virtual envolvente de HoloLens 2 o Windows Mixed Reality 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 OpenXR para cascos de Realidad virtual de HoloLens 2 o 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 del mundo real que usan OpenXR hoy, consulte este vídeo de tutorial de 60 minutos: