OpenXR
OpenXR é um padrão de API livre de royalties aberto da Khronos, fornecendo motores com acesso nativo a uma variedade de dispositivos em todo o espectro de realidade mista.
Você pode desenvolver usando OpenXR em um fone de ouvido imersivo VR 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 HoloLens 2 ou o simulador de realidade mista do Windows.
Porquê OpenXR?
Com o OpenXR, você pode criar mecanismos voltados para dispositivos holográficos, como HoloLens 2, e dispositivos imersivos de RV, como fones de ouvido Windows Mixed Reality para PCs desktop. OpenXR permite que você escreva código uma vez que é então portátil em uma ampla gama de plataformas de hardware.
A API OpenXR usa um carregador para conectar seu aplicativo diretamente ao suporte à plataforma nativa do fone de ouvido. Os utilizadores finais obtêm o máximo desempenho e a latência mínima, quer estejam a utilizar um Windows Mixed Reality ou qualquer outro auricular.
O que é OpenXR?
A API OpenXR fornece a principal previsão de pose, temporização de quadros e funcionalidade de entrada espacial de que você precisa para construir um mecanismo que possa atingir 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 Khronos OpenXR.
Para direcionar o conjunto completo de recursos do HoloLens 2, você também usa extensões OpenXR entre fornecedores e específicas do fornecedor. Eles permitem recursos como rastreamento de mãos articuladas, rastreamento ocular, mapeamento espacial e âncoras espaciais. Para mais informações, consulte a secção Roteiro sobre as extensões que serão apresentadas ainda este ano.
OpenXR não é em si um motor de realidade mista. Em vez disso, o OpenXR permite que mecanismos como Unity e Unreal escrevam código portátil uma vez que possam acessar os recursos nativos da plataforma do dispositivo holográfico ou imersivo do usuário, seja qual for o fornecedor que construiu essa plataforma.
Mapa
A especificação OpenXR define um mecanismo de extensão que permite que os implementadores de tempo de execução exponham outras funcionalidades além dos recursos principais 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 tempo de execução pode introduzir e enviar uma extensão de fornecedor a qualquer momento. - Extensões experimentais do fornecedor (por exemplo,
XR_MSFTX_...
): Extensões experimentais do fornecedor que estão sendo visualizadas para coletar feedback.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 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 suporta um conjunto de MSFT
extensões que EXT
traz o conjunto completo de recursos do HoloLens 2 para aplicativos OpenXR:
Área de funcionalidades | Disponibilidade da extensão |
---|---|
Sistemas + sessões | Especificações principais do OpenXR 1.0:XrInstance , XrSystemId , XrSession |
Espaços de referência (vista, local, palco) | Especificações principais do OpenXR 1.0:XrSpace |
Ver configurações (mono, estéreo) | Especificações principais do OpenXR 1.0:XrView... |
Temporização do quadro de cadeias de permuta + | Especificações principais do OpenXR 1.0:XrSwapchain... + xrWaitFrame |
Camadas de composição (projeção, quad) |
Especificações principais do OpenXR 1.0:XrCompositionLayer... + xrEndFrame |
Entrada e háptica | Especificações principais 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 com as mãos (postura de pega/mira, torneira aérea, preensão) HoloLens 2 apenas |
MSFT Extensão lançada:XR_MSFT_hand_interaction |
Articulação manual + malha manual HoloLens 2 apenas |
|
Olhar HoloLens 2 apenas |
EXT Extensão lançada:XR_EXT_eye_gaze_interaction |
Captura de realidade mista (terceira renderização da câmera PV) HoloLens 2 apenas |
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 em tempo de execução 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 em tempo de execução 104:XR_MSFT_controller_model |
Compreensão de cena (planos, malhas) HoloLens 2 apenas |
MSFT Extensão lançada em tempo de execução 106:XR_MSFT_scene_understanding XR_MSFT_scene_understanding_serialization |
Marcador de cena (QR Codes) HoloLens 2 apenas |
MSFT Extensão lançada em tempo de execução 113: XR_MSFT_scene_marker |
Modos de reprojeção da camada de composição (reprojeção autoplanar ou apenas de orientação) |
MSFT Extensão lançada em tempo de execução 106:XR_MSFT_composition_layer_reprojection |
Interoperabilidade com outros SDKs de realidade mista (por exemplo, QR) |
MSFT Extensão lançada:XR_MSFT_spatial_graph_bridge |
Interoperabilidade com UWP CoreWindow API (por exemplo, para teclado/rato) |
MSFT Extensão lançada em tempo de execução 103:XR_MSFT_holographic_window_attachment |
Interoperabilidade com APIs WinRT de realidade mista herdadas (por exemplo, SpatialAnchorTransferManager )) |
|
Outras extensões entre 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 tempo de execução do OpenXR estão trabalhando juntos para projetar extensões entre fornecedores EXT
ou 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 motor RenderDragon do Minecraft construiu o 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. OpenXR alimenta o suporte 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 o 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 seu próprio motor, continue lendo!
OpenXR em Unity
A configuração atual recomendada da Microsoft Unity para o desenvolvimento do HoloLens 2 e Windows Mixed Reality é o Unity 2020.3 LTS com o plug-in Mixed Reality OpenXR. Este plugin inclui suporte para as extensões OpenXR que iluminam todos os recursos dos fones de ouvido HoloLens 2 e Windows Mixed Reality, incluindo rastreamento de mãos/olhos, âncoras espaciais e controladores HP Reverb G2. MRTK-Unity suporta OpenXR a partir de 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 o plug-in XR.
Se você estiver desenvolvendo para HoloLens (1ª geração), precisará continuar usando o Unity 2019.4 LTS com o back-end da API WinRT herdada. Se você estiver visando 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 é o único backend Unity suportado para direcionar headsets HoloLens 2 e Windows Mixed Reality.
OpenXR no Unreal Engine
Unreal Engine 4.23 foi o primeiro grande lançamento do motor de jogo a enviar suporte de visualização para OpenXR 1.0! Agora na Unreal Engine 4.26, o suporte para HoloLens 2, Windows Mixed Reality e outros headsets VR de desktop está disponível através do suporte OpenXR integrado da Unreal Engine. Unreal Engine 4.26 também suporta o plugin 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 fones de ouvido HoloLens 2 e Windows Mixed Reality. Unreal Engine 4.26 está disponível hoje no Epic Games Launcher, com MRTK-Unreal 0.12 suportando projetos OpenXR.
OpenXR para desenvolvimento nativo
Você pode desenvolver usando OpenXR em um fone de ouvido imersivo VR 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 HoloLens 2 ou o simulador de realidade mista do Windows.
Para começar a desenvolver aplicações OpenXR para auriculares HoloLens 2 ou Windows Mixed Reality VR, veja como começar a desenvolver 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: