OpenXR
O OpenXR é um padrão de API aberto isento de royalties da Khronos, fornecendo aos mecanismos acesso nativo a uma variedade de dispositivos em todo o espectro de realidade misturada.
Você pode desenvolver usando o OpenXR em um headset de VR imersivo do HoloLens 2 ou Windows Mixed Reality na área de trabalho. Se você não tiver acesso a um fone de ouvido, poderá usar o Emulador do HoloLens 2 ou o Simulador de Realidade Misturada do Windows.
Por que o OpenXR?
Com o OpenXR, você pode criar mecanismos direcionados a dispositivos holográficos, como o HoloLens 2, e dispositivos de VR imersivos, como headsets Windows Mixed Reality para computadores desktop. O OpenXR permite que você escreva 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 à 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 fone de ouvido.
O que é o OpenXR?
A API OpenXR fornece a previsão de pose principal, o tempo de 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, confira a especificação do 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 do Khronos OpenXR.
Para direcionar o conjunto completo de recursos do HoloLens 2, você também usa extensões OpenXR específicas de fornecedores e fornecedores. Eles permitem recursos como rastreamento de mão articulado, rastreamento ocular, mapeamento espacial e âncoras espaciais. Para obter mais informações, consulte a seção Roteiro sobre as extensões que serão lançadas ainda este ano.
O OpenXR não é em si um mecanismo de realidade mista. Em vez disso, o OpenXR permite que mecanismos como Unity e Unreal escrevam código portátil uma vez que possa acessar os recursos da plataforma nativa do dispositivo holográfico ou imersivo do usuário, seja qual for o fornecedor que construiu essa plataforma.
Roteiro
A especificação OpenXR define um mecanismo de extensão que permite que os implementadores de runtime exponham outras funcionalidades além dos principais recursos definidos na especificação base do OpenXR 1.0.
Existem três tipos de extensões OpenXR:
- Extensões de fornecedor (por exemplo):
XR_MSFT_...
permite 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 de fornecedor experimentais (por exemplo,
XR_MSFTX_...
): extensões de fornecedor experimentais sendo visualizadas para coletar comentários.XR_MSFTX_...
As extensões são apenas para dispositivos de desenvolvedor e são removidas quando a extensão real é enviada. Para experimentá-los, 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 do HoloLens 2 para aplicativos OpenXR:
Área de recursos | Disponibilidade de extensão |
---|---|
Sistemas + sessões | Especificação principal do OpenXR 1.0:XrInstance , XrSystemId , XrSession |
Espaços de referência (vista, local, palco) | Especificação principal do OpenXR 1.0:XrSpace |
Exibir configurações (mono, estéreo) | Especificação principal do OpenXR 1.0:XrView... |
Tempo do quadro de swapchains + | Especificação principal do OpenXR 1.0:XrSwapchain... + xrWaitFrame |
Camadas de composição (projeção, quad) |
Especificação principal do OpenXR 1.0:XrCompositionLayer... + xrEndFrame |
Entrada e háptica | Especificação principal do OpenXR 1.0:XrAction... |
Integração com Direct3D 11/12 | Extensões oficiais KHR lançadas:XR_KHR_D3D11_enable |
Espaço de referência ilimitado (experiências à escala mundial) |
MSFT Extensão lançada:XR_MSFT_unbounded_reference_space |
Âncoras espaciais |
|
Interação da mão (pose de aperto/mira, toque de ar, agarrar) Somente HoloLens 2 |
MSFT Extensão lançada:XR_MSFT_hand_interaction |
Articulação da mão + malha da mão Somente HoloLens 2 |
|
Foco com o olhar Somente HoloLens 2 |
EXT Extensão lançada: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 |
Compreensão de cena (planos, malhas) Somente HoloLens 2 |
MSFT Extensão lançada no Runtime 106:XR_MSFT_scene_understanding XR_MSFT_scene_understanding_serialization |
Marcador de cena (QR Codes) Somente HoloLens 2 |
MSFT Extensão lançada no Runtime 113: XR_MSFT_scene_marker |
Modos de reprojeção da camada de composição (reprojeção autoplanar ou somente orientação) |
MSFT Extensão lançada no Runtime 106:XR_MSFT_composition_layer_reprojection |
Interoperabilidade com outros SDKs de Realidade Misturada (por exemplo, QR) |
MSFT Extensão lançada: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 WinRT de Realidade Misturada herdadas (por exemplo, SpatialAnchorTransferManager )) |
|
Outras extensões de vários fornecedores | Extensões oficiais
|
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 projetar extensões ou fornecedores cruzados EXT
KHR
para muitas dessas áreas de recursos. As extensões entre fornecedores tornam o código que você escreve para esses recursos portátil entre fornecedores de tempo de execução, como acontece com a especificação principal.
Onde você pode usar o OpenXR?
O novo mecanismo RenderDragon do Minecraft construiu seu suporte VR para desktop usando OpenXR!
A Microsoft tem trabalhado com a Unity e a Epic Games para garantir que o futuro da realidade mista esteja aberto, não apenas para o HoloLens 2, mas em toda a amplitude do PC VR, incluindo o novo headset Reverb G2 da HP. O OpenXR potencializa o suporte de VR entre fornecedores para os principais títulos lançados hoje, como Minecraft e Microsoft Flight Simulator! Para obter mais informações sobre o desenvolvimento para HoloLens (1ª geração), consulte as notas de versão.
Para saber como você pode começar a usar o OpenXR no Unity, Unreal Engine ou em seu próprio mecanismo, continue lendo!
OpenXR no Unity
A configuração atual recomendada do Unity pela Microsoft para o desenvolvimento do HoloLens 2 e do Windows Mixed Reality é o Unity 2020.3 LTS com o plug-in Mixed Reality OpenXR. Esse plug-in inclui suporte para as extensões OpenXR que iluminam todos os recursos dos headsets HoloLens 2 e Windows Mixed Reality, incluindo acompanhamento manual/ocular, âncoras espaciais e controladores HP Reverb G2. O 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 Escolher uma versão do Unity e um 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 da API do WinRT herdado. Se você estiver direcionando o novo controlador HP Reverb G2 em um aplicativo Unity 2019, consulte nossos documentos de entrada do HP Reverb G2.
A partir do Unity 2021.3 LTS, o OpenXR é o único back-end do Unity com suporte para direcionar headsets HoloLens 2 e Windows Mixed Reality.
OpenXR no Unreal Engine
O Unreal Engine 4.23 foi o primeiro grande lançamento do mecanismo de jogo a fornecer suporte de visualização para o OpenXR 1.0! Agora, no Unreal Engine 4.26, o suporte para HoloLens 2, Windows Mixed Reality e outros headsets de VR para desktop está disponível por meio do suporte OpenXR integrado do Unreal Engine. O Unreal Engine 4.26 também oferece suporte ao plug-in de extensão OpenXR da Microsoft. Isso permite a interação manual e o suporte ao controlador HP Reverb G2, iluminando o conjunto completo de recursos dos headsets HoloLens 2 e Windows Mixed Reality. O Unreal Engine 4.26 está disponível hoje no Epic Games Launcher, com o MRTK-Unreal 0.12 suportando projetos OpenXR.
OpenXR para desenvolvimento nativo
Você pode desenvolver usando o OpenXR em um headset de VR imersivo do HoloLens 2 ou Windows Mixed Reality na área de trabalho. Se você não tiver acesso a um fone de ouvido, poderá usar o Emulador do HoloLens 2 ou o Simulador de Realidade Misturada do Windows.
Para começar a desenvolver aplicativos OpenXR para headsets HoloLens 2 ou Windows Mixed Reality VR, confira como começar a desenvolver o 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, confira este vídeo passo a passo de 60 minutos: