Table of Contents

Движение отслеживания центра в Unity AR — XR Origin

XR Origin — это ключевая концепция для функции отслеживания движения в Unity. В современных AR-приложениях отслеживание движения постепенно становится необходимой функцией. Благодаря отслеживанию движения приложение может понимать положение и ориентацию пользователя в реальном мире без использования других маркеров, что позволяет создавать иммерсивные AR-впечатления. Ниже вы узнаете об основных концепциях, составе и жизненном цикле XR Origin, а также о том, когда его необходимо использовать.

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

  • Ознакомьтесь с основными концепциями, составом и рабочим процессом сессии в Введении в ARSession.

Что такое XR Origin

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

В этом видео показана простая AR-сцена, в которой работает только отслеживание движения. Слева представлено окно Hierarchy, в центре — Scene, справа — Game. Видео записано в режиме Play редактора Unity с использованием симулированных данных. Содержимое окна Game соответствует тому, что пользователь видит в реальном мире на своем телефоне.

Можно заметить, что в этом видео положение XR Origin (синяя сфера) в сцене фиксировано, в то время как камера, представляющая пользователя (значок камеры), перемещается в соответствии с движением пользователя в реальном мире. Белые конусы фиксируют траекторию положения и ориентации камеры за прошедший период времени, что помогает лучше понять движение камеры в сцене. Видно, что эти белые конусы создаются под узлом XR Origin, что является типичной структурой организации объектов в подобных сценах.

В системе отслеживания движения Unity камера обычно следует за XR Origin. Хотя камера не обязательно является дочерним узлом XR Origin, AR Session будет вычислять положение камеры на основе положения XR Origin, чтобы гарантировать соответствие между тем, что видит пользователь, и реальным миром.

В этом видео показана та же сцена, но на этот раз мы переместили XR Origin (синюю сферу) во время выполнения. Видно, что после перемещения XR Origin камера следует за ним, а содержимое окна Game не изменилось.

В реальных AR-сценах эти отношения движения несколько сложнее.

Поведение XR Origin в различных режимах центра

В Unity все точки отсчета для AR-отслеживания называются центром сессии, а правила, определяющие этот центр во время работы сессии, называются режимами центра. В разных режимах центра поведение XR Origin различается:

  • В режиме центра SessionOrigin XR Origin можно свободно перемещать.

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

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

  • В других режимах центра (например, FirstTarget) XR Origin нельзя свободно перемещать.

    Обычно режим FirstTarget используется в сценах без отслеживания движения или при одновременной работе других AR-функций с отслеживанием движения.

    В этом режиме положение XR Origin определяется AR-функцией, поэтому его нельзя произвольно перемещать.

Подробнее о режимах центра и способах движения объектов в сцене можно узнать здесь: Режимы центра.

Формы и состав XR Origin

EasyAR поддерживает две различные формы XR Origin:

  • XR Origin, предоставляемый EasyAR
  • XR Origin, предоставляемый фреймворком Unity XR

XR Origin (EasyAR)

Типичная структура XR Origin выглядит следующим образом:

alt text

Корневой узел XR Origin — это пустой GameObject, который может иметь один или несколько дочерних узлов XR Origin Child. XR Origin Child содержит компонент XROriginChildController, который выступает в качестве прокси для логики управления XR Origin.

При работе сессии, если в сцене отсутствует корректная структура XR Origin, XR Origin и один XR Origin Child будут созданы автоматически. Во время выполнения XR Origin Child будет привязан к тому же положению и ориентации, что и XR Origin.

Объекты, сгенерированные сессией, такие как облако точек разреженной пространственной карты или сетка плотного пространственного картирования, создаются под узлом XR Origin Child.

В этом видео показан эффект одновременной работы плотного пространственного картирования с отслеживанием движения в той же сцене. Видно, что сгенерированная сетка создается под узлом XR Origin Child.

Примечание: Для упрощения понимания генерация карты глубины отключена, поэтому содержимое окна Scene в видео будет отличаться от фактического отображения во время выполнения. Эффект отображения в окне Game аналогичен случаю с отключенной прозрачностью mesh.

[Опционально] XR Origin (Unity XR)

При необходимости можно использовать компонент XR Origin, предоставляемый фреймворком Unity XR.

При использовании XR Origin от Unity XR типичная структура выглядит следующим образом:

alt text

В сценах с гарнитурами типичная структура такова:

alt text

Корневой узел XR Origin — это GameObject, созданный и поддерживаемый фреймворком Unity XR. Он может иметь один или несколько дочерних узлов XR Origin Child. XR Origin Child содержит компонент XROriginChildController, выступающий прокси для логики управления XR Origin.

При работе сессии, если в сцене отсутствует корректная структура XR Origin Child, он будет создан автоматически. Во время выполнения XR Origin Child будет привязан к тому же положению и ориентации, что и XR Origin.

XR Origin от фреймворка Unity XR в основном предоставляет поддержку для двух случаев:

  • Вы уже используете AR Foundation в своем проекте и хотите, чтобы он работал одновременно с EasyAR или переключался между ними в зависимости от поддержки устройств.
  • Используемый вами SDK для гарнитур использует компонент XR Origin, предоставляемый фреймворком Unity XR.
Примечание

Когда основной пакет Unity XR com.unity.xr.core-utils не импортирован в проект, и камера в сцене находится в той же иерархии, что и XR Origin, предоставляемый фреймворком Unity XR (камера и родительский узел с именем Camera Offset), сессия предположит, что эта структура создана фреймворком Unity XR, и будет использовать ее. Это сделано для обеспечения максимальной совместимости сцен: сцены, созданные с помощью AR Foundation, будут продолжать работать (хотя сам AR Foundation не будет функционировать без импорта в проект), а остальные AR-функции останутся работоспособными. За исключением функций, предоставляемых исключительно AR Foundation, это даже не влияет на функциональность и совместимость устройств всего AR-приложения.

Большинство примеров сцен EasyAR используют этот подход, чтобы гарантировать работу без AR Foundation и демонстрировать возможности совместной работы при его наличии.

В определении AR Foundation его XR Origin является центром отслеживаемого пространства в XR-сцене. Однако важно отметить, что в концепции AR Foundation отслеживание движения считается обязательной функцией, и описанное отслеживание в XR-сцене — это именно отслеживание движения.

В системе EasyAR отслеживание движения является опциональной функцией, поэтому XR Origin также опционален. XR Origin создается и используется только при включенной функции отслеживания движения.

Жизненный цикл XR Origin

Жизненный цикл XR Origin зависит от сессии. При запуске сессии XR Origin выбирается или создается (если в сцене отсутствует корректная структура XR Origin). При остановке сессии XR Origin остается на месте до использования следующей сессией или до ручного удаления.

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

Создание

Управление выполнением

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