Требования, предъявляемые к сцене для добавления в SenseTower
Все сцены и объекты собираются в версии Unity 2021.3.16f1 с использованием URP с подключенными модулями Android и Linux сборки
При установке необходимо выбрать устанавливаемые модули (указаны на скриншотах ниже):
- Android Build Support
- OpenJDK
- Android SDK & NDK Tools
- Linux Build Support (IL2CPP)
- Linux Build Support (Mono)
- Linux Dedicated Server Build Support
- Windows Build Support (IL2CPP)
- Windows Dedicated Server Build Support
Если редактор Unity уже установлен, необходимо убедиться, что у него установлены все указанные модули и, при необходимости, установить отсутствующие. Чтобы это сделать, нажмите на шестерёнку и выберите AddModules:
Если для создания сцены используется пустой проект (не из репозитория https://github.com/Sense-Capital/RemoteContentSample), необходимо создать новый проект, выбрав шаблон 3D (URP):
Быстродействие
Быстродействие сцены напрямую зависит от её загруженности.
Общая цель — достичь приемлемой частоты кадров на разных устройствах. В Oculus Quest 1 и 2 в идеале сцена будет работать со скоростью 72 кадров/с со всех точек зрения, когда сцена заполнена, хотя диапазон 60–72 кадров/с часто является более реалистичной целью.
При формировании сцены для лучшего быстродействия необходимо учитывать требования предъявляемые устройством Oculus, они подробно описаны здесь - Требования к сцене Unity
Из главных, это количество отрисовок в районе 80-200 и количества треугольников до 400к(чем меньше тем лучше).
Но следует понимать, что это общее количество треугольников, и рекомендуется формировать сцену таким образом, чтобы пользователь мог видеть в один момент не более 50 000 - 70 000 треугольников.
Количество треугольников можно проверить в окне Game, нажав на кнопку Stats. Предварительно необходимо направить камеру таким образом, чтобы вся сцена попала в обзор.
Проверять количество треугольников рекомендуется в Unity. В Blender возможны искаженные данные из-за применения модификаторов и инстансов.
Unity поддерживает импорт моделей напрямую из Blender. Импорт модели из Blender в Unity.
Текстуры должны иметь разрешение до 2к. Исключение - skybox-текстура окружающего ландшафта (для неё можно установить разрешение вплоть до 8k).
При соблюдение данных требований в приложении SenseTower будет поддерживаться необходимое количество FPS и соответственно максимальное удовольствие от нахождение в пространстве.
Стандартные средства повышения быстродействия:
1) Occlusion Culling это функция, отключающая рендеринг тех объектов, которые в данные момент не видит камера (они закрыты другими объектами). В компьютерной 3D графике это не происходит автоматически. Для использования Occlusion Culling необходимо задать все неподвижные объекты на сцене как Static.
Далее вызвать окно Occlusion Culling в пункте меню Windows:
И запечь Occlusion Culling:
Важно: При любом изменении объектов на сцене (добавление/изменение/удаление объектов) операцию запекания Occlusion Culling необходимо провести заново.
2) Запекание света необходимо, чтобы зафиксировать освещение в текстурах и отключить источники света на сцене. Для этого нужно:
В окне Project найти используемые на сцене модели (в формате fbx или blend), включить и применить на них опцию Generate Lightmap UVs
Для корректной работы сцены необходимо все источники света сделать типа Baked
Далее вызвать окно Lighting:
Рекомендуется выбрать следующие настройки запекания света:
Также рекомендуется сменить настройки Source со Skybox на Color и Custom в указанных ниже пунктах для более корректного отображения цветов при открытии сцены через Sense Tower. Таким образом, освещение сцены не будет зависеть от Skybox Sense Tower.
После данных настроек нажать кнопку Generate Lighting внизу окна Lighting. Процесс запекания с данными настройками может несколько минут. После завершения запекания внизу окна появится надпись о количестве получившихся карт запекания. В данном случае видно, что получились две карты запекания размером 2048 пикселей, занимающие 21,3Мб, что является приемлемым результатом.
В случае, если карты запекания занимают более 30Мб, рекомендуется понизить разрешение карты запекания и перезапечь освещение заново: