Начиная с выпуска альфа04 библиотек Jetpack XR, появились важные обновления того, как следует предоставлять ресурсы пространственной среды для оптимальной производительности и визуального качества. Эти изменения влияют на совместимость и требуют обновления существующих приложений, определяющих пространственную среду.
Чтобы создать пространственную среду, вам нужны два основных компонента:
- Файл .glb или .gltf для геометрии среды (например, плоскости земли, близлежащих объектов) и основной визуальной текстуры неба, которую видят пользователи.
- Отдельный ZIP-файл, содержащий информацию об освещении на основе изображения (IBL), созданную из изображения EXR с широким динамическим диапазоном с помощью инструмента cmgen. ZIP-файл используется для расчетов освещения, например отражений на объектах, а не для самой визуальной текстуры скайбокса.
Почему такой подход?
Эта обновленная структура активов обеспечивает следующие преимущества:
- Меньшие размеры файлов. По сравнению с предыдущими методами, такими как использование одного файла Skybox HDR высокого разрешения как для визуального отображения, так и для информации об освещении, этот подход уменьшает размеры файлов.
- Улучшенная производительность: отделение текстуры визуального скайбокса (встроенной в glb) от данных IBL (в ZIP-файле) позволяет оптимизировать каждый компонент независимо. Это приводит к снижению пропускной способности чтения текстурной памяти и снижению энергопотребления.
- Оптимизированное освещение. Использование ресурса скайбокса с более низким разрешением специально для карты освещения полезно для производительности, не оказывая существенного влияния на визуальные результаты освещения объектов.
Чтобы узнать больше о добавлении пространственной среды в ваше приложение, ознакомьтесь с нашим руководством по добавлению сред в ваше приложение .
Оптимизируйте свой GLB
Ваш glb представляет собой геометрию вокруг пользователя, а вы включаете визуальную текстуру своего скайбокса. Что касается вашей геометрии, вам следует стараться поддерживать размер файлов не более 80 МБ.
Для этого существует ряд возможностей сделать вашу среду более эффективной, сохраняя при этом высокое качество. Например, плотность вашей сетки должна быть самой плотной рядом с пользователем, и вы можете уменьшить плотность для сеток, находящихся дальше от пользователя.
- Расстояние просмотра: расстояние просмотра для сред в Android XR составляет 200 м от точки пользователя, и ваша текстура скайбокса должна соответствовать этому ограничению. Это обеспечивает оптимальные впечатления, поскольку на таком расстоянии параллакс становится незаметным.
Высота пользователя. География может варьироваться, но расположите пользователя на холме на высоте около 1,5 метра, чтобы избежать обрезки более крупных элементов пользовательского интерфейса в приложениях.
Polycount: будьте внимательны к количеству полигонов в ваших файлах 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 ..