Реализация окклюзии с помощью EasyAR Mega в Unity
Окклюзия (Occlusion) — ключевая технология для повышения погружения в AR-смешанной реальности. В этой статье объясняется, как добиться эффекта окклюзии в Unity с помощью EasyAR Mega.
Начало работы
- Завершите Быстрый старт с использованием образцов EasyAR Mega Unity.
- Умейте создавать контент, выровненный по реальному миру.
Способы реализации окклюзии
Офлайн-моделирование: В системе координат Block создайте геометрию 1:1, соответствующую реальным объектам (стенам, колоннам, крупному оборудованию); или получите оптимизированную модель путем обрезки и упрощения полигональной сетки плотной модели Block.
Выравнивание во время выполнения: Во время выполнения выровняйте систему координат Block с реальным пространством через облачную локализацию и загрузите соответствующую геометрию.
Замена материалов: Назначьте этим геометрическим объектам специальные материалы окклюзии.
Визуальный эффект: Когда GPU рендерит другие виртуальные объекты, пиксели скрытых частей автоматически отбрасываются из-за непрохождения теста глубины (depth test), заставляя виртуальные объекты подчиняться логике окклюзии реального физического пространства.
Как использовать геометрию для окклюзии
Следуйте этим шагам, чтобы добавить геометрию для окклюзии в сцену и проверить эффект.
Размещение геометрии окклюзии
Используйте встроенные примитивы или созданную геометрию в качестве окклюзии, разместив их в правильном положении в системе координат Block на основе плотной модели Mega Block.

[Опционально] Точная настройка положения геометрии по панораме

Назначение материала окклюзии геометрии
Замените материал геометрии на материал окклюзии, например, используя встроенный в Unity SpatialMappingOcculusion.

Тестирование с данными EIF или на устройстве
Позицию модели окклюзии можно уточнить по результатам тестирования.
Как использовать упрощенную плотную модель для окклюзии
Следуйте этим шагам, чтобы экспортировать плотную модель Mega Block, обрезать и упростить её до белой модели (white model) для окклюзии, затем импортировать в сцену.
Экспорт в Mega Blocks
В панели Inspector в инструменте Mega Blocks выберите экспорт.

Изменение параметров экспорта
При экспорте измените настройки.

Цифра 1 обозначает уровень LOD: чем ниже уровень, тем проще модель и меньше полигонов. Для максимальной точности выберите 2, для снижения точности ради уменьшения полигонов — 1 или 0.
Цифра 2 — опция экспорта текстур. Так как нам нужна только белая модель для окклюзии, текстуры не экспортируем.
Обрезка и упрощение модели
Обрежьте и упростите экспортированную модель в программе для 3D-моделирования (например, Blender), сохраните как Glb.
Совет
В примере используется модификатор Decimate Modifier в Blender.

После обрезки и упрощения:

Импорт модели окклюзии в Unity и размещение под узлом Block

Изменение Transform модели
Установите для Transform модели значения Position и Rotation равными 0.
Теперь модель окклюзии должна совпадать с плотной моделью, так как при обрезке и упрощении в 3D-редакторе система координат Block не изменялась.

Назначение материала окклюзии модели
Замените материал модели на материал окклюзии, например, SpatialMappingOcculusion из Unity.

Тестирование с данными EIF или на устройстве
Протестируйте результат с данными EIF или на реальном устройстве.
Ожидаемый эффект окклюзии
Эффективность окклюзии зависит от:
- Точности самой локализации и трекинга
- Точности размещения модели
- Точности самой модели (если это не простой примитив)
Нормально наблюдать смещение в несколько сантиметров при дрейфе локализации.
Модели окклюзии с большим количеством полигонов могут снижать производительность. Рекомендуется использовать их только в необходимых областях и отдавать предпочтение простым геометрическим формам.