OpenXR

Logótipo OpenXR

O OpenXR é uma norma de API sem royalties aberta da Khronos, fornecendo aos motores acesso nativo a uma variedade de dispositivos em todo o espectro de realidade mista.

Pode desenvolver com o OpenXR num HoloLens 2 ou Windows Mixed Reality headset VR envolvente no ambiente de trabalho. Se não tiver acesso a um headset, pode utilizar o HoloLens 2 Emulador ou o Simulador de Windows Mixed Reality.

Porquê o OpenXR?

Com o OpenXR, pode criar motores que visam dispositivos holográficos, como HoloLens 2 e dispositivos VR envolventes, como auscultadores Windows Mixed Reality para PCs de ambiente de trabalho. O OpenXR permite-lhe escrever código uma vez que seja portátil numa vasta gama de plataformas de hardware.

A API OpenXR utiliza um carregador para ligar a sua aplicação diretamente ao suporte da plataforma nativa do headset. Os utilizadores finais obtêm o desempenho máximo e a latência mínima, quer estejam a utilizar um Windows Mixed Reality ou qualquer outro headset.

O que é o OpenXR?

A API OpenXR fornece a previsão de pose principal, a temporização da moldura e a funcionalidade de entrada espacial de que terá de criar um motor que possa visar dispositivos holográficos e envolventes.

Para saber mais sobre a API OpenXR, consulte a especificação OpenXR 1.0, a referência da 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 funcionalidades de HoloLens 2, também utilizará extensões OpenXR específicas para fornecedores e fornecedores que permitem funcionalidades adicionais para além do núcleo OpenXR 1.0, como controlo manual articulado, controlo ocular, mapeamento espacial e âncoras espaciais. Para obter mais informações, consulte a secção Mapa de Objetivos abaixo sobre as extensões que serão apresentadas ainda este ano.

O OpenXR não é, por si só, um motor de realidade mista. Em vez disso, o OpenXR permite que motores como o Unity e o Unreal escrevam código portátil uma vez que possam aceder às funcionalidades da plataforma nativa do dispositivo holográfico ou envolvente do utilizador, seja qual for o fornecedor que criou essa plataforma.

Mapa

A especificação OpenXR define um mecanismo de extensão que permite aos implementadores de runtime expor funcionalidades adicionais para além das funcionalidades principais definidas na especificação base OpenXR 1.0.

Existem três tipos de extensões OpenXR:

  • Extensões de fornecedor (por exemplo, XR_MSFT_...): ativa a inovação por fornecedor em funcionalidades de hardware ou software. Qualquer fornecedor de runtime pode introduzir e enviar uma extensão de fornecedor em qualquer altura.
    • Extensões experimentais do fornecedor (por exemplo, XR_MSFTX_...): extensões experimentais do fornecedor que estão a ser pré-visualizadas para recolher feedback. XR_MSFTX_... as extensões destinam-se apenas a dispositivos de programador e serão removidas quando a extensão real for enviada. Para experimentá-las, pode ativar extensões de pré-visualização no seu dispositivo de programador.
  • 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 em qualquer altura.
  • Extensões oficiais KHR : extensões oficiais de Khronos ratificadas como parte de uma versão de especificação principal. As extensões KHR são abrangidas pela mesma licença que a própria especificação principal.

O Windows Mixed Reality OpenXR Runtime suporta um conjunto de MSFT extensões e EXT que traz o conjunto completo de funcionalidades de HoloLens 2 para aplicações OpenXR:

Área de funcionalidades Disponibilidade da extensão
Sistemas + sessões Especificação de núcleo OpenXR 1.0:
XrInstance, XrSystemId, XrSession
Espaços de referência (vista, local, fase) Especificação de núcleo OpenXR 1.0:
XrSpace
Ver configurações (mono, estéreo) Especificação de núcleo OpenXR 1.0:
XrView...
Swapchains + temporização da moldura Especificação de núcleo OpenXR 1.0:
XrSwapchain... + xrWaitFrame
Camadas de composição
(projeção, quad)
Especificação de núcleo OpenXR 1.0:
XrCompositionLayer... + xrEndFrame
Entrada e hápticos Especificação de núcleo 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 vinculado
(experiências à escala mundial)
MSFT extensão lançada:
XR_MSFT_unbounded_reference_space
Âncoras espaciais

MSFT extensão lançada:
XR_MSFT_spatial_anchor

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

Interação manual
(pose de aperto/ponta, toque no ar, agarrar)

apenas HoloLens 2

MSFT extensão lançada:
XR_MSFT_hand_interaction
Articulação manual + malha manual

apenas HoloLens 2

EXT extensão lançada:
XR_EXT_hand_tracking

MSFT extensão lançada:
XR_MSFT_hand_tracking_mesh

Olhar para os olhos

apenas HoloLens 2

EXT extensão lançada:
XR_EXT_eye_gaze_interaction
Captura de Mixed Reality
(terceira composição da câmara PV)

apenas 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 composição do controlador de movimento MSFT extensão lançada no runtime 104:
XR_MSFT_controller_model
Compreensão de cenas (planos, malhas)

apenas 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
(correção automática ou apenas de orientação)
MSFT extensão lançada no runtime 106:
XR_MSFT_composition_layer_reprojection
Interop com outros SDKs de Mixed Reality
(por exemplo, QR)
MSFT extensão lançada:
XR_MSFT_spatial_graph_bridge
Interop with UWP CoreWindow API
(por exemplo, para teclado/rato)
MSFT extensão lançada no runtime 103:
XR_MSFT_holographic_window_attachment
Interop with legacy Mixed Reality WinRT APIs (Interop with legacy Mixed Reality WinRT APIs)
(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 destas extensões possam começar como extensões específicas MSFT do fornecedor, a Microsoft e outros fornecedores de runtime OpenXR estão a trabalhar em conjunto para conceber extensões ou KHR fornecedores EXT cruzados para muitas destas áreas de funcionalidades. As extensões entre fornecedores farão com que o código que escreve para essas funcionalidades seja portátil entre os fornecedores de runtime, tal como acontece com a especificação principal.

Onde pode utilizar o OpenXR?

Captura de ecrã do Minecraft a ser reproduzido por um utilizador que usa um headset de realidade mista

O novo motor RenderDragon do Minecraft criou o suporte vr de ambiente de trabalho com o OpenXR!

A Microsoft tem trabalhado com o Unity e a Epic Games para garantir que o futuro da realidade mista está aberto, não só para HoloLens 2, mas em toda a amplitude do PC VR, incluindo o novo headset Reverb G2 da HP. O OpenXR alimenta o suporte vr entre fornecedores para os principais títulos de envio de hoje, como Minecraft e Microsoft Flight Simulator! Para obter mais informações sobre o desenvolvimento do HoloLens (1.ª geração), veja as notas de versão.

Para saber como pode começar a utilizar o OpenXR no Unity, o Unreal Engine ou o seu próprio motor, continue a ler!

OpenXR no Unity

A configuração do Unity recomendada atual da Microsoft para HoloLens 2 e desenvolvimento de Windows Mixed Reality é o Unity 2020.3 LTS com o plug-in OpenXR Mixed Reality. Este plug-in inclui suporte para as extensões OpenXR que iluminam todas as capacidades dos auscultadores HoloLens 2 e Windows Mixed Reality, incluindo controlo manual/ocular, âncoras espaciais e controladores HP Reverb G2. MRTK-Unity suporta o OpenXR a partir do MRTK 2.7. Para obter mais informações sobre como começar a utilizar o Unity 2020 e o OpenXR, consulte Escolher uma versão do Unity e plug-in XR.

Se estiver a desenvolver para o HoloLens (1.ª geração), terá de continuar a utilizar o Unity 2019.4 LTS com o back-end legado da API WinRT. Se estiver a direcionar o novo controlador HP Reverb G2 numa aplicação do Unity 2019, consulte os nossos documentos de entrada HP Reverb G2.

A partir do Unity 2021.3 LTS, o OpenXR será o único back-end suportado do Unity para direcionar os auscultadores HoloLens 2 e Windows Mixed Reality.

OpenXR no Unreal Engine

O Unreal Engine 4.23 foi o primeiro grande lançamento do motor de jogo a enviar suporte de pré-visualização para o OpenXR 1.0! Agora, no Unreal Engine 4.26, o suporte para HoloLens 2, Windows Mixed Reality e outros auscultadores VR de ambiente de trabalho está disponível através do suporte openXR incorporado do Unreal Engine. O Unreal Engine 4.26 também suporta o plug-in de extensão OpenXR da Microsoft, permitindo a interação manual e o suporte do controlador HP Reverb G2, iluminando o conjunto completo de funcionalidades de headsets HoloLens 2 e Windows Mixed Reality. O Unreal Engine 4.26 está disponível hoje no Iniciador de Jogos Épicos, com MRTK-Unreal 0.12 a suportar projetos OpenXR.

OpenXR para desenvolvimento nativo

Pode desenvolver com o OpenXR num HoloLens 2 ou Windows Mixed Reality headset VR envolvente no ambiente de trabalho. Se não tiver acesso a um headset, pode utilizar o HoloLens 2 Emulador ou o Simulador de Windows Mixed Reality.

Para começar a desenvolver aplicações OpenXR para auscultadores HoloLens 2 ou Windows Mixed Reality VR, veja como começar a utilizar o desenvolvimento openXR.

Para uma apresentação de todos os principais componentes da API OpenXR, juntamente com exemplos das aplicações do mundo real que utilizam o OpenXR hoje, veja este vídeo de instruções de 60 minutos:

Ver também