Criar com extensões do OpenXR compatíveis

Dispositivos XR relevantes
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos XR.
Headsets XR
Óculos XR com fio

O Android XR é compatível com o OpenXR pela especificação OpenXR 1.1 e uma longa lista de extensões de fornecedores terceirizados. O uso dessas extensões oferece uma experiência familiar ao desenvolver para XR. Alguns desses recursos exigem permissões de execução do Android Runtime. Se você quiser criar diretamente nas APIs OpenXR, os arquivos principais necessários estão no repositório jetpack-xr-natives.

Extensões de fornecedor do Android XR

Nome da extensão

Descrição

Versão da API Spatial

XR_ANDROID_anchor_sharing_export

As âncoras criadas por um aplicativo usando XR_ANDROID_trackables, XR_EXT_spatial_anchor e XR_ANDROID_spatial_anchor_space são vinculadas a uma sessão específica e, portanto, não são visíveis para outros aplicativos. Essa extensão permite que os aplicativos compartilhem âncoras com outros aplicativos em execução.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_body_tracking

Usa IK para determinar a posição do corpo com base na posição da cabeça e das mãos.

Permissões: BODY_TRACKING

v2

XR_ANDROID_composition_layer_passthrough_mesh

Para dispositivos que oferecem suporte a vários modos de combinação de ambiente.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_depth_texture

Essa extensão permite que o aplicativo solicite mapas de profundidade do ambiente real ao redor do headset e consulte as resoluções de profundidade compatíveis no momento da criação.

Permissões: SCENE_UNDERSTANDING_FINE

v1

XR_ANDROID_device_anchor_persistence

Essa extensão permite que o aplicativo persista.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_enumerate_system_extension_properties

Essa extensão permite que os aplicativos determinem quais extensões são compatíveis com a configuração atual do sistema.

v3

XR_ANDROID_eye_tracking

Essa extensão permite que os aplicativos obtenham a posição e a orientação dos olhos do usuário, bem como o status do acompanhamento ocular.

Permissões: EYE_TRACKING_FINE

v1

XR_ANDROID_face_tracking

Essa extensão permite que os aplicativos recebam pesos de formas de mesclagem e renderizem expressões faciais em experiências de XR.

Permissões: FACE_TRACKING

v1

XR_ANDROID_face_tracking_data_source

Essa extensão permite que os aplicativos recebam dados de captura de expressões faciais de várias fontes.

Permissões: FACE_TRACKING, RECORD_AUDIO

v3

XR_ANDROID_geospatial

Esta extensão oferece o rastreamento geoespacial para a API Geospatial do Google.

Permissões: ACCESS_FINE_LOCATION

v4

XR_ANDROID_geospatial_anchor

Essa extensão oferece âncoras geoespaciais e de superfície que são posicionadas no espaço em relação à Terra em uma determinada latitude, longitude e altitude.

Permissões: ACCESS_FINE_LOCATION

v4

XR_ANDROID_global_passthrough_dimming

Essa extensão permite que os aplicativos definam e consultem o nível de escurecimento global do passthrough e recebam eventos quando o nível de escurecimento mudar.

v4

XR_ANDROID_google_cloud_auth

Essa extensão permite o uso de extensões baseadas no Google Cloud, permitindo que o aplicativo forneça credenciais de autenticação para as APIs do Google Cloud.

v4

XR_ANDROID_hand_mesh

Essa extensão permite entradas de captura de movimentos das mãos representadas como uma malha de mão dinâmica.

Permissões: HAND_TRACKING

v1

XR_ANDROID_light_estimation

Essa extensão permite que o aplicativo solicite dados que representam a iluminação do ambiente real ao redor do headset.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_light_estimation_cubemap

Essa extensão se baseia na extensão básica XR_ANDROID_light_estimation.

Permissões: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_mouse_interaction

Essa extensão fornece um XrPath para receber entrada do mouse e define uma pose de ação usada com frequência para perfis de mouse do usuário, incluindo dispositivos de mouse e trackpad.

v1

XR_ANDROID_passthrough_camera_state

A câmera de passagem pode levar algum tempo para iniciar e talvez não esteja disponível imediatamente.

v1

XR_ANDROID_performance_metrics

Essa extensão fornece APIs para enumerar e consultar vários contadores de métricas de performance do dispositivo XR atual.

v1

XR_ANDROID_raycast

Essa extensão permite que o aplicativo realize raycasts em elementos rastreáveis no ambiente.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_recommended_resolution

Essa extensão permite que o ambiente de execução notifique o aplicativo quando a resolução recomendada mudar.

v1

XR_ANDROID_recommended_settings

O ambiente padrão do usuário pode estar em vários estados usando uma combinação de um modo de mesclagem e uma modalidade de entrada.

v1

XR_ANDROID_scene_meshing

Essa extensão tem como objetivo fornecer malhas que representam aproximadamente os objetos físicos no ambiente do usuário.

Permissões: SCENE_UNDERSTANDING_FINE

v1

XR_ANDROID_spatial_anchor_space

A função xrCreateSpatialAnchorEXT definida na extensão XR_EXT_spatial_anchor permite que os aplicativos criem âncoras espaciais com um identificador XrSpatialEntityEXT para representá-las.

Por outro lado, essa extensão cria uma âncora espacial representada por um identificador XrSpace.

Permissões: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_annotation_tracking

Essa extensão oferece o recurso de rastreamento de anotações para a extensão XR_EXT_spatial_entity, que rastreia várias anotações na cena. Ele permite que os aplicativos coloquem sobreposições em objetos físicos ou virtuais definidos por referências de ambiente de execução.

Permissões: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_component_subsumed_by

Essa extensão se baseia em XR_EXT_spatial_entity e fornece um novo componente para que XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT exponha o XrSpatialEntityIdEXT que inclui a entidade atual.

Permissões: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_discovery_bounds

Essa extensão adiciona definições para limites espaciais que permitem que os aplicativos filtrem entidades espaciais descobertas.

Permissões: SCENE_UNDERSTANDING_COARSE

v4

XR_ANDROID_spatial_discovery_raycast

Essa extensão se baseia em XR_EXT_spatial_entity e oferece a funcionalidade de raycast para recursos espaciais existentes.

Permissões: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_entity_bound_anchor

Essa extensão permite que os aplicativos criem e anexem âncoras a entidades espaciais.

Permissões: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_object_tracking

Essa extensão se baseia em XR_EXT_spatial_entity e define uma capacidade espacial para rastrear um conjunto de objetos físicos predefinidos sem exigir um conjunto de dados de entrada do aplicativo.

Permissões: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables

Essa extensão permite que o aplicativo acesse elementos rastreáveis do ambiente físico.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_image

Essa extensão permite o rastreamento de imagens planas, conforme especificado por conjuntos de imagens de referência de entrada.

Permissões: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables_marker

Essa extensão permite o rastreamento de marcadores físicos.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_object

Essa extensão permite o rastreamento de objetos físicos.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_qr_code

Essa extensão permite o rastreamento de QR codes físicos e a decodificação de dados de QR codes.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_unbounded_reference_space

Essa extensão permite que os aplicativos criem um espaço de referência XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID.

v1

XR_ANDROID_viewport_feathering

Essa extensão expõe a área de transição aplicada pelo ambiente de execução para que um aplicativo possa organizar os elementos da interface dentro da área segura.

v4

Extensões de terceiros

Nome da extensão

Descrição

Versão da API Spatial

XR_MND_headless

Alguns aplicativos podem precisar acessar dispositivos de interação de XR sem apresentar nenhum conteúdo de imagem na tela ou nas telas.

v1

XR_KHR_binding_modification

Essa extensão adiciona uma estrutura opcional que pode ser incluída na cadeia XrInteractionProfileSuggestedBinding::next transmitida para xrSuggestInteractionProfileBindings para especificar informações adicionais para modificar o comportamento de vinculação padrão.

v1

XR_EXT_debug_utils

Devido à natureza da interface do OpenXR, há poucas informações de erro disponíveis para o desenvolvedor e o aplicativo.

v1

XR_EXT_hand_tracking

Essa extensão permite que os aplicativos localizem as articulações individuais das entradas de captura de movimentos das mãos.

Permissões: HAND_TRACKING

v1

XR_EXT_performance_settings

Essa extensão define uma API para que o aplicativo forneça dicas de desempenho ao ambiente de execução e para que o ambiente de execução envie notificações relacionadas ao desempenho de volta ao aplicativo. Isso permite que os dois lados cheguem a um acordo adequado entre o desempenho necessário da CPU e da GPU, a sustentabilidade térmica e uma experiência do usuário consistente e boa durante toda a sessão.

v1

XR_FB_display_refresh_rate

Em plataformas que oferecem suporte ao ajuste dinâmico da taxa de atualização da tela.

v1

XR_FB_swapchain_update_state

Essa extensão permite que o aplicativo modifique e consulte um estado mutável específico associado a uma swapchain.

v1

XR_FB_foveation

A foveação no contexto da XR é uma técnica de renderização que permite que a área de uma imagem próxima ao ponto focal ou à fóvea do olho seja exibida em uma resolução mais alta do que as áreas na periferia.

v1

XR_FB_foveation_configuration

Nos HMDs do Facebook, os desenvolvedores podem criar perfis de foveação gerados pelo ambiente de execução para as propriedades ópticas e a performance.

v1

XR_FB_foveation_vulkan

A API gráfica Vulkan exige que uma imagem seja aplicada à swapchain para aplicar um padrão de foveação.

v1

XR_FB_space_warp

Essa extensão oferece suporte para ativar a tecnologia de distorção espacial no aplicativo.

v1

XR_KHR_opengl_es_enable

Essa extensão precisa ser fornecida por ambientes de execução que oferecem suporte a aplicativos que usam APIs OpenGL ES para renderização.

v1

XR_KHR_android_create_instance

Quando o aplicativo cria um objeto XrInstance em sistemas Android.

v1

XR_KHR_android_surface_swapchain

Uma atividade comum em XR é visualizar um stream de imagens.

v1

XR_KHR_android_thread_settings

Para que a XR seja confortável, é importante que os aplicativos forneçam frames de forma rápida e consistente.

v1

XR_KHR_composition_layer_color_scale_bias

A escala de cores e o viés são aplicados a uma cor de camada durante a composição, após a conversão para a representação alfa pré-multiplicada.

v1

XR_KHR_composition_layer_cube

Essa extensão adiciona outro tipo de camada que permite a amostragem direta de cubemaps.

v1

XR_KHR_composition_layer_cylinder

Essa extensão adiciona um tipo de camada extra em que o ambiente de execução de XR precisa mapear uma textura de uma swapchain para o interior de uma seção de cilindro. É como se o usuário estivesse olhando para uma TV de tela curva.

v1

XR_KHR_composition_layer_depth

Essa extensão define um tipo de camada extra que permite que os aplicativos enviem imagens de profundidade com imagens coloridas em camadas de projeção.

v1

XR_KHR_composition_layer_equirect

Essa extensão adiciona um tipo de camada extra em que o ambiente de execução de XR precisa mapear uma imagem codificada equirretangular de uma swapchain para o interior de uma esfera.

v1

XR_KHR_composition_layer_equirect2

Essa extensão adiciona um tipo de camada extra em que o ambiente de execução de XR precisa mapear uma imagem codificada equirretangular de uma swapchain para o interior de uma esfera.

Essa extensão usa uma parametrização diferente, mais de acordo com a formulação de XR_KHR_composition_layer_cylinder, mas é funcionalmente equivalente a XR_KHR_composition_layer_equirect.

v1

XR_KHR_convert_timespec_time

Essa extensão oferece duas funções para converter entre o tempo monotônico timespec e XrTime.

v1

XR_KHR_vulkan_enable

Essa extensão permite o uso da API gráfica Vulkan em um ambiente de execução do OpenXR.

v1

XR_KHR_vulkan_enable2

Essa extensão permite o uso da API gráfica Vulkan em um ambiente de execução do OpenXR.

v1

XR_KHR_loader_init

Em algumas plataformas, antes que o carregamento possa ocorrer, o carregador precisa ser inicializado com parâmetros específicos da plataforma.

v1

XR_KHR_loader_init_android

No Android, algumas implementações de carregador precisam que o aplicativo forneça mais informações na inicialização.

v1

XR_KHR_swapchain_usage_input_attachment_bit

Essa extensão permite que um aplicativo especifique que as imagens da swapchain sejam criadas de modo que possam ser usadas como anexos de entrada. No momento, esse bit afeta apenas as swapchains do Vulkan.

v1

XR_EXT_dpad_binding

Essa extensão permite que o aplicativo vincule uma ou mais ações digitais a um trackpad ou direcional analógico como se fosse um direcional digital, definindo caminhos de componentes adicionais para sugerir vinculações.

v1

XR_EXT_uuid

Essa extensão define um identificador exclusivo universalmente que segue a RFC 4122.

v1

XR_FB_composition_layer_depth_test

Essa extensão permite a composição de camadas com teste de profundidade.

v1

XR_EXT_eye_gaze_interaction

Essa extensão fornece um XrPath para receber entrada de acompanhamento ocular de um rastreador ocular e permitir interações com o olhar.

Permissões: EYE_TRACKING_FINE

v1

XR_EXT_hand_interaction

Essa extensão define quatro poses de ação usadas com frequência para todos os perfis de interação manual do usuário, incluindo dispositivos de captura de movimentos das mãos e de controle de movimento.

v1

XR_KHR_visibility_mask

Essa extensão permite fornecer uma máscara de desenho por visualização para aplicativos.

v1

XR_META_foveation_eye_tracked

A renderização foveada com acompanhamento ocular renderiza uma densidade de pixels menor na periferia do olhar do usuário.

Permissões: EYE_TRACKING_FINE

v1

XR_FB_hand_tracking_aim

A extensão XR_EXT_hand_tracking fornece uma lista de poses de articulações das mãos que representam a configuração atual das mãos rastreadas. Essa extensão adiciona uma camada de reconhecimento de gestos que é usada pelo sistema.

Permissões: HAND_TRACKING

v1

XR_EXT_palm_pose

Essa extensão define um novo "identificador de pose padrão" para perfis de interação, chamado "palm_ext".

v1

XR_VARJO_foveated_rendering

Os headsets Varjo oferecem telas com densidade de pixels extremamente alta na área central.

Permissões: EYE_TRACKING_FINE

v1

XR_VARJO_quad_views

Essa extensão adiciona um novo tipo de configuração de visualização, XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO, a XrViewConfigurationType, que pode ser retornado por xrEnumerateViewConfigurations para indicar que o ambiente de execução oferece suporte a quatro janelas de visualização.

v1

XR_META_vulkan_swapchain_create_info

Com essa extensão, um aplicativo baseado em Vulkan pode transmitir VkImageCreateFlags ou VkImageUsageFlags adicionais encadeando uma estrutura XrVulkanSwapchainCreateInfoMETA ao XrSwapchainCreateInfo ao chamar xrCreateSwapchain.

v1

XR_FB_hand_tracking_mesh

A extensão XR_EXT_hand_tracking fornece uma lista de poses de articulações da mão, mas não um mecanismo para renderizar uma malha de mão com pele.

Permissões: HAND_TRACKING

v1

XR_FB_composition_layer_image_layout

Essa extensão não define um novo tipo de camada de composição.

v1

XR_KHR_maintenance1

O XR_KHR_maintenance1 adiciona uma coleção de recursos secundários que foram intencionalmente deixados de fora ou ignorados na versão original do OpenXR 1.0.

v1

XR_FB_composition_layer_settings

Essa extensão permite que os aplicativos solicitem o uso de opções de processamento, como nitidez ou superamostragem, em uma camada de composição.

v1

XR_KHR_locate_spaces

Essa extensão apresenta a função xrLocateSpacesKHR.

v1

XR_EXT_local_floor

A especificação principal do OpenXR contém dois tipos de espaço de referência XrSpace bloqueados no mundo em XrReferenceSpaceType.

v1

XR_EXT_spatial_marker_tracking

Essa extensão se baseia na XR_EXT_spatial_entity e permite que os aplicativos detectem e rastreiem marcadores no ambiente.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_persistence

Essa extensão permite que os aplicativos descubram e correlacionem entidades espaciais em sessões de aplicativos.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_anchor

Essa extensão se baseia em XR_EXT_spatial_entity e permite que os aplicativos criem âncoras espaciais.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_plane_tracking

Essa extensão se baseia em XR_EXT_spatial_entity e define o recurso espacial de rastreamento de plano para o framework de entidade espacial.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_entity

Essa extensão apresenta os conceitos e as bases para a compreensão de cenas e o raciocínio espacial no OpenXR.

v1

XR_EXT_future

Nos sistemas de XR, há certas operações que são de longa duração e não são concluídas em um loop de frame normal.

v1

XR_FB_color_space

Os dispositivos XR podem usar um espaço de cores diferente de muitos monitores usados no desenvolvimento.

v1

XR_EXT_composition_layer_inverted_alpha

Essa extensão fornece uma flag que, quando aplicada a uma camada de composição, inverte a interpretação do valor Alfa nas imagens da swapchain da camada.

v1

XR_EXT_spatial_entity_archetypes

A função xrQuerySpatialComponentDataEXT oferece aos aplicativos uma maneira de consultar entidades e dados de componentes usando um filtro dos tipos de componentes que precisam estar presentes em uma entidade. Essa extensão introduz o conceito de arquétipos (combinações exclusivas de componentes) para que os aplicativos possam ler todos os dados de componentes de todas as entidades sem duplicação.

v4

XR_EXT_frame_synthesis

Essa extensão oferece suporte para ativar a síntese de frames em aplicativos com base em outros dados fornecidos pelo aplicativo.

v3

XR_QCOM_trackables_image_operations

Oferece operações de rastreamento de imagens da Qualcomm para rastreáveis.

v3

XR_QCOM_trackables_qr_code_operations

Oferece operações de rastreamento de QR code da Qualcomm para itens rastreáveis.

v3

XR_EXT_user_presence

Essa extensão introduz um novo evento para notificar quando o sistema detecta a mudança de presença do usuário.

v3

XR_KHR_extended_struct_name_lengths

Essa extensão aumenta os tamanhos máximos de nomes de struct e oferece uma nova função para acessar esses novos nomes estendidos.

v3

XR_EXT_hand_tracking_data_source

Essa extensão aumenta a extensão XR_EXT_hand_tracking.

v4

XR_EXT_spatial_container_self_rendering

Esta extensão descreve a "autorrenderização" no contexto de contêineres espaciais.

v4

XR_EXT_spatial_container

Essa extensão define uma nova classe de entidades que podem ser exibidas.

v4

XR_EXT_spatial_persistence_operations

Essa extensão permite que os aplicativos persistam e deixem de persistir entidades espaciais em várias sessões.

Permissões: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_mesh_tracking

Essa extensão se baseia em XR_EXT_spatial_entity e define recursos espaciais para rastrear a malha de triângulos do ambiente.

Permissões: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_spatial_object_tracking

Essa extensão se baseia em XR_EXT_spatial_entity e define um recurso espacial para rastrear um conjunto de objetos predefinidos sem exigir um conjunto de dados de entrada do aplicativo.

Permissões: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_spatial_image_tracking

Essa extensão oferece o recurso de rastreamento de imagens para a extensão XR_EXT_spatial_entity.

Permissões: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_interaction_profile_battery_state_display

XR_EXT_interaction_profile_battery_state_display fornece um mecanismo para que os aplicativos consultem o ambiente de execução para receber informações sobre o estado da bateria dos dispositivos usados com perfis de interação.

v3

XR_FB_composition_layer_secure_content

Essa extensão não define um novo tipo de camada de composição.

v4


OpenXR™ e o logotipo do OpenXR são marcas registradas do The Khronos Group Inc. e são registradas como marcas na China, na União Europeia, no Japão e no Reino Unido.