EasyAR Unity расширение для гарнитуры
В этом документе описывается концепция расширения EasyAR Unity для гарнитуры, его границы возможностей и необходимая предварительная информация для создания такого расширения.
Перед началом
- Прочитайте Поддержка гарнитур easyar, чтобы узнать, какие типы гарнитур поддерживает easyar и какие функции easyar могут работать на гарнитурах.
- Прочитайте Поддержка гарнитур 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> 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
На диаграмме показаны два типичных способа поддержки гарнитур: интеграция через 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, вам также потребуется знание следующего:
- Основы разработки на Unity и использование пакетов
- Разработка пакетов Unity
- Основы языка C#, включая такие концепции, как IDisposable
Кроме того, знание в следующих областях поможет вам лучше понять систему, особенно то, как отправлять правильные данные в EasyAR:
- Разработка под Android (Китай, Международный)
- Геометрическое зрение, особенно сопоставление изображений и 3D-реконструкция
Следующие шаги
В следующих статьях Вы узнаете полный процесс создания пакета расширения гарнитуры:
- Поддержка EasyAR для гарнитуры рассказывает, как использовать шаблон для создания нового пакета расширения гарнитуры и завершения базовой разработки расширения ввода.
- Проверка выполнения(bring-up) рассказывает, как проверить корректность расширения ввода на устройстве.
- Выпуск пакетов расширения рассказывает, как упаковать пакет расширения гарнитуры и распространить его среди конечных пользователей.