À partir de la version alpha04 des bibliothèques Jetpack XR, des modifications importantes ont été apportées à la façon dont vous devez fournir des é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:
- Un fichier .glb ou .gltf pour la géométrie de l'environnement (par exemple, le plan d'un sol, les objets à proximité) et la texture de ciel principale que les utilisateurs voient.
- Fichier ZIP distinct contenant des informations sur l'éclairage basé sur l'image (IBL, Image Based Lighting) 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 nouvelle structure d'assets présente les avantages suivants:
- Tailles de fichiers plus petites:par rapport aux méthodes précédentes, telles que l'utilisation d'un seul fichier de ciel HDR haute résolution pour l'affichage visuel et les informations d'éclairage, cette approche réduit les tailles de fichiers.
- Amélioration des performances:en séparant la texture de la skybox visuelle (intégrée au glb) des données IBL (dans le fichier ZIP), vous pouvez optimiser chaque composant indépendamment. Cela réduit la bande passante de lecture de la mémoire de texture et la consommation d'énergie.
- Éclairage optimisé:l'utilisation d'une ressource de 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 en savoir plus sur l'ajout d'un environnement spatial dans votre application, consultez notre guide sur l'ajout d'environnements à votre application.
Optimiser votre glb
Votre fichier glb représente la géométrie autour de l'utilisateur, et vous incluez la texture visuelle de votre skybox. Pour votre géométrie, vous devez essayer de maintenir la taille des fichiers à 80 Mo ou moins.
Pour ce faire, vous pouvez optimiser votre environnement tout en conservant une qualité élevée. Par exemple, la densité de votre maillage doit être la plus dense à proximité de l'utilisateur, et vous pouvez réduire la densité pour les maillages plus éloignés de l'utilisateur.
- Distance de vue:la distance de vue des environnements dans Android XR est de 200 m du point de vue de l'utilisateur. Votre texture de ciel doit respecter cette contrainte. Cela offre une expérience optimale, car la parallaxe devient indiscernable à cette distance.
Hauteur de l'utilisateur:la géographie peut varier, mais placez l'utilisateur sur une butte d'environ 1,5 mètre de haut pour éviter que les éléments d'interface utilisateur plus grands ne soient tronqués dans les applications.
Nombre de polygones:soyez attentif 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, puis extrayez-le.
- L'outil précompilé se trouve dans le répertoire /bin du fichier .tgz extrait.
Éléments à préparer pour générer le fichier .zip pour l'IBL:
- Un fichier EXR basse résolution correspondant à la texture de votre skybox
- Votre texture de ciel 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 le PNG, entraîne un éclairage moins précis.
- L'image source (EXR) doit avoir un format de 2:1 et des dimensions qui sont une puissance de 2. Utilisez un EXR de 1 024 x 512 pixels. Remarque: La résolution de 1 024 x 512 pixels 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 aux éléments IBL de résolution beaucoup plus élevée.
- Un fichier 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 pour accompagner l'IBL. Les utilisateurs ne le verront pas. Nous concentrons donc le composant sur l'optimisation des performances.
L'exemple suivant montre comment utiliser cmgen pour créer le fichier .zip pour l'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 ..