L'SDK Android XR è ora disponibile in Anteprima per gli sviluppatori. Vorremmo sapere cosa ne pensi. Per contattarci, visita la nostra pagina di assistenza.
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
A partire dalla release alpha04 delle librerie Jetpack XR, sono disponibili aggiornamenti importanti su come fornire asset di ambienti spaziali per un rendimento e una qualità visiva ottimali. Queste modifiche hanno un impatto sulla compatibilità
e richiedono l'aggiornamento delle app esistenti che impostano ambienti spaziali.
Per fornire ambienti spaziali, sono necessari due componenti principali:
Un file .glb o .gltf per la geometria dell'ambiente (ad esempio il piano di terra, gli oggetti nelle vicinanze) e la texture visiva principale della skybox che vedono gli utenti.
Un file ZIP separato contenente informazioni sull'illuminazione basata sulle immagini (IBL) generate da un'immagine EXR ad alta gamma dinamica utilizzando lo strumento cmgen. Il file ZIP viene utilizzato per i calcoli di illuminazione, ad esempio i riflessi sugli oggetti, e non per la texture della visuale dello skybox stessa.
Perché questo approccio?
Questa struttura degli asset aggiornata offre i seguenti vantaggi:
Dimensioni dei file più piccole: rispetto ai metodi precedenti, come l'utilizzo di un singolo
file HDR skybox ad alta risoluzione sia per la visualizzazione che per le informazioni sull'illuminazione, questo approccio riduce le dimensioni dei file.
Miglioramento delle prestazioni:la separazione della texture skybox visiva (incorporata nel file glb) dai dati IBL (nel file ZIP) consente di ottimizzare ciascun componente in modo indipendente. Ciò comporta una minore larghezza di banda di lettura della memoria delle texture
e un minore consumo energetico.
Illuminazione ottimizzata:l'utilizzo di una risorsa skybox di risoluzione inferiore specificamente per la mappa di illuminazione è vantaggioso per le prestazioni senza influire in modo significativo sui risultati visivi dell'illuminazione sugli oggetti.
Per scoprire di più su come aggiungere un ambiente spaziale nella tua app, consulta la nostra guida sull'aggiunta di ambienti all'app.
Ottimizzare il file glb
Il file glb rappresenta la geometria intorno all'utente e includi la texture visiva della tua skybox. Per la geometria, dovresti cercare di mantenere le dimensioni dei file inferiori o uguali a 80 MB.
Per farlo, esistono diverse opportunità per rendere il tuo ambiente più efficiente mantenendo un'alta qualità. Ad esempio, la densità della mesh deve essere maggiore vicino all'utente e puoi diminuirla per le mesh più lontane.
Distanza di visualizzazione:la distanza di visualizzazione per gli ambienti in Android XR è di 200 m dal punto di vista dell'utente e la texture della scatola del cielo deve rispettare questo vincolo. Ciò offre un'esperienza ottimale perché la parallasse diventa distinta a quella distanza.
Altezza utente: la geografia può variare, ma posiziona l'utente su un rialzo di circa 1,5 metri di altezza per evitare il ritaglio con elementi dell'interfaccia utente più grandi nelle app.
Numero di poligoni:presta attenzione al numero di poligoni nei file glb, poiché un numero elevato può comportare un consumo di energia non necessario. Ogni patch di geometria
non deve superare i 10.000 vertici.
Compressione KTX: ottimizza le prestazioni della GPU del file glb assicurandoti che utilizzi mipmap e texture KTX2.
Trova il file .tgz contenente la versione predefinita di cmgen per la tua piattaforma ed estrailo.
Lo strumento precompilato si trova nella directory /bin del file .tgz estratto.
Asset da preparare per generare il file .zip per l'IBL:
Un file EXR a bassa risoluzione che corrisponda alla texture della skybox
L'input della texture skybox deve essere un file EXR. Sebbene cmgen supporti altri formati, si consigliano i file EXR perché forniscono le informazioni sull'ampia gamma dinamica fondamentali per fornire un'illuminazione indiretta di alta qualità.
L'utilizzo di altri formati, come PNG, comporta un'illuminazione meno precisa.
L'immagine di origine (EXR) deve avere proporzioni 2:1 e dimensioni che sono una potenza di 2. Utilizza un file EXR di 1024 x 512 pixel. Nota: la risoluzione 1024 x 512 potrebbe sembrare troppo bassa, ma è vantaggiosa per le prestazioni. Per le immagini in illuminazione interna, i risultati visivi per l'utente sono molto simili agli asset con risoluzione IBL molto più elevata.
Un'immagine png nera uniforme
Questo asset deve avere anche proporzioni 2:1. Utilizza una dimensione di 100 x 50 pixel.
Questa serve da texture ottimizzata per accompagnare l'illuminazione globale. Gli utenti non lo vedranno, quindi ci concentriamo sull'ottimizzazione dell'asset in base al rendimento.
Di seguito è riportato un esempio di utilizzo di cmgen per creare il file ZIP per IBL.
In questo esempio utilizziamo i file di input denominati my_360_skybox_1024_x_512.exr e
black_skybox.png e creiamo un file ZIP denominato 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..
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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 .."]]