A partir de la versión alpha04 de las bibliotecas de Jetpack XR, hay actualizaciones importantes sobre cómo debes proporcionar recursos del entorno espacial para obtener un rendimiento y una calidad visual óptimos. Estos cambios son un impacto en la compatibilidad y requieren la actualización de 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 de la caja celeste visual 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 cálculos de iluminación, como reflejos en objetos, y no para la textura visual de la caja celeste en sí.
¿Por qué este enfoque?
Esta estructura de recursos actualizada proporciona 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 caja celeste HDR de alta resolución para la visualización y la información de iluminación, este enfoque reduce los tamaños de los archivos.
- Rendimiento mejorado: Separar la textura visual de la caja celeste (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 menor consumo de energía.
- Iluminación optimizada: Usar un recurso de caja celeste de menor resolución específicamente para el mapa de iluminación es beneficioso para el rendimiento sin afectar significativamente los resultados visuales de la iluminación en los objetos.
Para obtener más información sobre cómo agregar un entorno espacial en tu app, consulta nuestra guía para agregar entornos a tu app.
Optimiza tu glb

Tu glb representa la geometría alrededor del usuario, y tú incluyes la textura visual de tu caja celeste. Para tu geometría, debes intentar mantener los tamaños de archivo en 80 MB o menos.
Para ello, hay varias oportunidades para hacer que tu entorno sea más eficiente y mantener una alta calidad. Por ejemplo, la densidad de tu 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 para los entornos en Android XR es de 200 m desde el punto del usuario, y la textura de la caja celeste debe cumplir con esta restricción. Esto proporciona una experiencia óptima porque el paralaje se vuelve indiscernible a esa distancia.
Altura del usuario: La geografía puede variar, pero coloca al usuario en un montículo de alrededor de 1.5 metros de altura para evitar el recorte con elementos de IU más grandes en las apps.
Recuento de polígonos: Ten en cuenta el recuento de polígonos en tus archivos glb, ya que un recuento de polígonos alto 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. Para ello, asegúrate de que tu glb use mapas de mip y texturas ktx2.
Qué necesitas para optimizar tu IBL
Descarga la utilidad de línea de comandos cmgen:
- Puedes encontrar la versión más reciente en el repositorio de Filament.
- Busca el archivo .tgz que contiene la versión precompilada de cmgen para tu plataforma y extráelo.
- La herramienta precompilada se encuentra en el directorio /bin del archivo .tgz extraído.
Recursos que se deben preparar para generar el archivo ZIP para IBL:
- Un EXR de baja resolución que coincida con la textura de la caja celeste
- La entrada de textura de la caja celeste 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 IBL de alta calidad. El uso de otros formatos, como PNG, genera una iluminación menos precisa.
- La imagen fuente (EXR) debe tener una proporción de 2:1 y dimensiones que sean una potencia de 2. Usa un EXR de 1024 x 512 píxeles. Nota: Puede parecer que 1024 x 512 es una resolución demasiado baja, pero esto es beneficioso para el rendimiento. Para IBL, los resultados visuales para el usuario son muy similares a los recursos de resolución de IBL mucho más altos.
- Un 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 el IBL. Los usuarios no verán esto, por lo que enfocamos el recurso en la optimización del rendimiento.

A continuación, se muestra un ejemplo del uso de cmgen para crear el archivo ZIP para IBL.
En el ejemplo, se usan archivos de entrada llamados my_360_skybox_1024_x_512.exr y black_skybox.png para crear 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 -q my_ibl.zip black_skybox/*
# Return to the directory you started in.
cd ..