Приложение концептуально очень простое и следует стандартному конвейеру ARCore:
- Рендеринг фона камеры
- Визуализация характерных точек
- Обнаружение плоскости
- Нажмите, чтобы разместить две точки и измерить расстояние
Однако я столкнулся с серьезной проблемой трудно диагностируемая нестабильность отслеживания, которую мне не удалось устранить, несмотря на несколько дней отладки.
При запуске приложения:
Инициализация сеанса ARCore
Отслеживание переходов из режима ПАУЗА → ОТСЛЕЖИВАНИЕ
Появляются функциональные точки
Плоскости обнаруживаются последовательно
Фактическое поведение (проблема)
Поведение случайное и недетерминированное:
- При холодном запуске приложение часто зависает в
TrackingState.PAUSED на неопределенный срок - Самолеты не обнаружены
- Функциональные точки минимальны или отсутствуют
- Иногда приложение отправляется в фоновый режим, а затем разблокируется на переднем плане отслеживание
- Отслеживание переходов в режим ОТСЛЕЖИВАНИЕ
- Появляются характерные точки и плоскости
- Даже когда оно разблокируется, отслеживание нестабильно:
- Быстрое мигание между ОТСЛЕЖИВАНИЕМ и ПАУЗОЙ
- Эта нестабильность препятствует надежному обнаружению плоскости
- Измерения AR становятся непригодными
- Журналы отображаются быстро чередование:
ОТСЛЕЖИВАНИЕ → ПАУЗА → ОТСЛЕЖИВАНИЕ → ПАУЗА
Жизненный цикл ARCore
- Session.configure() вызывается до session.resume()
- session.resume() и session.pause() в потоке пользовательского интерфейса
- session.update() вызывается из потока GL/render
- Нет одновременных вызовов резюме() / пауза()
- Текстура камеры (setCameraTextureName) устанавливается один раз, после создания контекста GL.
- Нет повторных вызовов для каждого кадра.
- Больше нет проблем с черным экраном.
- Проверено. оба:
- Config.UpdateMode.BLOCKING
- Config.UpdateMode.LATEST_CAMERA_IMAGE
- Нет изменений в поведении
- Проверки попадания отключены, пока отслеживание ПРИОСТАНОВЛЕНО
- Логика рендеринга не требует принудительного обновления во время ПАУЗЫ
- Мерцание не вызвано отрисовкой условий
- Похожие приложения (например, AR Ruler) работают хорошо
- Происходит при нескольких запусках на одном устройстве
- Одинаковое освещение и среда
- ARCore установлен и запущен на сегодняшний день
- Разрешения камеры предоставлены правильно
На данный момент удобство использования приложения поставлено под угрозу из-за случайного отслеживания сбоев и нестабильности запуска, и у меня заканчиваются гипотезы.
Любая информация от разработчиков с глубоким опытом работы с ARCore будет чрезвычайно признательна.
Я могу загрузить каждый исходный файл код
Подробнее здесь: https://stackoverflow.com/questions/798 ... background
Мобильная версия