O SDK do Android XR agora está disponível na prévia para desenvolvedores. Queremos saber sua opinião Acesse nossa página de suporte para entrar em contato.
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A partir da versão Alfa04 das bibliotecas 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
do solo, objetos próximos) e a textura visual principal da skybox que os usuários veem.
Um arquivo ZIP separado contendo informações de iluminação baseada em imagem (IBL, na sigla em inglês)
geradas a partir de uma imagem EXR de alto alcance dinâmico usando a ferramenta cmgen. O arquivo ZIP
é usado para cálculos de iluminação, como reflexos em objetos, e não
para a textura visual da skybox.
Por que essa abordagem?
Essa estrutura atualizada de recursos oferece as seguintes 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.
Melhoria no desempenho:separar a textura da skybox visual (incorporada ao
glb) dos dados da 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 nos objetos.
Para saber mais sobre como adicionar um ambiente espacial ao seu app, consulte nosso guia sobre
como adicionar ambientes ao app.
Otimizar o glb
O glb representa a geometria ao redor do usuário, e você inclui a textura
visual do skybox. Para sua geometria, tente manter os tamanhos de arquivo
em 80 MB ou menos.
Para fazer isso, há várias oportunidades de tornar seu ambiente mais
eficiente e manter a alta qualidade. Por exemplo, a densidade da malha
deve ser maior perto do usuário, e você pode diminuir a densidade das
malhas que estão mais distantes.
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 proporciona uma experiência ideal porque a paralaxe se torna
imperceptível nessa distância.
Altura do usuário:a geografia pode variar, mas posicione o usuário em uma elevação de
cerca de 1,5 metro de altura para evitar o corte com elementos maiores da interface em
apps.
Polycount:preste atenção no polycount nos arquivos glb, porque um polycount
alto pode levar a um consumo de energia desnecessário. Cada trecho de geometria
não pode exceder 10.000 vértices.
Compactaçã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:
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 a IBL:
Um EXR de baixa resolução que corresponde à textura do 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
intervalo dinâmico alto que são essenciais para fornecer uma 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 1.024 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
a recursos de IBL com resolução 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.
Ela serve como uma textura otimizada para acompanhar o IBL. Os usuários não
vão olhar para isso, então focamos o recurso na otimização de performance.
O exemplo a seguir mostra como usar o cmgen para criar o arquivo .zip para IBL.
Neste exemplo, usamos arquivos de entrada chamados my_360_skybox_1024_x_512.exr e
black_skybox.png e criamos 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-qmy_ibl.zipblack_skybox/*
# Return to the directory you started in.cd..
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Optimize environment assets\n\nBeginning with the alpha04 release of the Jetpack XR libraries, there are\nimportant updates to how you should provide spatial environment assets for\noptimal performance and visual quality. These changes are a compatibility impact\nand require updating existing apps that set spatial environments.\n\nTo provide spatial environments, you need two main components:\n\n- A .glb or .gltf file for the environment's geometry (for example, the ground plane, nearby objects) and the primary visual skybox texture that users see.\n- A separate ZIP file containing Image Based Lighting (IBL) information generated from a high dynamic range EXR image using the cmgen tool. The ZIP file is used for lighting calculations, such as reflections on objects, and not for the visual skybox texture itself.\n\nWhy this approach?\n------------------\n\nThis updated asset structure provides these advantages:\n\n- **Smaller file sizes:** Compared to previous methods, such as using a single high-resolution HDR skybox file for both visual display and lighting information, this approach reduces file sizes.\n- **Improved performance:** Separating the visual skybox texture (built into the glb) from the IBL data (in the ZIP file) lets you optimize each component independently. This results in lower texture memory read bandwidth and lower power consumption.\n- **Optimized lighting:** Using a lower resolution skybox resource specifically for the lighting map is beneficial for performance without significantly impacting the visual results of the lighting on objects.\n\nTo learn more about adding a spatial Environment in your app, see our guide on\n[adding environments to your app](/develop/xr/jetpack-xr-sdk/add-environment).\n| **Note:** It's important to provide an IBL asset if your app sets a custom environment, especially if your app has any 3D objects. This is because, if your app provides a glb/glTF but no IBL ZIP file, the 3D objects in the user's environment appear with incorrect lighting (for example, too bright or dim, reflecting objects that the user can't otherwise see).\n\nOptimize your glb\n-----------------\n\nYour glb represents the geometry around the user, and you include the visual\ntexture of your skybox. For your geometry, you should try to maintain file sizes\nat or smaller than 80MB.\n\nTo do this, there are a number of opportunities to make your environment more\nefficient while maintaining high quality. For example, the density of your mesh\nshould be the most dense near the user, and you can decrease the density for\nmeshes that are farther from the user.\n\n- **View distance:** The view distance for environments in Android XR is 200m from the point of the user, and your skybox texture should adhere to this constraint. This provides an optimal experience because parallax becomes indiscernible at that distance.\n- **User height:** Geography can vary, but position the user on a mound at\n around 1.5 meters of height to avoid clipping with larger UI elements in\n apps.\n\n- **Polycount:** Be sensitive to the polycount in your glb files, as a high\n polycount can lead to unnecessary power consumption. Each patch of geometry\n shouldn't exceed 10,000 vertices.\n\n- **KTX compression:** Optimize the GPU performance of your glb file by\n ensuring that your glb uses mipmaps and ktx2 textures.\n\nWhat you'll need to optimize your IBL\n-------------------------------------\n\nDownload the cmgen command line utility:\n\n- You can find the latest release in [the Filament repository](https://github.com/google/filament/releases/).\n- Find the .tgz containing the prebuilt version of cmgen for your platform and extract it.\n- The prebuilt tool is under the /bin directory of the extracted .tgz file.\n\nAssets to prepare to generate the .zip file for IBL:\n\n- A low-resolution EXR that matches your skybox texture\n - Your skybox texture input should be an EXR file. Although cmgen supports other formats, EXRs are recommended because they provide the high dynamic range information that's critical to provide high quality IBL. Using other formats like PNG results in less precise lighting.\n - The source image (EXR) needs to have a 2:1 ratio and dimensions that are a power of 2. Use an EXR that's 1024 x 512 pixels. Note: It may seem that 1024 x 512 is too low of a resolution, but this is beneficial for performance. For IBL, the visual results for the user are very similar to much higher IBL resolution assets.\n- A solid black png\n - This asset must also be a 2:1 ratio. Use a size of 100 x 50 pixels.\n - This serves as an optimized texture to accompany the IBL. Users won't look at this, so we focus the asset on optimizing for performance.\n\nThe following shows an example of using cmgen to create the .zip file for IBL.\nIn this example we use input files named my_360_skybox_1024_x_512.exr and\nblack_skybox.png, and we create a .zip file named my_ibl.zip \n\n # Produce black cubemaps for the texture of the IBL asset.\n ./cmgen --format=rgb32f --size=128 --extract=./skybox_ibl ./black_skybox.png\n\n # Produce lighting cubemaps and a Spherical Harmonics from EXR\n ./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\n\n # Copy all of the black cubemaps into the other folder.\n cp -rf ./skybox_ibl/black_skybox/* ./skybox_ibl/my_360_skybox_1024_x_512\n\n # Rename the directory to reflect that these are old assets.\n mv ./skybox_ibl/black_skybox ./skybox_ibl/black_skybox_old\n\n # Rename the directory to reflect that these are your cubemap assets.\n mv ./skybox_ibl/my_360_skybox_1024_x_512 ./skybox_ibl/black_skybox\n\n # Change into the child directory.\n cd ./skybox_ibl\n\n # Zip all of the cubemap and the Spherical Harmonics assets together.\n zip -q my_ibl.zip black_skybox/*\n\n # Return to the directory you started in.\n cd .."]]