Table of Contents

Диагностика и исправление: проблема отображения контента в приложении

«Я вижу реальный мир, но виртуальный контент не появляется». Это одна из наиболее распространенных проблем в AR-разработке. Эта проблема может возникнуть на различных этапах, начиная от самого Mega-позиционирования и заканчивая вашей рендеринговой логикой.

В этой статье мы поможем вам системно проверить и решить эту проблему.

Процесс проверки: от внешнего к внутреннему

Следуя принципу «сначала внешнее, потом внутреннее», вы можете эффективно определить проблему. Пожалуйста, выполните следующие шаги в указанном порядке:

Шаг 1: Проверка статуса Mega-позиционирования с помощью внешних инструментов (без изменения кода)

Перед тем, как углубиться в код вашего приложения, убедитесь, что сам сервис Mega-позиционирования работает корректно. Это самый важный шаг, который поможет вам определить, является ли проблема связанной с Mega-позиционированием или с интеграцией рендеринга и других аспектов разработки приложения.

  1. Использование Mega Toolbox (мобильная версия)

    • Установите Mega Toolbox App на вашем тестовом телефоне (если он еще не установлен).
    • Откройте приложение и перейдите в Инструмент проверки и диагностики на месте.
    • Войдите в свою учетную запись и выберите ту же базу позиционирования, которая используется в вашем приложении.
    • Принесите телефон в то же место, где в вашем приложении контент не отображается.
    • Обратите внимание на результаты:
      • Если Toolbox успешно определил позицию (на экране отображается статус Found): Поздравляем! Сервис Mega-позиционирования работает корректно. Проблема находится внутри вашего приложения, особенно в рендеринге и логике отображения контента. Перейдите к Шагу 2.
      • Если Toolbox не смог определить позицию (на экране отображается статус NotFound или другой): Проблема связана с самим сервисом позиционирования. Пожалуйста, обратитесь к следующему разделу для более глубокого анализа.
  2. Использование симуляции на ПК (если были собраны данные EIF)

    • Если вы уже записали данные EIF для этого сценария, вы можете воспроизвести эти данные в Unity Editor на ПК с помощью инструмента session.
    • Обратите внимание на результаты:
      • Если при воспроизведении позиция была успешно определена (на экране отображается статус Found): Проблема находится в вашем коде приложения или в специфической среде устройства.
      • Если при воспроизведении позиция не была определена (на экране отображается статус NotFound или другой): Проблема связана с самим сервисом позиционирования. Пожалуйста, обратитесь к следующему разделу для более глубокого анализа.

Шаг 2: Проверка рендеринга и логики контента внутри приложения

Если на Шаге 1 было установлено, что сервис Mega-позиционирования работает корректно, то проблема находится в коде вашего приложения. Пожалуйста, проверьте следующие аспекты:

  1. Расположен ли контент в правильном узле:

    • Правильно ли вы разместили 3D-объекты под автоматически сгенерированным узлом MegaBlocks > Block_*?
    • Проверьте иерархическую связь между контентом и узлом Block, чтобы убедиться, что виртуальный контент рендерится в правильном месте во время выполнения.
  2. Корректно ли настроен корневой узел Block в MegaTracker:

    • Разверните AR Session и проверьте, является ли Block Root в Mega Tracker узлом MegaBlocks, сгенерированным инструментом.
  3. Был ли изменен узел MegaBlocks:

    • Убедитесь, что вы не изменили имя узла Block_* и не изменили никакие значения в свойстве local transform.
  4. Корректно ли настроено прослушивание событий:

    • Вы не изменили ли логику обработки обратного вызова позиционирования в MegaTracker?
    • Ваш код выполняет ли операцию инстанцирования или отображения виртуального контента только после того, как было вызвано событие успешного статуса позиционирования?
  5. Рендеринг и прозрачность на головном устройстве:

    • Не перекрывает ли ваш виртуальный объект другой объект? Проверьте очередь рендеринга и шейдер.
    • Если вы используете устройство VST (видеопрозрачность), проверьте, правильно ли ваш рендеринг наложен на видеопоток.
    • Если вы используете устройство OST (оптическая прозрачность), проверьте, не затрудняет ли слишком сильный окружающий свет видимость контента.
  6. Проблемы с самим контентом:

    • Есть ли проблемы с самим префабом (Prefab), который вы инстанцируете? Например, отсутствие файла модели, ошибка шейдера, масштаб 0 и т.д. Попробуйте вручную разместить такой же объект в сцене и посмотрите, отображается ли он корректно.

Анализ распространенных причин неудачного позиционирования и рекомендации по улучшению

Если на Шаге 1 вы обнаружили, что Mega Toolbox также не может определить позицию, то необходимо внимательно рассмотреть и решить проблему с позиционированием. Ниже приведены распространенные причины и соответствующие меры:

  • Причина 1: Несовпадение карты и окружающей среды
    Сцена на месте изменилась значительно по сравнению с моментом сбора данных для создания карты, или область, в которой вы проводите испытания, не была охвачена при сборе данных, или карта сама по себе является ошибочной.
    Рекомендации по улучшению:

    • Убедитесь, что карта, загруженная в вашей базе позиционирования, соответствует текущему физическому пространству.
    • Если окружающая среда была изменена (например, ремонт, замена экспозиции), необходимо заново собрать данные и создать карту.
    • Если при сборе данных для создания карты не была охвачена область, где возникла проблема, необходимо обновить данные и создать новую карту.
  • Причина 2: Плохая инициализация окружающей среды
    Запуск приложения в области с малым количеством текстур (например, на однотонной стене, направленной на пол).
    Рекомендации по улучшению:

    • Подсказывайте пользователям запускать приложение в области с большим количеством текстур, чтобы помочь системе быстро выполнить начальную позиционирование.
    • В интерфейсе приложения дайте четкие инструкции, например, «Поднимите телефон и осмотритесь вокруг».
  • Причина 3: Проблемы с сетью или сервисом
    Задержка в сети приводит к истечению времени ожидания запроса к сервису позиционирования, или сервис позиционирования сам по себе имеет сбои, или достигнут предел одновременного использования. В последнем случае обратитесь к нам с сообщением об ошибке.

  • Причина 4: Достижение границ алгоритма
    Mega-позиционирование основано на передовых алгоритмах компьютерного зрения, ИИ и других технологиях, но оно не является универсальным и имеет определенные границы возможностей алгоритма. Если в определенных сценариях или точках позиционирование постоянно не удается, вы можете отправить нам видеозапись, записи данных EIF и другие сведения, чтобы помочь нам постоянно улучшать и обновлять алгоритмы.

Кроме того, необходимо особо отметить, что Mega-позиционирование требует определенного времени, обычно около 1-2 секунд. Учитывая сложность реальных сценариев, таких как задержки в сети, высокая загрузка, снижение частоты процессора из-за нагрева телефона и другие факторы, это время может быть больше. Поэтому в приложении можно создать четкий интерфейс загрузки/ожидания, чтобы сообщить пользователям, что «Позиционирование в процессе...», и избежать ситуаций, когда пользователи могут подумать, что сервис не работает или не может определить позицию из-за ожидания.

Примечание
  • Первое позиционирование обычно занимает больше времени, чем последующие, так как система должна загрузить соответствующий контент после успешного первого позиционирования. Это нормальное явление.
  • Быстрое перемещение устройства может привести к потере позиции. Подсказывайте пользователям перемещать устройство плавно.

Итоги и рекомендации

  • Всегда используйте внешние инструменты для предварительной проверки: Это позволяет максимально быстро сузить область поиска проблемы до «позиционирования» или «рендеринга».
  • Создавайте правильные ожидания у пользователей: С помощью подсказок в интерфейсе приложения сообщайте пользователям, что позиционирование требует времени, и направляйте их в подходящую среду.
  • Уделяйте внимание логике контента: Убедитесь, что настройки привязки контента и другие параметры корректны.
  • Используйте логирование: Выводите логи на важных этапах (например, при вызове события, получении положения, статусе ответа), это поможет вам быстро определить проблемы в логике кода.

С помощью данной систематической проверки вы должны быть в состоянии решить большинство проблем с «отсутствием отображения контента». Если проблема все еще существует, подготовьте данные EIF и логи и отправьте нам подробный отчет с помощью отчета о проблеме.