Ab der Alpha 04-Version der Jetpack XR-Bibliotheken gibt es wichtige Änderungen bei der Bereitstellung von Assets für die Umgebung, um eine optimale Leistung und visuelle Qualität zu erzielen. Diese Änderungen wirken sich auf die Kompatibilität aus und erfordern die Aktualisierung vorhandener Apps, die räumliche Umgebungen festlegen.
Für die Bereitstellung von räumlichen Umgebungen sind zwei Hauptkomponenten erforderlich:
- Eine GLB- oder GLTF-Datei für die Geometrie der Umgebung (z .B .die Bodenebene, nahe Objekte) und die primäre visuelle Skybox-Textur, die Nutzer sehen.
- Eine separate ZIP-Datei mit Informationen zur bildbasierten Beleuchtung (Image Based Lighting, IBL), die mit dem cmgen-Tool aus einem EXR-Bild mit hohem Dynamikbereich generiert wurden. Die ZIP-Datei wird für Beleuchtungsberechnungen wie Spiegelungen auf Objekten verwendet und nicht für die visuelle Skybox-Textur selbst.
Warum dieser Ansatz?
Diese aktualisierte Asset-Struktur bietet folgende Vorteile:
- Kleinere Dateigrößen:Im Vergleich zu früheren Methoden, z. B. der Verwendung einer einzelnen hochauflösenden HDR-Skybox-Datei sowohl für die visuelle Darstellung als auch für die Beleuchtungsinformationen, werden mit diesem Ansatz die Dateigrößen reduziert.
- Verbesserte Leistung:Wenn Sie die visuelle Skybox-Textur (in der glb-Datei enthalten) von den IBL-Daten (in der ZIP-Datei) trennen, können Sie jede Komponente unabhängig voneinander optimieren. Dies führt zu einer geringeren Lesebandbreite des Texturspeichers und einem geringeren Stromverbrauch.
- Optimierte Beleuchtung:Die Verwendung einer Skybox-Ressource mit niedrigerer Auflösung speziell für die Lichtkarte wirkt sich positiv auf die Leistung aus, ohne die visuellen Ergebnisse der Beleuchtung auf Objekten wesentlich zu beeinträchtigen.
Weitere Informationen zum Hinzufügen einer räumlichen Umgebung in Ihrer App finden Sie in unserem Leitfaden zum Hinzufügen von Umgebungen zu Ihrer App.
glb-Datei optimieren
Ihr glb stellt die Geometrie um den Nutzer herum dar und Sie fügen die visuelle Textur Ihrer Skybox hinzu. Die Dateigröße für die Geometrie sollte 80 MB nicht überschreiten.
Es gibt verschiedene Möglichkeiten, Ihre Umgebung effizienter zu gestalten und gleichzeitig eine hohe Qualität beizubehalten. Die Dichte des Netzes sollte beispielsweise in der Nähe des Nutzers am höchsten sein. Sie können die Dichte für Netze verringern, die weiter vom Nutzer entfernt sind.
- Blickweite:Die Blickweite für Umgebungen in Android XR beträgt 200 Meter vom Standpunkt des Nutzers. Ihre Skybox-Textur sollte dieser Einschränkung entsprechen. Das bietet eine optimale Nutzung, da die Parallaxe bei dieser Entfernung nicht mehr wahrnehmbar ist.
Größe des Nutzers:Die Größe des Nutzers kann je nach Region variieren.Platzieren Sie ihn aber auf einem Hügel mit einer Höhe von etwa 1,5 Metern, um Ausschnitte bei größeren UI-Elementen in Apps zu vermeiden.
Polyanzahl:Achten Sie auf die Polyanzahl in Ihren glb-Dateien, da eine hohe Polyanzahl zu unnötigem Stromverbrauch führen kann. Jeder Geometriebereich darf nicht mehr als 10.000 Ecken haben.
KTX-Komprimierung:Optimieren Sie die GPU-Leistung Ihrer glb-Datei, indem Sie dafür sorgen, dass Ihre glb-Datei Mipmaps und KTX2-Texturen verwendet.
Was Sie zur Optimierung Ihrer IBL benötigen
Laden Sie das Befehlszeilentool „cmgen“ herunter:
- Die neueste Version finden Sie im Filament-Repository.
- Suchen Sie die .tgz-Datei mit der vorkonfigurierten Version von cmgen für Ihre Plattform und extrahieren Sie sie.
- Das vorkonfigurierte Tool befindet sich im Verzeichnis „/bin“ der extrahierten .tgz-Datei.
Assets, die für die Generierung der ZIP-Datei für IBL vorbereitet werden müssen:
- Eine EXR-Datei mit niedriger Auflösung, die mit der Skybox-Textur übereinstimmt
- Die Skybox-Textur muss eine EXR-Datei sein. Obwohl cmgen andere Formate unterstützt, werden EXRs empfohlen, da sie die Informationen zum hohen Dynamikbereich enthalten, die für eine hochwertige IBL unerlässlich sind. Die Verwendung anderer Formate wie PNG führt zu weniger präziser Beleuchtung.
- Das Quellbild (EXR) muss ein Seitenverhältnis von 2:1 und Abmessungen haben, die Potenzen von 2 sind. Verwenden Sie ein EXR-Bild mit 1.024 × 512 Pixeln. Hinweis: Die Auflösung von 1.024 × 512 Pixeln mag zu niedrig erscheinen, ist aber für die Leistung von Vorteil. Bei IBL sind die visuellen Ergebnisse für den Nutzer sehr ähnlich wie bei Assets mit viel höherer IBL-Auflösung.
- Ein durchgehend schwarzes PNG-Bild
- Dieses Asset muss außerdem ein Seitenverhältnis von 2:1 haben. Verwenden Sie eine Größe von 100 × 50 Pixeln.
- Diese dient als optimierte Textur für die IBL. Nutzer sehen sich das nicht an. Daher konzentrieren wir uns bei der Optimierung des Assets auf die Leistung.
Im Folgenden wird ein Beispiel für die Verwendung von cmgen zum Erstellen der ZIP-Datei für IBL gezeigt. In diesem Beispiel verwenden wir die Eingabedateien „my_360_skybox_1024_x_512.exr“ und „black_skybox.png“ und erstellen eine ZIP-Datei namens „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 ..