EasyAR Plane Detection
EasyAR Plane Detection автоматически обнаруживает горизонтальные плоскости в окружении во время работы EasyAR Motion Tracker и предоставляет возможности, такие как размещение виртуальных объектов.
Принцип работы EasyAR Plane Detection
EasyAR Plane Detection — это простая возможность понимания окружения, которая автоматически выполняется синхронно во время работы EasyAR Motion Tracker. На основе пространственно-временной информации, полученной от камеры устройства и инерциальных датчиков, система непрерывно моделирует реальную среду, распознает и отслеживает горизонтальные плоскости и обеспечивает базовую поддержку размещения виртуальных объектов, выравнивания взаимодействия и пространственного понимания.

Конкретный процесс:
Motion tracking
Во время motion tracking EasyAR непрерывно получает два основных типа данных: последовательные кадры изображения от RGB-камеры, а также данные акселерометра и гироскопа. С помощью алгоритма визуально-инерциального слияния система оценивает непрерывные шесть степеней свободы положения и ориентации устройства в мировой системе координат, предоставляя стабильную траекторию камеры с низким дрейфом для последующего пространственного моделирования и анализа плоскостей.
Обнаружение feature point и триангуляция
На основе оценки pose EasyAR извлекает и отслеживает стабильные визуальные feature point из последовательности изображений, например углы или заметные текстурные области, и с помощью многовидовой геометрии триангулирует эти точки, восстанавливая их позиции в 3D-пространстве и формируя локальное представление 3D point cloud.
Генерация кандидатных областей плоскости
После получения 3D point cloud система выполняет геометрический анализ, чтобы найти наборы точек, которые могут принадлежать одной плоскости. По отношению к направлению гравитации система может выделять кандидаты горизонтальных плоскостей, то есть плоскости, нормали которых приблизительно параллельны направлению гравитации, например полы и столешницы.
Отслеживание и обнаружение плоскости
EasyAR проверяет и обновляет обнаруженные плоскости в последовательных кадрах:
- Определяет, поддерживают ли новые наблюдаемые 3D-точки существующую модель плоскости;
- Динамически корректирует область, границу и confidence плоскости согласно согласованности наблюдений;
- Удаляет кратковременные или нестабильные кандидаты плоскостей. Результат становится “доступной плоскостью” только тогда, когда соблюдены требования геометрической согласованности и временной стабильности.
Система координат плоскости и выравнивание виртуального контента
После подтверждения плоскости можно использовать результат plane detection для более реалистичных AR-эффектов:
- Размещать виртуальные объекты на плоскости, выравнивая их по реальному масштабу и направлению;
- Выполнять ray casting, Hit Test, чтобы отображать касания экрана в позиции на реальной плоскости;
- Реализовывать логику взаимодействия на основе плоскости, например привязку объектов, перемещение и решения по окклюзии.
Поскольку плоскости и система motion tracking используют одну мировую систему координат, виртуальные объекты могут сохранять стабильную и непрерывную пространственную согласованность при движении устройства пользователем.
Plane detection зависит от стабильной pose и пространственной структуры, предоставляемых motion tracking, а результаты plane detection, в свою очередь, могут усиливать понимание окружения, например помогать размещению контента и проектированию взаимодействия. Вместе они образуют основу пространственного восприятия EasyAR, но в архитектуре системы они развязаны. Plane detection не меняет результат оценки pose самого motion tracking.
Лучшие практики
Чтобы обеспечить хороший опыт использования plane detection, следуйте этим практикам.
- Направляйте пользователей двигаться медленно и избегать неподвижности, быстрых движений или вращения на месте.
- Избегайте плоскостей без текстуры, однотонных, зеркальных или других поверхностей, которые трудно визуально распознать.
Примечание
Plane Detection — это функция EasyAR для распознавания горизонтальных плоскостей в окружении. Surface Tracking не обнаруживает и не распознает плоскостные структуры в сцене, поэтому их нужно различать.