Table of Contents

Реализация окклюзии с помощью EasyAR Mega в Unity

Окклюзия (Occlusion) — ключевая технология для повышения погружения в AR-смешанной реальности. В этой статье объясняется, как добиться эффекта окклюзии в Unity с помощью EasyAR Mega.

Начало работы

Способы реализации окклюзии

  • Офлайн-моделирование: В системе координат 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 или на реальном устройстве.

Ожидаемый эффект окклюзии

Эффективность окклюзии зависит от:

  • Точности самой локализации и трекинга
  • Точности размещения модели
  • Точности самой модели (если это не простой примитив)

Нормально наблюдать смещение в несколько сантиметров при дрейфе локализации.

Модели окклюзии с большим количеством полигонов могут снижать производительность. Рекомендуется использовать их только в необходимых областях и отдавать предпочтение простым геометрическим формам.

Связанные темы