Table of Contents

Поддержка EasyAR для шлемов

В этой статье объясняется, как использовать шаблон пакета расширения для шлемов в EasyAR Sense Unity Plugin, чтобы разработать пакет расширения EasyAR для устройств типа шлемов.

Перед началом

Перед тем как переходить к разработке, сначала нужно понять, как использовать EasyAR Sense Unity Plugin.

  • Быстрый старт
  • Запустите пример AR Session, пример отслеживания изображений ImageTracking_Targets и пример плотной пространственной карты SpatialMap_Dense_BallGame; их поведение на телефоне и на шлеме похоже.

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

Кроме того, нужно быть знакомым с разработкой package в Unity.

Подготовка устройства для AR/MR

  • Подготовить систему отслеживания движения/VIO

    Убедитесь, что ошибка отслеживания устройства находится под контролем. Некоторые функции EasyAR, например Mega, могут в некоторой степени уменьшать накопленную ошибку устройства, но большая локальная ошибка также сделает алгоритмы EasyAR нестабильными. Обычно мы ожидаем, что дрейф VIO будет в пределах 1‰.

  • Подготовить систему отображения

    Убедитесь, что когда виртуальный объект того же размера и с тем же контуром, что и реальный объект, помещается в виртуальный мир, а его относительное преобразование с виртуальной камерой такое же, как преобразование между соответствующим реальным объектом и устройством в реальном мире, виртуальный объект может отображаться точно на реальном объекте, и перемещение устройства или поворот головы не нарушает эффект отображения. Можно ориентироваться на эффект Vision Pro.

  • Подготовить SDK устройства

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

Использование шаблона пакета расширения для шлемов

Импортируйте EasyAR Sense Unity Plugin (package com.easyar.sense) через окно Package Manager в Unity, используя установку из локального tarball-файла. Распакуйте шаблон расширения для шлемов (package com.easyar.sense.ext.hmdtemplate) в каталог Packages проекта Unity и переименуйте папку Samples~ в Samples.

После этого должна быть видна такая структура каталогов:

.
├── Assets
└── Packages
    └── com.easyar.sense.ext.hmdtemplate
        ├── CHANGELOG.md
        ├── Documentation~
        ├── Editor
        ├── LICENSE.md
        ├── package.json
        ├── Runtime
        └── Samples
            └── Combination_BasedOn_HMD
Совет

При необходимости можно использовать любой разрешённый Unity способ, чтобы импортировать EasyAR Sense Unity Plugin и разместить шаблон расширения для шлемов.

Если шаблон не используется, можно также обратиться к руководству Unity по созданию пользовательских package, чтобы создать новый package.

Если SDK устройства не организован как package Unity, нужно распаковать шаблон расширения для шлемов в папку Assets проекта Unity, а затем удалить из распакованных файлов package.json и любые файлы с расширением .asmdef. Учтите, что в таком режиме пользователи, совмещающие SDK устройства и EasyAR, не смогут получить разумную зависимость по версиям.

Завершение расширения входных данных времени выполнения

Следуя методу создания расширения ввода для данных движения устройства и изображения, измените Runtime/HMDTemplateFrameSource.cs и завершите входное расширение, подходящее для шлема. Это основная работа по разработке пакета расширения.

Завершение меню редактора

Измените строку "HMD Template" в классе MenuItems на имя устройства. Если нужны другие пользовательские функции редактора, можно добавить и другие скрипты.

Когда разработчик выберет AR Session (EasyAR) в окне Hierarchy и щёлкнет правой кнопкой мыши, появятся следующие пункты меню:

  • EasyAR Sense > Extensions > Frame Source : [Device Name]: добавляет источник кадров этого устройства в текущую session.
  • EasyAR Sense > Extensions > Frame Source : [Device Name (keep it only)]: добавляет источник кадров этого устройства в текущую session и оставляет только один.

alt text

Завершение примера приложения

Пример находится в Samples/Combination_BasedOn_HMD. Для простоты в шаблоне примера нет кода; все AR-функции можно завершить только содержимым сцены и настройками.

  1. Добавьте в сцену содержимое, поддерживающее запуск на устройстве.

    Совет

    При необходимости можно сделать и наоборот: взять сцену, которая может запускаться на устройстве, а затем добавить в неё компоненты EasyAR и другие объекты из сцены примера.

  2. Измените объекты, предназначенные для размещения под origin session.

    Если в сцене определён origin session, переместите EasyARPanda и UI под узел origin.

    alt text

    EasyARPanda даст ориентир по поведению отслеживания движения устройства, что помогает понять причину нестабильного трекинга.

    Текст в скобках в именах этих объектов предназначен как подсказка для разработчика расширения и может быть удалён:

    • (Move into Origin if there is any)
    • (Move into Origin if there is any, set constraint source to your rendering camera)
  3. Настройте поведение кнопки HUD.

    Установите constraint source для UI на виртуальную камеру, чтобы кнопки HUD работали как ожидается.

    alt text

  4. Настройте функцию raycast у Canvas.

    Измените Canvas под узлом UI, чтобы raycast работал и все кнопки и переключатели UI работали как ожидается.

    В шаблоне уже заранее добавлен Tracked Device Graphic Raycaster из XR Interaction Toolkit под узлом Canvas; после импорта соответствующего package его будет видно.

    alt text

    Если при запуске на устройстве вы не используете XR Interaction Toolkit, появится предупреждение о пропавшем скрипте, как показано ниже; его можно удалить и добавить нужный устройству компонент raycaster.

    alt text

Следующие шаги

Связанные темы