Table of Contents

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

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

Это руководство поможет систематически выявить и решить проблему.

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

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

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

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

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

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

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

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

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

  1. Правильно ли размещен контент в иерархии:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итог и лучшие практики

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

Следуя этой систематической диагностике, вы сможете решить подавляющее большинство проблем с "неотображающимся контентом". Если проблема сохраняется, подготовьте EIF-данные и логи и отправьте подробный отчет через форму Сообщения о проблеме.