Optimiza los recursos del entorno

Dispositivos XR aplicables
Esta guía te ayuda a crear experiencias para estos tipos de dispositivos de XR.
Auriculares XR
Lentes de RE con cable

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 tienen un impacto en la compatibilidad y requieren que se actualicen las apps existentes que configuran 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 visual principal del skybox que ven los usuarios.
  • Es 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 en sí.

¿Por qué se usa este enfoque?

Esta estructura de recursos actualizada proporciona las siguientes ventajas:

  • Tamaños de archivo más pequeños: En comparación con métodos anteriores, como el uso de un solo archivo HDR de alta resolución para la visualización y la información de iluminación, este enfoque reduce los tamaños de archivo.
  • Rendimiento mejorado: Separar la textura visual de la caja celeste (integrada en el archivo .glb) de los datos de IBL (en el archivo ZIP) te permite optimizar cada componente de forma independiente. Esto genera un menor ancho de banda de lectura de la memoria de textura y un menor consumo de energía.
  • Iluminación optimizada: Usar un recurso de skybox 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 a tu app, consulta nuestra guía para agregar entornos a tu app.

Optimiza tu archivo .glb

Tu archivo .glb representa la geometría alrededor del usuario, y tú incluyes la textura visual de tu cielo esférico. En el caso de la geometría, debes intentar mantener tamaños de archivo de 80 MB o menos.

Para ello, existen varias oportunidades para hacer que tu entorno sea más eficiente y, al mismo tiempo, mantener una alta calidad. Por ejemplo, la densidad de tu malla debería ser mayor cerca del usuario, y puedes disminuirla para las mallas que estén más lejos.

  • 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 tu cielo debe cumplir con esta restricción. Esto proporciona una experiencia óptima, ya que el efecto de paralaje se vuelve imperceptible a esa distancia.
  • Altura del usuario: La geografía puede variar, pero coloca al usuario en una elevación de alrededor de 1.5 m de altura para evitar el recorte con elementos de la 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 alto puede generar un consumo de energía innecesario. Cada parche de geometría no debe exceder los 10,000 vértices.

  • Compresión de KTX: Optimiza el rendimiento de la GPU de tu archivo .glb. Para ello, asegúrate de que use mipmaps y texturas ktx2.

Qué necesitarás 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 compilada previamente de cmgen para tu plataforma y extráelo.
  • La herramienta prediseñada se encuentra en el directorio /bin del archivo .tgz extraído.

Recursos que se deben preparar para generar el archivo .zip para IBL:

  • Un archivo EXR de baja resolución que coincida con la textura de tu skybox
    • La entrada de la textura de la caja celeste debe ser un archivo EXR. Si bien cmgen admite otros formatos, se recomiendan los EXR porque proporcionan la información de alto rango dinámico que es fundamental para ofrecer IBL de alta calidad. Usar otros formatos, como PNG, genera 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 EXR de 1,024 x 512 píxeles. Nota: Puede parecer que 1,024 x 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 de los recursos de IBL con una resolución mucho más alta.
  • 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.
    • Esta textura optimizada acompaña a la 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 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 -q my_ibl.zip black_skybox/*

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