El SDK de Android XR ahora está disponible en la Versión preliminar para desarrolladores. Deseamos obtener tus comentarios. Visita nuestra página de asistencia para comunicarte con nosotros.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
A partir de la versión alpha04 de las bibliotecas de Jetpack XR, hay actualizaciones importantes sobre cómo debes proporcionar recursos de entorno espacial para obtener un rendimiento y una calidad visual óptimos. Estos cambios tienen un impacto en la compatibilidad y requieren que se actualicen las apps existentes que establecen entornos espaciales.
Para proporcionar entornos espaciales, necesitas dos componentes principales:
Un archivo .glb o .gltf para la geometría del entorno (por ejemplo, el plano de tierra, los objetos cercanos) y la textura principal del cielo virtual que ven los usuarios.
Un archivo ZIP independiente que contiene información de iluminación basada en imágenes (IBL) generada a partir de una imagen EXR de alto rango dinámico con la herramienta cmgen. El archivo ZIP se usa para los cálculos de iluminación, como los reflejos en los objetos, y no para la textura visual del cielo.
¿Por qué este enfoque?
Esta estructura de recursos actualizada ofrece las siguientes ventajas:
Tamaños de archivo más pequeños: En comparación con los métodos anteriores, como usar un solo archivo de cielo HDR de alta resolución para la visualización visual y la información de iluminación, este enfoque reduce los tamaños de archivo.
Rendimiento mejorado: Separar la textura del cielo virtual (integrada en el glb) de los datos de IBL (en el archivo ZIP) te permite optimizar cada componente de forma independiente. Esto genera un ancho de banda de lectura de memoria de textura más bajo y un consumo de energía más bajo.
Iluminación optimizada: Usar un recurso de cielo con una resolución más baja específicamente para el mapa de iluminación es beneficioso para el rendimiento sin afectar de manera significativa los resultados visuales de la iluminación en los objetos.
Para obtener más información sobre cómo agregar un entorno espacial a tu app, consulta nuestra guía sobre cómo agregar entornos a tu app.
Optimiza tu glb
Tu glb representa la geometría alrededor del usuario y debes incluir la textura visual de tu cielo. En el caso de la geometría, debes intentar mantener los tamaños de archivo en 80 MB o menos.
Para ello, existen varias oportunidades para que tu entorno sea más
eficiente y, al mismo tiempo, mantenga una alta calidad. Por ejemplo, la densidad de la malla debe ser la más densa cerca del usuario, y puedes disminuir la densidad de las mallas que están más lejos del usuario.
Distancia de visualización: La distancia de visualización de los entornos en Android XR es de 200 m desde el punto del usuario, y la textura del cielo debe cumplir con esta restricción. Esto proporciona una experiencia óptima, ya que la paralaje se vuelve
indiscernible a esa distancia.
Altura del usuario: La geografía puede variar, pero coloca al usuario en un montículo de aproximadamente 1.5 metros de altura para evitar que se recorte con elementos de la IU más grandes en las apps.
Cantidad de polígonos: Presta atención a la cantidad de polígonos en tus archivos glb, ya que una cantidad alta puede generar un consumo de energía innecesario. Cada parche de geometría no debe exceder los 10,000 vértices.
Compresión KTX: Optimiza el rendimiento de la GPU de tu archivo glb asegurándote de que use mipmaps y texturas ktx2.
Busca el archivo .tgz que contiene la versión precompilada de cmgen para tu plataforma y extráela.
La herramienta precompilada se encuentra en el directorio /bin del archivo .tgz extraído.
Recursos que debes preparar para generar el archivo .zip de la IBL:
Un archivo EXR de baja resolución que coincida con la textura de tu cielo.
La entrada de textura del cielo debe ser un archivo EXR. Aunque cmgen admite otros formatos, se recomiendan los EXR porque proporcionan la información de alto rango dinámico que es fundamental para proporcionar una IBL de alta calidad.
El uso de otros formatos, como PNG, produce una iluminación menos precisa.
La imagen de origen (EXR) debe tener una relación de 2:1 y dimensiones que sean una potencia de 2. Usa un archivo EXR de 1,024 × 512 píxeles. Nota: Puede parecer que 1,024 × 512 es una resolución demasiado baja, pero esto es beneficioso para el rendimiento. En el caso de la IBL, los resultados visuales para el usuario son muy similares a los recursos de resolución de IBL mucho más altos.
Un archivo PNG negro sólido
Este recurso también debe tener una proporción de 2:1. Usa un tamaño de 100 x 50 píxeles.
Esto sirve como una textura optimizada para acompañar la IBL. Los usuarios no lo verán, por lo que nos enfocamos en optimizar el recurso para mejorar el rendimiento.
A continuación, se muestra un ejemplo del uso de cmgen para crear el archivo .zip de IBL.
En este ejemplo, usamos archivos de entrada llamados my_360_skybox_1024_x_512.exr y
black_skybox.png, y creamos un archivo .zip llamado 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..
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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 .."]]