Table of Contents

EasyAR Unity расширение для гарнитуры

В этом документе описывается концепция расширения EasyAR Unity для гарнитуры, его границы возможностей и необходимая предварительная информация для создания такого расширения.

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

Что такое EasyAR Unity расширение для гарнитур

EasyAR Unity расширение для гарнитур — это Unity-пакет, содержащий набор кода и примеров, помогающий использовать функциональность EasyAR Sense на ваших гарнитурах. С помощью этого расширения вы можете интегрировать большую часть функций EasyAR Sense (таких как отслеживание изображений, плотные пространственные карты и т.д.) в ваше устройство, используя мощные AR-возможности, предоставляемые EasyAR.

Использование EasyAR Unity расширения для гарнитур — один из способов поддержки гарнитур в EasyAR. На диаграмме ниже показана общая архитектура EasyAR в Unity и место расширения для гарнитур в ней.

block
  columns 4
  block:groupApp:4
    block:groupAppWrapper
      space
      App1["EasyAR + Device A<br>App"]
      space
      App2["EasyAR<br>App"]
      space
      App3["EasyAR + Device B<br>App"]
    end
  end
  
  block:groupSensePluginExtension
    columns 1
    SensePluginExtension["EasyAR Sense Unity Plugin<br>Extension for Device A"]
    space
  end
  block:groupSensePlugin
    columns 1
    SensePlugin["EasyAR Sense Unity Plugin"]
    space
  end
  block:groupXRI
    columns 1
    XRI["XR Interaction Toolkit"]
    space
  end
  block:groupARF
    columns 1
    ARF["AR Foundation"]
    space
  end
  
  block:groupDeviceAUnity
    columns 1
    DeviceAUnity["Device A<br>Unity SDK"]
    space
  end
  block:groupSense
    columns 1
    Sense["EasyAR Sense"]
    block:groupSenseWrapper
      MDeviceB["Device B<br>CameraDevice"]
      Others["..."]
    end
  end
  block:groupXRSubsystem:2
    columns 1
    XRSubsystem["XR Subsystems"]
    XRSDK["Unity XR SDK"]
  end

  block:groupSystem:4
    columns 1
    System["Native Library"]
    block:groupSystemWrapper
      space
      DeviceA["Device A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      space
      DeviceB["Device B<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
    end
  end
  
  SensePluginExtension --> App1
  SensePlugin --> App1
  SensePlugin --> App2
  SensePlugin --> App3
  ARF --> App3
  XRI --> App1
  XRI --> App3
  groupSense --> SensePlugin
  groupDeviceAUnity --> SensePluginExtension
  SensePlugin --> SensePluginExtension
  DeviceA --> groupDeviceAUnity
  DeviceA --> XRSDK
  XRSubsystem --> ARF
  XRSubsystem --> XRI
  DeviceB --> MDeviceB
  DeviceB --> XRSDK
  
  style groupApp fill:none,stroke:none,stroke-width:0px
  style groupAppWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePlugin fill:none,stroke:none,stroke-width:0px
  style groupARF fill:none,stroke:none,stroke-width:0px
  style groupXRI fill:none,stroke:none,stroke-width:0px
  style DeviceAUnity fill:none,stroke:none,stroke-width:0px
  style Sense fill:none,stroke:none,stroke-width:0px,color
  style groupSenseWrapper fill:none,stroke:none,stroke-width:0px
  style XRSubsystem fill:none,stroke:none,stroke-width:0px
  style System fill:none,stroke:none,stroke-width:0px
  style groupSystemWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePluginExtension fill:none,stroke:none,stroke-width:0px  

  classDef EasyAR fill:#6e6ce6,stroke:#333,color:#fff
  class SensePluginExtension EasyAR

На диаграмме показаны два типичных способа поддержки гарнитур: интеграция через Unity расширение для гарнитур с SDK устройства (Device A) и прямая интеграция SDK устройства в библиотеку EasyAR Sense (Device B). В этом документе основное внимание уделяется первому способу.

Можно ли создать собственный пакет расширения для гарнитуры?

В настоящее время в индустрии AR/VR/MR/XR еще не сформировалось единого решения для интерфейсов. Хотя OpenXR является хорошим кандидатом, эволюция спецификаций и их реализация в отрасли требуют времени. Поэтому обычно не так просто запустить EasyAR напрямую на коммерчески доступных устройствах; высока вероятность отсутствия необходимых интерфейсов данных. По мере развития отрасли некоторые новые устройства также могут обладать хорошей поддержкой интерфейсов. Например, в 2024 году Apple открыла соответствующие интерфейсы для Vision Pro, которых уже достаточно для работы EasyAR, хотя их использование все же требует определенных профессиональных знаний.

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

Если вы являетесь производителем оборудования и хотите обеспечить поддержку функций EasyAR на вашем устройстве, вы можете обратиться к следующей документации, чтобы создать пакет расширения для гарнитуры. Это позволит запустить большую часть функций EasyAR на вашем устройстве. Настоящий документ предоставляет спецификации данных и интерфейсов, не ограничивая при этом все детали реализации. Любые способы реализации или определения интерфейсов могут быть обсуждены; приглашаем к обсуждению через коммерческие каналы связи.

Оборудование, охватываемое настоящим документом, должно само обладать возможностями отслеживания движения или SLAM. Функции EasyAR требуют работы на основе хороших возможностей отслеживания устройства. Обычно не рекомендуется полагаться на функции EasyAR для оптимизации отслеживания устройства, так как это создаст циклическую зависимость, что теоретически увеличит погрешность и приведет к нестабильности системы в целом. Если само устройство не имеет возможности отслеживания движения, то схема поддержки не входит в сферу охвата настоящего документа. При необходимости свяжитесь через коммерческие каналы.

Возможности пакета расширения для гарнитуры

Цель пакета расширения для гарнитуры — обеспечить работу большей части функционала EasyAR Sense на вашем устройстве. Для достижения этой цели вам необходимо понимать границы возможностей пакета расширения для гарнитуры.

Что входит в пакет расширения гарнитуры

Реализуемое вами расширение включает:

  • Код, использующий Пользовательские функции камеры для захвата данных из API вашего устройства и их передачи в EasyAR Sense.
  • В Unity, пакет расширения гарнитуры использует Источник внешних кадров и поток данных EasyAR Sense, определенный плагином EasyAR Sense Unity Plugin, для упрощения разработки пользовательских камер.
  • В Unity, пакет расширения гарнитуры — это Пакет Unity, содержащий скрипты времени выполнения, скрипты редактора и примеры расширений. Вы или EasyAR можете распространять его среди конечных пользователей.
Совет

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

При реализации расширения вам, вероятно, потребуется:

  • Изменить дизайн интерфейса и внутреннюю реализацию вашего SDK.
  • Обсудить и согласовать с вашей командой схемы получения и использования данных.
  • Потратить значительное количество времени на проверку корректности данных, а не на написание кода.

После завершения работы над расширением вы получите:

  • Возможность использования большинства функций EasyAR Sense на вашем устройстве, использующих его возможности трекинга движений.
  • Возможность работы поддерживаемых EasyAR облачных сервисов внутри EasyAR Sense на вашем устройстве.
  • Возможность использования только лицензии EasyAR XR. Лицензии Personal, Professional и Classic на вашем устройстве работать не будут.
  • Все ограничения лицензий EasyAR при использовании пользовательской камеры применяются к вашему устройству аналогичным образом.

Что не входит в пакет расширения для гарнитуры

Это расширение не может использоваться отдельно от EasyAR Sense:

  • Это расширение для гарнитуры не работает самостоятельно; как зависимость, EasyAR Sense также необходим. В Unity необходимо использовать EasyAR Sense Unity Plugin.
  • Оно не вызывает напрямую API облачных сервисов EasyAR (например, службу локализации EasyAR Mega); эти вызовы выполняются внутри EasyAR Sense.
  • В Unity, оно не вызывает напрямую интерфейсные методы функций AR (например, отслеживание изображений); они реализованы внутри EasyAR Sense Unity Plugin.
  • В Unity, оно не изменяет transform объектов сцены или отслеживаемых целей; это делается внутри EasyAR Sense Unity Plugin.

Это расширение не может использоваться отдельно от вашего SDK устройства:

  • В Unity, расширение для гарнитуры или EasyAR Sense Unity Plugin не изменяют transform камеры сцены; это должно быть реализовано в вашем SDK устройства или его зависимостях.

Через расширение для гарнитуры некоторые функции EasyAR остаются недоступными:

  • Функция отслеживания поверхностей (surface tracking) будет недоступна.
  • Собственное отслеживание движений (motion tracking) EasyAR будет недоступно.
  • Обнаружение плоскостей (plane detection, часть отслеживания движений EasyAR) будет недоступно.

Как использовать Mega на моем устройстве?

Запуск Mega на устройстве — это вопрос, волнующий многих пользователей. В Unity сервис Mega — это функциональный модуль, работающий поверх множества базовых функций EasyAR Sense. Поэтому, если ваше устройство полностью поддерживает EasyAR Sense, то Mega также будет поддерживаться.

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

Важно

Сервис Mega предъявляет определенные требования к способности устройства отслеживать движение. Если эта способность недостаточна, производительность Mega также пострадает. В крупномасштабных AR-сценах необходимо особенно внимательно относиться к разнице в производительности внутри и снаружи помещений.

Важно

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

Необходимые базовые знания и конфигурация команды

Создание пакета расширения гарнитуры — непростая задача, требующая от вас и вашей команды глубокой работы в нескольких областях. Как правило, для завершения расширения гарнитуры требуется участие разработчиков Unity, а также привлечение членов команды, не занимающихся разработкой на Unity. Из-за отсутствия стандартов, простой модификации 3D-движка обычно недостаточно для завершения расширения гарнитуры; рекомендуется привлечь инженеров по низкоуровневой разработке, таких как системные инженеры и инженеры SDK, с первого дня.

Создание устройств AR/VR требует знаний в определенных областях. Аналогично, для запуска и проверки работы EasyAR Sense на вашем устройстве потребуется, чтобы вы или ваша команда были экспертами в следующих областях:

  • Физическая структура вашего устройства и система рендеринга
  • Геометрия камерной системы
  • Разработка SDK
  • Базовые навыки отладки на Android, такие как adb (Китай, Международный)

Если вы работаете на Unity, вам также потребуется знание следующего:

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

  • Разработка под Android (Китай, Международный)
  • Геометрическое зрение, особенно сопоставление изображений и 3D-реконструкция

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

В следующих статьях Вы узнаете полный процесс создания пакета расширения гарнитуры:

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