{ } { }

Jetpack SceneCore

Crie e manipule a cena do Android XR com conteúdo 3D.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
12 de dezembro de 2024 - - - 1.0.0-alpha01

Declarar dependências

Para adicionar uma dependência ao XR SceneCore, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.

Adicione as dependências dos artefatos necessários ao arquivo build.gradle do seu app ou módulo:

Groovy

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha01"
    // Required for Java
    implementation "com.google.guava:listenableFuture:1.0"
    // Required for Kotlin
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0"

    // Use to write unit tests
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha01")
    // Required for Java
    implementation("com.google.guava:listenableFuture:1.0")
    // Required for Kotlin
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0")

    // Use to write unit tests
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha01")
}

Para mais informações sobre dependências, consulte Adicionar dependências de build.

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.0

Versão 1.0.0-alpha01

12 de dezembro de 2024

Lançamento de androidx.xr.scenecore:scenecore-* 1.0.0-alpha01.

Recursos da versão inicial Versão inicial para desenvolvedores do Jetpack SceneCore, uma biblioteca de gráfico de cena 3D para criar e manipular cenas e ambientes imersivos. Com essa biblioteca, você pode posicionar e organizar modelos 3D e painéis de conteúdo em relação a outros e aos seus ambientes virtuais ou reais.

  • SpatialEnvironment: crie experiências totalmente imersivas com uma imagem de skybox e/ou uma geometria de modelo 3D como plano de fundo para a cena de XR do seu ambiente. Ou ative o passthrough para que a cena virtual possa ser integrada ao ambiente real do usuário.
  • PanelEntity: adicione conteúdo 2D às suas cenas 3D incorporando layouts e atividades padrão do Android a painéis espaciais que podem flutuar ou ser ancorados a superfícies do mundo real.
  • GltfModelEntity: posicione, anime e interaja com modelos 3D na sua cena. O SceneCore oferece suporte ao formato de arquivo glTF para facilitar a integração com modelos existentes.
  • SpatialAudio: adicione fontes de áudio ambiente e pontual à sua cena 3D para um som espacial totalmente imersivo.
  • StereoSurfaceEntity: o SceneCore oferece suporte ao roteamento de conteúdo renderizado em uma plataforma Android para o olho esquerdo/direito. Ele pode ser usado para renderizar conteúdo estereoscópico em um formato lado a lado ou de cima para baixo, como fotos estereoscópicas, vídeos 3D ou outras interfaces renderizadas dinamicamente. Os aplicativos precisam usar o MediaPlayer ou o ExoPlayer para decodificação de vídeo.
  • Sistema de componentes: o SceneCore oferece um sistema de componentes robusto e flexível para adicionar recursos ao seu conteúdo de XR, incluindo recursos para os usuários moverem, redimensionarem e interagirem com modelos e painéis.
  • Âncora: com o recurso de passagem ativado, é possível anexar painéis e modelos a superfícies reais, oferecendo aos usuários a integração perfeita de conteúdo virtual no ambiente real.
  • Pose do usuário: acesse a localização do usuário na cena virtual para orientar seu conteúdo em torno da posição dele.
  • SpatialCapabilities: crie apps totalmente adaptáveis que aproveitem os recursos espaciais quando disponíveis, como posicionamento 3D do conteúdo da interface. Além disso, o app pode monitorar mudanças nos recursos enquanto é executado para modificar a experiência com base na forma como o usuário está usando o dispositivo Android XR.

Problemas conhecidos

  • No momento, um minSDK de 30 é necessário para usar o Jetpack SceneCore. Como solução alternativa, adicione a seguinte entrada de manifesto <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> para poder criar e executar com um minSDK de 23.
  • A sessão pode se tornar inválida em várias situações que recriam automaticamente a atividade, incluindo o redimensionamento de um painel principal, a conexão de periféricos e a mudança entre o modo claro e escuro. Se você encontrar problemas de invalidação de sessão, as soluções alternativas incluem tornar o painel principal não redimensionável, usar uma entidade de painel dinâmico, desativar a recriação de atividades para mudanças específicas de configuração ou desativar mudanças de tema de modo claro/escuro.
  • Componentes móveis e redimensionáveis não são compatíveis com a GltfEntity.
  • Entity.getSize() não tem suporte para GltfEntity.
  • Os apps do Jetpack XR precisavam solicitar a permissão android.permission.SCENE_UNDERSTANDING no AndroidManifest.
  • A criação de uma sessão só é possível em um dispositivo Android XR. No momento, se você criar uma sessão e tentar usá-la em um dispositivo que não seja Android XR, vai receber uma RuntimeException.
  • Definir o skybox como nulo usando "SpatialEnvironment.setSpatialEnvironmentPreference()" não resulta em um skybox preto sólido, como documentado. Isso pode resultar no céu padrão do sistema ou em nenhuma mudança no céu atual.
  • Os clientes do SceneCore precisam adicionar implementation(“com.google.guava:listenablefuture-1.0”) à configuração do Gradle para as dependências do app. Em uma versão futura, o Scenecore vai incluir essa biblioteca como uma dependência de api para que os clientes não precisem declarar isso explicitamente.
  • O SceneCore inclui com.google.guava:guava-31.1-android e com.google.protobuf:protobuf-javalite como dependências transitivas. Se isso resultar em erros de classe duplicados no build, essas duas dependências poderão ser excluídas com segurança.
  • Se o app usar o SceneCore e ativar o ProGuard, ele vai falhar ao criar uma sessão. Como solução alternativa, desative o ProGuard. Consulte este guia para mais informações sobre como ativar o ProGuard.