Пакет расширения EasyAR Unity для гарнитур
В этом документе представлены понятия, границы возможностей и базовые знания, необходимые для создания пакета расширения EasyAR Unity для гарнитур.
Перед началом
- Прочитайте поддержку гарнитур в EasyAR, чтобы узнать, какие типы гарнитур уже поддерживаются EasyAR и какие функции EasyAR могут работать на гарнитурах.
- Прочитайте поддержку гарнитур 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> Library "]
space
space
DeviceB["Device B<br> Library "]
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 на устройстве потребуют, чтобы вы или ваша команда были специалистами в следующих областях:
- физическая структура и система рендеринга вашего устройства
- геометрия системы камер
- разработка SDK
- обычные навыки Android debug, например adb (материковый Китай, международная версия)
Если вы работаете в Unity, вам также нужно знать:
- основы разработки Unity и использование package
- разработка Unity package
- основы языка C#, включая IDisposable и т. д.
Кроме того, знания в следующих областях помогут лучше понять систему, особенно то, как отправлять корректные данные в EasyAR:
- разработка Android (материковый Китай, международная версия)
- геометрическое зрение, особенно сопоставление изображений и 3D-реконструкция
Следующие шаги
В следующих статьях вы узнаете полный процесс создания пакета расширения для гарнитур:
- Поддержка EasyAR на гарнитуре описывает, как использовать шаблон для создания нового пакета расширения для гарнитур и завершить базовую разработку входного расширения
- Проверка запуска (bring-up) описывает, как проверить корректность входного расширения на устройстве
- Публикация пакета расширения описывает, как упаковать и распространить пакет расширения для гарнитур конечным пользователям