Оптимизация объектов окружения

Поддерживаемые XR-устройства
Это руководство поможет вам создавать продукты для таких XR-устройств.
XR-шлемы
Проводные XR-очки

Начиная с версии 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, используя текстуры mipmap и ktx2.

Что нужно для оптимизации IBL

Скачайте утилиту командной строки cmgen:

  • Последнюю версию можно найти в репозитории Filament.
  • Найдите файл TGZ, содержащий предварительно созданную версию cmgen для вашей платформы, и распакуйте его.
  • Встроенный инструмент находится в каталоге /bin извлеченного TGZ-файла.

Объекты, которые нужно подготовить для создания ZIP-файла для IBL:

  • EXR-файл с низким разрешением, соответствующий текстуре скайбокса.
    • Текстура скайбокса должна быть в формате EXR. Хотя cmgen поддерживает и другие форматы, мы рекомендуем использовать EXR, поскольку они содержат информацию о расширенном динамическом диапазоне, которая необходима для качественного освещения на основе изображения. Если использовать другие форматы, например PNG, освещение будет менее точным.
    • Исходное изображение (EXR) должно иметь соотношение сторон 2:1 и размеры, кратные двум. Используйте файл 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 ..