Сочетание плоскостного отслеживания и отслеживания движения
В этой статье описано, как объединить отслеживание плоских изображений с отслеживанием движения устройства, чтобы повысить стабильность отслеживания и качество пользовательского опыта в сложных сценариях.
Основной принцип
Motion Fusion объединяет данные позы плоскостного отслеживания изображения и отслеживания движения устройства для более надежной оценки позы.
Синхронизация и взаимное дополнение данных
- Визуальное отслеживание: вычисляет позу текущего кадра (позиция + вращение) через сопоставление характерных точек изображения, но легко подвержено влиянию перекрытия, размытия или быстрого движения.
- Отслеживание движения: использует высокочастотный вывод IMU-сенсора и вывод визуального изображения для получения данных движения устройства, но может иметь накопительную ошибку дрейфа.
- Motion Fusion:
- Выполняется выравнивание систем координат позы визуального отслеживания и позы отслеживания движения устройства.
- Когда целевое изображение хорошо видно и движется стабильно, основным является визуальное отслеживание; его поза постоянно передается в модуль fusion для уменьшения накопительного дрейфа.
- Когда целевое изображение потеряно, занимает слишком малую часть кадра или быстро движется, визуальное отслеживание отказывает, и основным становится отслеживание движения.
Ключевые технические моменты
- Выравнивание timestamp: выравнивает timestamp визуальных кадров и данных отслеживания движения, чтобы избежать дрожания из-за задержки.
- Выравнивание систем координат: выполняет выравнивание на основе траектории визуального отслеживания и траектории отслеживания движения.
- Релокализация: когда изображение появляется снова, визуальное отслеживание берет управление на себя и исправляет накопленную ошибку.
Применимые сценарии и ограничения
Motion Fusion подходит не для всех сценариев. Функция Motion Fusion не применима в любом из следующих случаев:
- Целевое устройство не поддерживает функции отслеживания движения, такие как ARCore/ARKit. Подробный список поддерживаемых устройств см. в Поддержка устройств отслеживания движения.
- Целевое изображение или плоский объект динамичны в сцене, например карточка в руке.
В остальных сценариях Motion Fusion значительно улучшает пользовательский опыт плоскостного отслеживания изображения.
- Быстрое движение: быстрое перемещение устройства пользователем может вызвать смазывание движения и отказ визуального отслеживания.
- Цель исчезает: виртуальный контент во всей сцене продолжает отображаться, даже если вид покидает цель или цель перекрыта.
- Удаление от цели: отслеживание остается стабильным, когда целевое изображение занимает слишком малую часть кадра.
- Условия низкой освещенности: производительность визуального отслеживания снижается, при этом необходимо сохранить опыт.
Эффекты и ожидаемые результаты
В подходящих сценариях Motion Fusion обеспечивает более стабильный и плавный опыт, чем одно плоскостное отслеживание изображения.
Идеальный результат
- Более стабильное отслеживание: виртуальные объекты не дрожат и не скачут.
- Плавный переход: когда визуальное отслеживание отказывает, изменения объединенной позы остаются непрерывными и естественными.
- Устойчивость к помехам: при потере или перекрытии целевого изображения либо быстром движении устройства виртуальный объект продолжает следовать за движением устройства.
Неидеальные случаи и меры
| Явление | Причина | Восприятие пользователем | Решение |
|---|---|---|---|
| Сначала не действует | Отслеживанию движения требуется время для инициализации | На начальном этапе контент исчезает | Добавьте подходящие UI-подсказки и убедитесь, что инициализация системного отслеживания движения завершена |
| Заметный дрейф | Системная ошибка накапливается, долго нет визуальной коррекции | Виртуальный объект отклоняется от исходной позиции | Предложите пользователю сократить время перекрытия или добавьте подсказки визуальной релокализации |
| Снижение производительности | Две функции долго работают одновременно | Падает частота кадров, изображение зависает | Это нормально; Motion Fusion можно отключить через API |
Метод проверки ожидаемого результата
Проверьте на поддерживаемом устройстве в реальной сцене:
- Наведите устройство на изображение и убедитесь, что виртуальный объект стабилен.
- Закройте изображение рукой на 2 секунды и двигайте устройство, затем проверьте, движется ли виртуальный объект плавно.
- Уберите руку и убедитесь, что виртуальный объект быстро возвращается в правильное положение без скачка.
Итоги и лучшие практики
Motion Fusion значительно повышает робастность плоскостного отслеживания изображения во многих сценариях, но требует аппаратной поддержки устройства и достаточной производительности.
API для включения/отключения Motion Fusion в реальном времени:
- Native: setResultPostProcessing
- Unity: EnableMotionFusion