Начиная с версии alpha04 библиотек Jetpack XR, вносятся важные изменения в порядок предоставления ресурсов пространственного окружения для оптимальной производительности и визуального качества. Эти изменения влияют на совместимость и требуют обновления существующих приложений, определяющих пространственное окружение.
Для создания пространственной среды необходимы два основных компонента:
- Файл .glb или .gltf для геометрии окружающей среды (например, плоскости земли, близлежащих объектов) и основной визуальной текстуры неба, которую видят пользователи.
- Отдельный ZIP-файл, содержащий информацию об освещении на основе изображения (IBL), сгенерированную из EXR-изображения с высоким динамическим диапазоном с помощью инструмента cmgen. ZIP-файл используется для расчётов освещения, таких как отражения от объектов, а не для самой визуальной текстуры неба.
Почему именно такой подход?
Обновленная структура активов обеспечивает следующие преимущества:
- Меньшие размеры файлов: по сравнению с предыдущими методами, такими как использование одного HDR-файла скайбокса высокого разрешения для визуального отображения и информации об освещении, этот подход уменьшает размеры файлов.
- Улучшенная производительность: разделение визуальной текстуры скайбокса (встроенной в glb) и данных IBL (в ZIP-файле) позволяет оптимизировать каждый компонент независимо. Это приводит к снижению пропускной способности памяти при чтении текстур и энергопотребления.
- Оптимизированное освещение: использование ресурса скайбокса с более низким разрешением специально для карты освещения повышает производительность, не оказывая существенного влияния на визуальные результаты освещения объектов.
Чтобы узнать больше о добавлении пространственной среды в ваше приложение, ознакомьтесь с нашим руководством по добавлению сред в ваше приложение .
Оптимизируйте свой glb

Ваш glb-файл представляет геометрию вокруг пользователя, и вы включаете визуальную текстуру вашего скайбокса. Размер файла геометрии должен быть не более 80 МБ.
Для этого существует ряд возможностей повысить эффективность среды, сохраняя при этом высокое качество. Например, плотность сетки должна быть максимальной рядом с пользователем, а для сеток, расположенных дальше от него, плотность можно уменьшать.
- Дальность обзора: Дальность обзора для окружающей среды в Android XR составляет 200 м от точки наблюдения, и ваша текстура скайбокса должна соответствовать этому ограничению. Это обеспечивает оптимальное взаимодействие, поскольку на таком расстоянии параллакс становится неразличимым.
Рост пользователя: География может меняться, но расположите пользователя на возвышении на высоте около 1,5 метров, чтобы избежать задевания более крупными элементами пользовательского интерфейса в приложениях.
Количество полигонов: Следите за количеством полигонов в ваших GLB-файлах, так как высокое количество полигонов может привести к ненужному потреблению энергии. Количество вершин в каждом фрагменте геометрии не должно превышать 10 000.
Сжатие KTX: оптимизируйте производительность графического процессора вашего файла glb, убедившись, что ваш glb использует MIP-текстуры и текстуры ktx2.
Что вам понадобится для оптимизации вашего IBL
Загрузите утилиту командной строки cmgen:
- Последнюю версию можно найти в репозитории Filament .
- Найдите .tgz-файл, содержащий готовую версию cmgen для вашей платформы, и распакуйте его.
- Готовый инструмент находится в каталоге /bin извлеченного файла .tgz.
Активы, которые необходимо подготовить для создания .zip-файла для IBL:
- EXR низкого разрешения, соответствующий текстуре вашего скайбокса
- Текстуру скайбокса следует использовать в формате EXR. Хотя cmgen поддерживает и другие форматы, рекомендуется использовать EXR-файл, поскольку он обеспечивает широкий динамический диапазон, критически важный для создания высококачественного IBL. Использование других форматов, таких как PNG, приводит к менее точному освещению.
- Исходное изображение (EXR) должно иметь соотношение сторон 2:1 и размеры, являющиеся степенью числа 2. Используйте EXR размером 1024 x 512 пикселей. Примечание: может показаться, что разрешение 1024 x 512 пикселей слишком низкое, но это положительно сказывается на производительности. В IBL визуальные результаты для пользователя очень похожи на результаты с гораздо более высоким разрешением IBL.
- Сплошной черный png
- Соотношение сторон этого объекта должно быть 2:1. Размер должен быть 100 x 50 пикселей.
- Это оптимизированная текстура, дополняющая IBL. Пользователи не будут на неё обращать внимание, поэтому мы сосредоточились на оптимизации ресурса для повышения производительности.

Ниже показан пример использования cmgen для создания ZIP-файла для IBL. В этом примере мы используем входные файлы my_360_skybox_1024_x_512.exr и black_skybox.png, а также создаём ZIP-файл 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 ..