Диагностика и устранение: проблемы с подпрыгиванием и дрифтом контента в приложениях
«Виртуальный контент дрифтует», «Объекты трясутся», «Позиция нестабильна» — это частые проблемы, с которыми сталкиваются разработчики AR-приложений. Нестабильность контента может разрушить иммерсивность и привести к плохому пользовательскому опыту.
Эта статья поможет понять причины подпрыгивания и дрифта контента и предложит системный подход к диагностике и оптимизации.
Различие между «нормальной тряской» и «аномальным дрифтом»
Сначала необходимо установить реалистичные ожидания. Высокоточное AR-трекинг на мобильных устройствах само по себе является сложной задачей. Следующие ситуации относятся к нормальному диапазону и не могут быть полностью устранены, но их можно оптимизировать:
Незначительный высокочастотный джиттер (Jitter):
- Проявление: виртуальные объекты имеют миллиметровые, едва заметные колебания.
- Причина: вызвано физическим шумом датчиков устройства, пределом точности алгоритмов визуального трекинга и естественной мелкой дрожью в руках пользователя.
- Пример: при близком рассмотрении (например, виртуальный объект на столе) такая мелкая дрожь нормальна.
Кратковременный дрифт (Drift):
- Проявление: при быстром перемещении или повороте устройства виртуальный объект смещается на короткое время (0.5-1 секунду), затем возвращается на место.
- Причина: система SLAM устройства при быстром движении испытывает накопленную погрешность IMU (инерциального измерительного модуля) и задержку визуальной локализации, что приводит к кратковременному смещению позиции.
- Пример: в динамичных сценах это приемлемо. Если объект быстро «возвращается» на место, система работает корректно.
Следующие ситуации являются аномальными проблемами, требующими диагностики и исправления:
- Постоянный, значительный позиционный дрифт: виртуальный объект медленно и непрерывно смещается от своего правильного положения, не возвращаясь обратно или возвращаясь с большой задержкой.
- Сильное подпрыгивание или мерцание: виртуальный объект сильно прыгает на экране или периодически исчезает/появляется.
- Несоответствие относительного положения с реальными объектами: виртуальный объект не может стабильно «держаться» на реальном объекте.
Примечание
Кроме того, важно отметить:
Для устройств, работающих в режимах 0DoF, 3DoF или 5DoF, «точность позиционирования» и «реалистичность» изначально слабее, чем у 6DoF устройств. При быстром перемещении пользователя, поворотах или подъеме/спуске по лестнице виртуальные объекты не могут идеально следовать за движением.
Поэтому явления вроде «парения в воздухе» или «смещения позиции» в этих режимах являются фундаментальным ограничением возможностей устройств, а не «неисправностью дрифта или подпрыгивания», рассматриваемой в этой статье.
О различиях в опыте использования разных режимов xDoF см. в разделе Лучшие практики навигации.
Системный процесс диагностики
Проводите диагностику в следующем порядке, начиная с наиболее вероятных причин.
Шаг первый: внешняя среда и аппаратные факторы (без изменения кода)
Проверка физической среды:
- Богатство текстур
Слишком ли однообразна ваша тестовая среда? Большие однотонные стены, гладкие полы, стеклянные поверхности затрудняют визуальную локализацию или приводят к ошибкам. - Динамические объекты
Есть ли в среде много движущихся объектов (люди, транспорт)? Динамические объекты мешают визуальной локализации, но обычно это кратковременная проблема. - Путаница в сцене
Есть ли в среде легко перепутываемые участки (например, одинаковые лифтовые холлы)? Визуально схожие зоны влияют на локализацию, вызывая «перепрыгивание» между похожими областями. Этого можно избежать, задав подходящие априорные данные.
- Богатство текстур
Проверка аппаратного обеспечения устройства:
- Перегрев устройства
Сильно ли греется устройство при длительной работе? Перегрев приводит к троттлингу CPU/GPU, ухудшая производительность встроенной SLAM-системы и являясь частой причиной устойчивого дрифта. - Производительность устройства
На устаревших устройствах из-за ограничений производительности и точности сенсоров чаще возникает масштабный дрифт, вызывающий дрифт виртуального контента. Попробуйте протестировать на другом устройстве, чтобы понять, вызвана ли проблема его ограничениями.
- Перегрев устройства
Шаг второй: анализ качества карты и локализации (с использованием внешних инструментов)
Использование Mega Toolbox:
- Запустите Mega Toolbox в том же месте и наблюдайте за стабильностью его локализации.
- Если локализация Toolbox тоже дрифтует/прыгает: проблема в самой карте или непригодности текущей среды для локализации.
- Если локализация Toolbox стабильна: проблема в вашем приложении. Перейдите к шагу три.
Симуляция работы с EIF-данными на ПК:
- Воспроизведите EIF-данные, записанные на месте.
- Если при воспроизведении тоже дрифт/прыжки: проблема в непригодности сцены для локализации, или в самой карте, или в масштабном дрифте трекинга движения устройства, на котором велась запись EIF.
- Если воспроизведение стабильно: сцена сама по себе пригодна для локализации, проблема может быть в вашем приложении, например, в перегреве или троттлинге устройства в реальном времени.
Шаг третий: проверка внутренней логики приложения
Обновление позиции (Pose):
- Не применяете ли вы излишнее сглаживание данных позиции (например, чрезмерный
LerpилиSmoothDamp), что может вызвать задержку и ощущение дрифта. - Как правило, использование исходного Pose, возвращаемого Mega, обеспечивает максимальную стабильность.
- Не применяете ли вы излишнее сглаживание данных позиции (например, чрезмерный
Согласование систем координат:
- Убедитесь, что иерархия узлов вашего виртуального объекта, сцены камеры,
MegaTrackerи т.д. настроена правильно, и вы не изменяли значенияlocal transformсамих узлов внутриMegaBlocks. - Ошибки в настройке узлов приводят к некорректному преобразованию координат, вызывая непредсказуемое поведение при рендеринге контента.
- Убедитесь, что иерархия узлов вашего виртуального объекта, сцены камеры,
Особое замечание: проблема визуального наложения на OST-шлемах
После проверки логики локализации и рендеринга, если вы используете OST (оптически прозрачный) шлем, необходимо учесть особый случай.
Даже при хороших 6DoF возможностях трекинга устройства, иногда может возникать проблема «неидеального» наложения виртуальных объектов на физическое пространство. Обычно это не неисправность сервиса локализации Mega, а присущее OST-устройствам явление, вызванное их оптикой, например, погрешностью оптического выравнивания или калибровки под пользователя.
Подробное объяснение и методы диагностики таких проблем см. в разделе Особенности OST-устройств.
Итог и лучшие практики
После проведенной диагностики вы, вероятно, определили корневую причину дрифта или подпрыгивания контента. Для быстрого обзора и принятия мер мы суммировали типичные симптомы, возможные причины и рекомендации в таблице ниже. Сопоставьте ваши результаты диагностики с соответствующим решением в таблице.
| Тип проблемы | Возможная причина | Рекомендация |
|---|---|---|
| Незначительный джиттер | Шум сенсоров, предел алгоритмов | Незначительный джиттер — норма, обычно не требует внимания |
| Дрифт после быстрого движения | Задержка SLAM, коррекция алгоритма | Рекомендовать пользователю плавные движения. Если быстрое восстановление невозможно — требует внимания |
| Устойчивый сильный дрифт | Сбой SLAM, различия устройств | Провести кросс-тест на другом устройстве |
| Сильное подпрыгивание/мерцание | Путаница в сцене, непригодность для локализации | Задать вспомогательные априорные данные или направить пользователя |
| Несоответствие позиции относительно реальных объектов | Ошибка локализации/карты, ошибка в коде | Тестировать с разных ракурсов, наблюдать позицию виртуального объекта, исправить возможные ошибки кода |
Если после всех шагов диагностики и исправлений проблема сохраняется, пожалуйста, соберите детальный отчет с записью экрана, EIF-данными и логами и отправьте его нам через форму Отчет о проблеме.