Otimizar recursos de ambiente

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

A partir da versão alpha04 das bibliotecas do Jetpack XR, há atualizações importantes sobre como fornecer recursos de ambiente espacial para desempenho e qualidade visual ideais. Essas mudanças afetam a compatibilidade e exigem a atualização de apps que definem ambientes espaciais.

Para fornecer ambientes espaciais, você precisa de dois componentes principais:

  • Um arquivo .glb ou .gltf para a geometria do ambiente (por exemplo, o plano de chão, objetos próximos) e a textura principal da skybox visual que os usuários veem.
  • Um arquivo ZIP separado que contém informações de iluminação baseada em imagem (IBL, na sigla em inglês) geradas a partir de uma imagem EXR de alta faixa dinâmica usando a ferramenta cmgen. O arquivo ZIP é usado para cálculos de iluminação, como reflexos em objetos, e não para a textura da skybox visual.

Por que essa abordagem?

Essa estrutura de recursos atualizada oferece estas vantagens:

  • Tamanhos de arquivo menores:em comparação com métodos anteriores, como o uso de um único arquivo de skybox HDR de alta resolução para exibição visual e informações de iluminação, essa abordagem reduz os tamanhos de arquivo.
  • Desempenho aprimorado:separar a textura da skybox visual (incorporada ao glb) dos dados de IBL (no arquivo ZIP) permite otimizar cada componente de forma independente. Isso resulta em menor largura de banda de leitura de memória de textura e menor consumo de energia.
  • Iluminação otimizada:usar um recurso de skybox de resolução mais baixa especificamente para o mapa de iluminação é benéfico para o desempenho sem afetar significativamente os resultados visuais da iluminação em objetos.

Para saber mais sobre como adicionar um ambiente espacial ao seu app, consulte nosso guia sobre como adicionar ambientes ao app.

Otimizar seu glb

Seu glb representa a geometria ao redor do usuário, e você inclui a textura visual da skybox. Para a geometria, tente manter tamanhos de arquivo de 80 MB ou menos.

Para fazer isso, há várias oportunidades de tornar seu ambiente mais eficiente, mantendo a alta qualidade. Por exemplo, a densidade da malha precisa ser a mais densa perto do usuário, e você pode diminuir a densidade de malhas que estão mais distantes do usuário.

  • Distância de visualização:a distância de visualização para ambientes no Android XR é de 200 m do ponto do usuário, e a textura da skybox precisa obedecer a essa restrição. Isso oferece uma experiência ideal porque o paralaxe se torna indiscernível a essa distância.
  • Altura do usuário:a geografia pode variar, mas posicione o usuário em um monte com cerca de 1,5 metro de altura para evitar o recorte com elementos de interface maiores em apps.

  • Contagem de polígonos:seja sensível à contagem de polígonos nos arquivos glb, já que uma contagem alta pode levar ao consumo desnecessário de energia. Cada patch de geometria não pode exceder 10.000 vértices.

  • Compressão KTX:otimize o desempenho da GPU do arquivo glb garantindo que ele use mipmaps e texturas ktx2.

O que você precisa para otimizar sua IBL

Faça o download do utilitário de linha de comando cmgen:

  • Você pode encontrar a versão mais recente no repositório do Filament.
  • Encontre o .tgz que contém a versão pré-criada do cmgen para sua plataforma e extraia-o.
  • A ferramenta pré-criada está no diretório /bin do arquivo .tgz extraído.

Recursos a serem preparados para gerar o arquivo ZIP para IBL:

  • Um EXR de baixa resolução que corresponda à textura da skybox
    • A entrada de textura da skybox precisa ser um arquivo EXR. Embora o cmgen ofereça suporte a outros formatos, os EXRs são recomendados porque fornecem as informações de alta faixa dinâmica que são essenciais para fornecer IBL de alta qualidade. O uso de outros formatos, como PNG, resulta em iluminação menos precisa.
    • A imagem de origem (EXR) precisa ter uma proporção de 2:1 e dimensões que sejam uma potência de 2. Use um EXR de 1024 x 512 pixels. Observação: pode parecer que 1024 x 512 é uma resolução muito baixa, mas isso é benéfico para o desempenho. Para IBL, os resultados visuais para o usuário são muito semelhantes aos recursos de resolução de IBL muito mais alta.
  • Um png preto sólido
    • Esse recurso também precisa ter uma proporção de 2:1. Use um tamanho de 100 x 50 pixels.
    • Ele serve como uma textura otimizada para acompanhar a IBL. Os usuários não vão olhar para isso, então focamos o recurso na otimização do desempenho.

O exemplo a seguir mostra como usar o cmgen para criar o arquivo ZIP para IBL. O exemplo usa arquivos de entrada chamados my_360_skybox_1024_x_512.exr e black_skybox.png para criar um arquivo ZIP chamado my_ibl.zip.

# Produce black cubemaps for the texture of the IBL asset.
./cmgen --format=rgb32f --size=128 --extract=./skybox_ibl ./black_skybox.png

# Produce lighting cubemaps and a Spherical Harmonics from EXR
./cmgen --format=rgb32f --size=128 --deploy=./skybox_ibl --ibl-ld=. --ibl-samples=1024 --extract-blur=0.0 --sh-irradiance --sh-shader --sh-output=./skybox_ibl/sh.txt ./my_360_skybox_1024_x_512.exr

# Copy all of the black cubemaps into the other folder.
cp -rf ./skybox_ibl/black_skybox/* ./skybox_ibl/my_360_skybox_1024_x_512

# Rename the directory to reflect that these are old assets.
mv ./skybox_ibl/black_skybox ./skybox_ibl/black_skybox_old

# Rename the directory to reflect that these are your cubemap assets.
mv ./skybox_ibl/my_360_skybox_1024_x_512 ./skybox_ibl/black_skybox

# Change into the child directory.
cd ./skybox_ibl

# Zip all of the cubemap and the Spherical Harmonics assets together.
zip -q my_ibl.zip black_skybox/*

# Return to the directory you started in.
cd ..