Table of Contents

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

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

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

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

Пакет расширения EasyAR Unity для гарнитур - это Unity package, содержащий набор кода и примеров, которые помогают использовать функции 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

На схеме показаны два типичных способа поддержки гарнитур: подключение SDK устройства через пакет расширения Unity для гарнитур (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 package, содержащим runtime-скрипты, editor-скрипты и расширенные sample; вы или EasyAR можете распространять его конечным пользователям.
Совет

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

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

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

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

  • Большинство функций EasyAR Sense можно использовать на вашем устройстве, и они будут использовать возможности отслеживания движения вашего устройства.
  • Облачные сервисы EasyAR, поддерживаемые внутри EasyAR Sense, можно использовать на вашем устройстве.
  • Можно использовать только EasyAR XR license. License персональной, профессиональной и классической версий нельзя использовать на вашем устройстве.
  • Все ограничения EasyAR license при использовании пользовательской камеры тем же образом применяются к вашему устройству.

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

Это расширение не может использоваться без 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 по-прежнему недоступны:

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

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

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

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

Важно

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

Важно

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

Необходимые знания и состав команды

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

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

Если вы работаете в Unity, вам также нужно знать:

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

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

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

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