OpenXR

Logotipo do OpenXR

O OpenXR é um padrão de API livre de royalties aberto da Khronos, fornecendo aos mecanismos acesso nativo a uma variedade de dispositivos em todo o espectro da realidade misturada.

Você pode desenvolver usando o OpenXR em um HoloLens 2 ou Windows Mixed Reality headset vr imersivo na área de trabalho. Se você não tiver acesso a um headset, poderá usar o Emulador HoloLens 2 ou o Simulador de Windows Mixed Reality.

Por que o OpenXR?

Com o OpenXR, você pode criar mecanismos direcionados a dispositivos holográficos, como HoloLens 2 e dispositivos VR imersivos, como headsets Windows Mixed Reality para computadores desktop. O OpenXR permite escrever código uma vez que seja portátil em uma ampla variedade de plataformas de hardware.

A API OpenXR usa um carregador para conectar seu aplicativo diretamente ao suporte da plataforma nativa do headset. Os usuários finais obtêm desempenho máximo e latência mínima, estejam eles usando um Windows Mixed Reality ou qualquer outro headset.

O que é o OpenXR?

A API OpenXR fornece a previsão de pose principal, o tempo do quadro e a funcionalidade de entrada espacial necessária para criar um mecanismo que possa ser direcionado a dispositivos holográficos e imersivos.

Para saber mais sobre a API do OpenXR, marcar a especificação openXR 1.0, a referência de API e o guia de referência rápida. Para obter mais informações, consulte a página Khronos OpenXR.

Para direcionar o conjunto completo de recursos de HoloLens 2, você também usará extensões OpenXR específicas do fornecedor e entre fornecedores que permitem recursos adicionais além do núcleo do OpenXR 1.0, como acompanhamento articulado das mãos, acompanhamento ocular, mapeamento espacial e âncoras espaciais. Para obter mais informações, consulte a seção Roteiro abaixo sobre as extensões que virão ainda este ano.

O OpenXR não é um mecanismo de realidade misturada. Em vez disso, o OpenXR permite que mecanismos como Unity e Unreal escrevam código portátil uma vez que possam acessar os recursos da plataforma nativa do dispositivo holográfico ou imersivo do usuário, seja qual for o fornecedor que criou essa plataforma.

Roteiro

A especificação OpenXR define um mecanismo de extensão que permite que os implementadores de runtime exponham funcionalidades adicionais além dos principais recursos definidos na especificação base do OpenXR 1.0.

Há três tipos de extensões OpenXR:

  • Extensões de fornecedor (por exemplo, XR_MSFT_...): habilita a inovação por fornecedor em recursos de hardware ou software. Qualquer fornecedor de runtime pode introduzir e enviar uma extensão de fornecedor a qualquer momento.
    • Extensões experimentais do fornecedor (por exemplo, XR_MSFTX_...): extensões de fornecedor experimentais que estão sendo visualizadas para coletar comentários. XR_MSFTX_... As extensões são somente para dispositivos de desenvolvedor e serão removidas quando a extensão real for enviada. Para experimentar com eles, você pode habilitar extensões de visualização em seu dispositivo de desenvolvedor.
  • Extensões entre fornecedores EXT : extensões entre fornecedores que várias empresas definem e implementam. Grupos de empresas interessadas podem introduzir extensões EXT a qualquer momento.
  • Extensões oficiais KHR : extensões oficiais do Khronos ratificadas como parte de uma versão de especificação principal. As extensões KHR são cobertas pela mesma licença que a própria especificação principal.

O Windows Mixed Reality OpenXR Runtime dá suporte a um conjunto de MSFT extensões e EXT que traz o conjunto completo de recursos HoloLens 2 para aplicativos OpenXR:

Área do recurso Disponibilidade da extensão
Sistemas + sessões Especificação de núcleo do OpenXR 1.0:
XrInstance, XrSystemId, XrSession
Espaços de referência (exibição, local, estágio) Especificação de núcleo do OpenXR 1.0:
XrSpace
Exibir configurações (mono, estéreo) Especificação de núcleo do OpenXR 1.0:
XrView...
Swapchains + tempo de quadro Especificação de núcleo do OpenXR 1.0:
XrSwapchain... + xrWaitFrame
Camadas de composição
(projeção, quad)
Especificação de núcleo do OpenXR 1.0:
XrCompositionLayer... + xrEndFrame
Entrada e háptico Especificação de núcleo do OpenXR 1.0:
XrAction...
Integração do Direct3D 11/12 Extensões oficiais KHR lançadas:
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
Espaço de referência não associado
(experiências de escala mundial)
MSFT extensão liberada:
XR_MSFT_unbounded_reference_space
Âncoras espaciais

MSFT extensão liberada:
XR_MSFT_spatial_anchor

MSFT extensão lançada no runtime 108:(somente HoloLens 2)
XR_MSFT_spatial_anchor_persistence

Interação com as mãos
(pose de aderência/objetivo, toque de ar, garra)

somente HoloLens 2

MSFT extensão liberada:
XR_MSFT_hand_interaction
Articulação da mão + malha manual

somente HoloLens 2

EXT extensão liberada:
XR_EXT_hand_tracking

MSFT extensão liberada:
XR_MSFT_hand_tracking_mesh

Foco com os olhos

somente HoloLens 2

EXT extensão liberada:
XR_EXT_eye_gaze_interaction
Captura de Realidade Misturada
(terceira renderização da câmera PV)

somente HoloLens 2

MSFT extensões lançadas:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Perfis de interação do controlador de movimento
(Samsung Odyssey e HP Reverb G2)
MSFT extensões lançadas no runtime 103:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Modelos de renderização do controlador de movimento MSFT extensão lançada no runtime 104:
XR_MSFT_controller_model
Reconhecimento de cena (planos, malhas)

somente HoloLens 2

MSFT extensão lançada no runtime 106:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
Modos de reprojeção da camada de composição
(reprojeção somente de orientação ou planar automático)
MSFT extensão lançada no runtime 106:
XR_MSFT_composition_layer_reprojection
Interoperabilidade com outros SDKs Realidade Misturada
(por exemplo, QR)
MSFT extensão liberada:
XR_MSFT_spatial_graph_bridge
Interoperabilidade com a API UWP CoreWindow
(por exemplo, para teclado/mouse)
MSFT extensão lançada no runtime 103:
XR_MSFT_holographic_window_attachment
Interoperabilidade com APIs herdadas Realidade Misturada WinRT
(por exemplo, SpatialAnchorTransferManager))

MSFT extensão lançada no runtime 105:
XR_MSFT_perception_anchor_interop

Outras extensões entre fornecedores

Extensões oficiais KHR lançadas:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

EXT extensões lançadas:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Embora algumas dessas extensões possam começar como extensões específicas MSFT do fornecedor, a Microsoft e outros fornecedores de runtime do OpenXR estão trabalhando juntos para criar extensões ou KHR fornecedores EXT cruzados para muitas dessas áreas de recursos. Extensões entre fornecedores tornarão o código que você escreve para esses recursos portátil entre fornecedores de runtime, como com a especificação principal.

Onde você pode usar o OpenXR?

Captura de tela do Minecraft sendo reproduzido por um usuário usando um fone de ouvido de realidade misturada

O novo mecanismo RenderDragon do Minecraft criou seu suporte para VR da área de trabalho usando o OpenXR!

A Microsoft tem trabalhado com o Unity e a Epic Games para garantir que o futuro da realidade misturada esteja aberto, não apenas por HoloLens 2, mas por toda a amplitude do PC VR, incluindo o novo headset Reverb G2 da HP. O OpenXR capacita o suporte de VR entre fornecedores para o envio de títulos principais hoje, como Minecraft e Simulador de Voo da Microsoft! Para obter mais informações sobre como desenvolver para o HoloLens (1ª geração), confira as notas sobre a versão.

Para saber como você pode começar a usar o OpenXR no Unity, no Unreal Engine ou em seu próprio mecanismo, continue a leitura!

OpenXR no Unity

A configuração atual recomendada do Unity da Microsoft para desenvolvimento de HoloLens 2 e Windows Mixed Reality é o Unity 2020.3 LTS com o plug-in OpenXR Realidade Misturada. Esse plug-in inclui suporte para as extensões OpenXR que iluminam todos os recursos de headsets HoloLens 2 e Windows Mixed Reality, incluindo acompanhamento manual/ocular, âncoras espaciais e controladores HP Reverb G2. MRTK-Unity dá suporte ao OpenXR a partir do MRTK 2.7. Para obter mais informações sobre como começar a usar o Unity 2020 e o OpenXR, consulte Escolhendo uma versão do Unity e plug-in XR.

Se você estiver desenvolvendo para o HoloLens (1ª geração), precisará continuar usando o Unity 2019.4 LTS com o back-end herdado da API do WinRT. Se você estiver direcionando o novo controlador HP Reverb G2 em um aplicativo unity 2019, consulte nossos documentos de entrada HP Reverb G2.

A partir do Unity 2021.3 LTS, o OpenXR será o único back-end do Unity com suporte para direcionamento de headsets HoloLens 2 e Windows Mixed Reality.

OpenXR no Unreal Engine

O Unreal Engine 4.23 foi a primeira versão principal do mecanismo de jogo a fornecer suporte de versão prévia para OpenXR 1.0! Agora, no Unreal Engine 4.26, o suporte para HoloLens 2, Windows Mixed Reality e outros fones de ouvido VR da área de trabalho está disponível por meio do suporte interno ao OpenXR do Unreal Engine. O Unreal Engine 4.26 também dá suporte ao plug-in de extensão OpenXR da Microsoft, permitindo a interação manual e o suporte ao controlador HP Reverb G2, iluminando todo o conjunto de recursos de HoloLens 2 e headsets Windows Mixed Reality. O Unreal Engine 4.26 está disponível hoje no Epic Games Launcher, com o MRTK-Unreal 0.12 dando suporte a projetos OpenXR.

OpenXR para desenvolvimento nativo

Você pode desenvolver usando o OpenXR em um HoloLens 2 ou Windows Mixed Reality headset vr imersivo na área de trabalho. Se você não tiver acesso a um headset, poderá usar o Emulador HoloLens 2 ou o Simulador de Windows Mixed Reality.

Para começar a desenvolver aplicativos OpenXR para headsets HoloLens 2 ou Windows Mixed Reality VR, confira como começar a usar o desenvolvimento do OpenXR.

Para um tour por todos os principais componentes da API OpenXR, juntamente com exemplos dos aplicativos do mundo real que usam o OpenXR hoje, marcar este vídeo passo a passo de 60 minutos:

Confira também