À partir de la version alpha04 des bibliothèques Jetpack XR, des mises à jour importantes ont été apportées à la façon dont vous devez fournir les éléments d'environnement spatial pour des performances et une qualité visuelle optimales. Ces modifications ont un impact sur la compatibilité et nécessitent la mise à jour des applications existantes qui définissent des environnements spatiaux.
Pour fournir des environnements spatiaux, vous avez besoin de deux composants principaux :
- Fichier .glb ou .gltf pour la géométrie de l'environnement (par exemple, le plan au sol, les objets à proximité) et la texture skybox visuelle principale que les utilisateurs voient.
- Fichier ZIP distinct contenant des informations sur l'éclairage basé sur des images (IBL) générées à partir d'une image EXR à plage dynamique élevée à l'aide de l'outil cmgen. Le fichier ZIP est utilisé pour les calculs d'éclairage, tels que les reflets sur les objets, et non pour la texture visuelle de la skybox elle-même.
Pourquoi cette approche ?
Cette structure d'assets mise à jour présente les avantages suivants :
- Taille de fichier réduite : par rapport aux méthodes précédentes, comme l'utilisation d'un seul fichier skybox HDR haute résolution pour l'affichage visuel et les informations d'éclairage, cette approche réduit la taille des fichiers.
- Performances améliorées : la séparation de la texture de la skybox visuelle (intégrée au fichier glb) des données IBL (dans le fichier ZIP) vous permet d'optimiser chaque composant indépendamment. Cela entraîne une diminution de la bande passante de lecture de la mémoire de texture et de la consommation d'énergie.
- Éclairage optimisé : l'utilisation d'une ressource skybox de résolution inférieure spécifiquement pour la carte d'éclairage est bénéfique pour les performances sans avoir d'impact significatif sur les résultats visuels de l'éclairage sur les objets.
Pour savoir comment ajouter un environnement spatial à votre application, consultez notre guide sur l'ajout d'environnements à votre application.
Optimiser votre fichier .glb

Votre fichier glb représente la géométrie autour de l'utilisateur et inclut la texture visuelle de votre skybox. Pour votre géométrie, essayez de conserver des fichiers de taille inférieure ou égale à 80 Mo.
Pour ce faire, vous pouvez rendre votre environnement plus efficace tout en conservant une qualité élevée. Par exemple, la densité de votre maillage doit être la plus élevée à proximité de l'utilisateur. Vous pouvez la diminuer pour les maillages plus éloignés.
- Distance de vue : la distance de vue pour les environnements dans Android XR est de 200 mètres à partir du point de l'utilisateur. Votre texture de skybox doit respecter cette contrainte. Cela permet d'offrir une expérience optimale, car la parallaxe devient indiscernable à cette distance.
Taille de l'utilisateur : la géographie peut varier, mais placez l'utilisateur sur un monticule d'environ 1,5 mètre de hauteur pour éviter le chevauchement avec les éléments d'interface utilisateur plus grands dans les applications.
Nombre de polygones : faites attention au nombre de polygones dans vos fichiers .glb, car un nombre élevé peut entraîner une consommation d'énergie inutile. Chaque patch de géométrie ne doit pas dépasser 10 000 sommets.
Compression KTX : optimisez les performances du GPU de votre fichier GLB en vous assurant qu'il utilise des mipmaps et des textures ktx2.
Ce dont vous avez besoin pour optimiser votre IBL
Téléchargez l'utilitaire de ligne de commande cmgen :
- Vous trouverez la dernière version dans le dépôt Filament.
- Recherchez le fichier .tgz contenant la version précompilée de cmgen pour votre plate-forme et extrayez-le.
- L'outil prédéfini se trouve dans le répertoire /bin du fichier .tgz extrait.
Éléments à préparer pour générer le fichier .zip pour IBL :
- Un fichier EXR basse résolution correspondant à la texture de votre skybox
- Votre texture de skybox doit être un fichier EXR. Bien que cmgen soit compatible avec d'autres formats, les fichiers EXR sont recommandés, car ils fournissent les informations sur la plage dynamique élevée qui sont essentielles pour fournir une IBL de haute qualité. L'utilisation d'autres formats, comme PNG, entraîne un éclairage moins précis.
- L'image source (EXR) doit avoir un rapport de 2:1 et des dimensions qui sont une puissance de 2. Utilisez un fichier EXR de 1 024 x 512 pixels. Remarque : La résolution de 1 024 x 512 peut sembler trop faible, mais elle est bénéfique pour les performances. Pour l'IBL, les résultats visuels pour l'utilisateur sont très similaires à ceux des assets IBL de résolution beaucoup plus élevée.
- PNG noir uni
- Cet élément doit également être au format 2:1. Utilisez une taille de 100 x 50 pixels.
- Il s'agit d'une texture optimisée qui accompagne l'IBL. Les utilisateurs ne verront pas ce composant. Nous nous concentrons donc sur l'optimisation des performances.

L'exemple suivant montre comment utiliser cmgen pour créer le fichier .zip pour IBL. Dans cet exemple, nous utilisons des fichiers d'entrée nommés my_360_skybox_1024_x_512.exr et black_skybox.png, et nous créons un fichier .zip nommé 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 ..