Table of Contents

Поддержка гарнитур в EasyAR

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

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

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

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

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

Кроме того, необходимо быть знакомым с разработкой пакетов Unity.

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

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

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

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

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

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

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

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

Используйте Package Manager window Unity для установки плагина из локального tarball-файла и импорта EasyAR Sense Unity Plugin (пакет com.easyar.sense). Распакуйте шаблон расширения для гарнитур (пакет 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 по созданию пользовательских пакетов для создания нового пакета.

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

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

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

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

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

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

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

alt text

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

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

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

    Совет

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

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

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

    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 функционируют как ожидается.

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

    alt text

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

    alt text

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

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