Table of Contents

Центральный режим сессии AR

Центральный режим является ключевой концепцией в Unity AR, определяющей, какой объект выбирается в качестве точки отсчета (центральный объект) для всех отслеживаний AR во время работы сессии, а также какие объекты в сессии могут свободно перемещаться. Далее вы узнаете об основных концепциях центрального режима и его влиянии на поведение движения объектов в сцене.

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

  • Ознакомьтесь с основными концепциями, компонентами и рабочим процессом сессии в Введении в AR Session.
  • Узнайте о роли камеры в AR-сценах и о том, как сессия управляет свойствами камеры для обеспечения корректного AR-опыта в Камера.
  • Изучите основные концепции, компоненты и жизненный цикл XR Origin в XR Origin.
  • Поймите основные концепции, состояния и жизненный цикл target в Target.

Центральный объект и центральный режим

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

Чтобы гарантировать ожидаемое поведение движения объектов в сцене, сессия должна выбрать точку отсчета в качестве центра для всех отслеживаний AR. Представителем этой точки отсчета в сцене Unity является центральный объект (CenterObject). Центральный режим (CenterMode) — это правило, определяющее, какой именно объект становится центральным объектом во время работы сессии.

Центром сессии может быть один из следующих объектов:

  • Некоторый отслеживаемый target
  • XR Origin
  • Камера

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

В Unity session поддерживает следующие четыре режима центра:

Имя Схема Описание
FirstTarget

SpecificTarget
alt text Где в качестве центра используется target, который может свободно перемещаться. При этом:
  • FirstTarget использует первый отслеживаемый target в качестве центра.
  • SpecificTarget использует указанный target в качестве центра.
Камера session, XR Origin и другие target управляются session и движутся относительно центрального target.
SessionOrigin alt text Где в качестве центра используется XR Origin, который может свободно перемещаться.
Камера session и target управляются session и движутся относительно центрального XR Origin.
Camera alt text Где в качестве центра используется камера, которая может свободно перемещаться.
XR Origin и target в session управляются session и движутся относительно центральной камеры.

На схемах три объекта: синяя сфера представляет XR Origin, синий конус представляет камеру, желтое изображение представляет target. В разных режимах центра session выбирает разные объекты в качестве центрального, на рисунке показаны локальные системы координат соответствующих объектов.

Совет

Если у вас есть опыт работы с AR Foundation, вы могли заметить, что в AR Foundation нет аналогичной концепции. Фактически, поведение AR Foundation соответствует режиму центра SessionOrigin.

В session относительное движение между target и camera управляется текущей session. Относительное движение между XR Origin и camera управляется либо текущей session, либо сторонними фреймворками (например, AR Foundation). Режимы центра гарантируют, что в различных средах выполнения session сможет корректно управлять движением объектов в сцене.

Например, если AR Foundation или SDK гарнитуры на основе Unity XR управляют относительным движением XR Origin и camera, то XR Origin (как элемент дизайна фреймворка Unity XR) может перемещаться под управлением session, а camera — нет. В этом случае session ограничит режимы центра до FirstTarget, SpecificTarget или SessionOrigin. Таким образом, для session центром будет XR Origin или какой-либо target, а для фреймворка Unity XR центром останется XR Origin, и вся система будет работать корректно.

Предупреждение

В Unity AR любой объект, существующий в мировой системе координат Unity и не имеющий скорректированного transform компонентом session, может отображаться некорректно. Поскольку session регулирует положение и ориентацию других объектов в сцене на основе положения и ориентации центрального объекта, любой объект, не управляемый session, может иметь положение и ориентацию, не соответствующие вычисленным session, что приведет к непредсказуемому поведению.

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

Правильный подход — всегда размещать отображаемый контент внутри узла target или внутри узла XR Origin (если контенту нужно следовать за движением XR Origin). Тогда положение и ориентация контента будут корректироваться на основе вычислений session, что обеспечит правильное наложение контента на реальный мир.

Ручное выравнивание положения и ориентации контента относительно target или XR Origin допустимо, но должно выполняться в правильный момент времени. См. Выбор подходящего режима центра.

Доступные режимы центра

Не все режимы центра доступны всегда. Session определяет, какие режимы центра действительны в текущей среде выполнения и с выбранным источником кадров (frame source), чтобы гарантировать корректное управление движением объектов в сцене. Свойство ARSession.AvailableCenterMode позволяет получить список доступных режимов центра для текущей session.

В зависимости от выбранного источника кадров (frame source), доступные режимы центра session могут различаться следующим образом:

Источник кадров (Frame source) Камера управляется Есть данные движения Есть дизайн точки отсчета Доступные режимы центра
  • CameraDeviceFrameSource
  • FramePlayer (если запись велась с source без данных движения)
  • ExternalImageStreamFrameSource
Да Нет -
  • FirstTarget
  • SpecificTarget
  • Camera
  • ARCoreFrameSource
  • AREngineFrameSource
  • ARKitFrameSource
  • InertialCameraDeviceFrameSource
  • MotionTrackerFrameSource
  • ThreeDofCameraDeviceFrameSource
  • FramePlayer (если запись велась с source с данными движения)
Да Да Да
  • FirstTarget
  • SpecificTarget
  • SessionOrigin
  • Camera (*)
* Действителен только если camera не является дочерним узлом XR Origin
  • ARCoreARFoundationFrameSource
  • ARKitARFoundationFrameSource
  • VisionOSARKitFrameSource
  • XREALFrameSource
  • ExternalDeviceFrameSource (если OriginType равен XROrigin или Custom)
    • PicoFrameSource
    • RokidFrameSource (без UXR)
Нет Да Да
  • FirstTarget
  • SpecificTarget
  • SessionOrigin
  • ExternalDeviceFrameSource (если OriginType равен None)
    • RokidFrameSource (с UXR)
Нет Да Нет
  • SessionOrigin

За исключением случая использования FramePlayer, доступные режимы центра определяются при сборке session. При использовании FramePlayer доступные режимы центра динамически определяются во время выполнения session для каждого кадра на основе наличия данных движения в выходных данных.

Характеристики различных центральных режимов

Далее мы продемонстрируем поведение движения объектов в различных центральных режимах с помощью серии примеров видео.

Содержание видео:

В реальном мире есть два отслеживаемых объекта разных типов:

  • Рождественская ёлка, которая неподвижна. Она отслеживается с помощью функции разреженного картографирования пространства.
  • Лист бумаги формата A4 с предварительно распечатанным изображением, который можно перемещать. Он отслеживается с помощью функции отслеживания изображений.

При записи видео наблюдатель (телефон) начинает движение справа сзади от ёлки и движется вокруг неё. Лист A4 раскачивается влево-вправо перед наблюдателем.

Для наглядности мы добавили различные маркеры к объектам в сцене:

  • Рождественская ёлка: при отслеживании на занимаемом ею пространстве накладывается светло-голубое облако точек. При потере отслеживания маркеры исчезают.
  • Лист A4: при отслеживании над ним накладывается панда. В Game view дополнительно отображается изображение, полностью идентичное содержимому и размеру листа A4. При потере отслеживания маркеры исчезают.
  • XR Origin: в его позиции размещён синий шар.
  • Камера: в её позиции размещён синий конус, главная ось которого совпадает с направлением взгляда камеры.

Эти видео записаны в режиме Play редактора Unity с использованием симулированных данных. Слева показан вид Scene, справа — Game. Содержимое Game view соответствует тому, что пользователь видит в реальном мире на экране телефона.

Режимы FirstTarget и SpecificTarget

Режимы FirstTarget и SpecificTarget — это режимы, где определенная цель (target) выступает в качестве центрального объекта. В этих режимах, помимо центральной цели, камера (camera) и XR Origin в сессии, а также другие цели (targets) управляются сессией и движутся относительно центральной цели как точки отсчета.

Некоторые цели в реальном мире могут перемещаться, например, лист A4 в видео.

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

Некоторые цели в реальном мире неподвижны, например, рождественская елка в видео.

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

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

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

Разница между режимами FirstTarget и SpecificTarget заключается в том, что во время работы центральная цель может меняться, но способ выбора нового центра при изменении различается. Чтобы объяснить это, необходимо учитывать процессы успешного отслеживания и потери цели.

При смене центрального объекта сессии свойство ARSession.CenterObject всегда будет отражать текущий центральный объект, но ARSession.CenterMode не изменится.

Смена центра в режиме FirstTarget

В режиме FirstTarget сессия всегда центрируется относительно первого отслеженного target. Если отслеживание этого target теряется, сессия перецентрируется. Когда сессия отслеживает или начинает отслеживать другой target, этот объект выбирается в качестве нового центра.

Перецентрирование происходит в следующих случаях:

  • В текущем кадре ни один target не находится в состоянии отслеживания.
    В этом случае, если активен режим SessionOrigin, сессия переключается в режим SessionOrigin, выбирая XR Origin в качестве центра. В противном случае сессия переключается в режим Camera, выбирая camera в качестве центра.

  • В текущем кадре есть отслеживаемый target, а в предыдущем кадре ни один target не отслеживался.
    В этом случае сессия выбирает один из отслеживаемых target в качестве центра.

  • В текущем кадре есть отслеживаемый target, а центральный target предыдущего кадра потерял отслеживание в текущем кадре.
    В этом случае сессия выбирает один из отслеживаемых target в качестве нового центра.

В видео выше изначальным центром является лист A4, отслеживаемый через Image Tracking. Видно, что когда отслеживание листа (панда) теряется, сессия перецентрируется. В этот момент новым центром становится ёлка (голубая точка), а при повторном появлении листа A4 он не становится центром, так как центром уже является ёлка.

Изменение центра в режиме specifictarget

В режиме SpecificTarget сессия всегда центрируется относительно указанного target. Если отслеживание этого target теряется, сессия перецентрируется, но не выбирает другие target в качестве нового центра. Если указанный target снова отслеживается, он восстанавливается как центр.

Перецентрирование происходит в следующих случаях:

  • Указанный target не отслеживается в текущем кадре.
    В этом случае, если активен режим SessionOrigin, сессия переключается в режим SessionOrigin, выбирая XR Origin в качестве центра. В противном случае сессия переключается в режим Camera, выбирая camera в качестве центра.

  • Указанный target отслеживается в текущем кадре, а в предыдущем кадре он не отслеживался.
    В этом случае сессия выбирает указанный target в качестве центра.

В видео выше центром явно указан лист A4, отслеживаемый через Image Tracking. Видно, что при потере отслеживания листа (панда) сессия не выбирает другой target (ёлку с голубой точкой) в качестве центра. При возобновлении отслеживания лист A4 восстанавливается как центр.

Режим center mode sessionorigin

Режим SessionOrigin использует XR Origin в качестве центра. В этом режиме camera и target в сессии контролируются относительно центральной точки XR Origin.

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

В этом режиме центральную точку XR Origin можно свободно перемещать. При этом camera и target в сессии будут двигаться синхронно, и их transform нельзя контролировать извне.

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

В режиме SessionOrigin XR Origin обязателен, поэтому центр не может измениться.

Режим center mode camera

Режим Camera использует camera в качестве центра. В этом режиме XR Origin и target контролируются относительно центральной точки camera.

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

В этом режиме центральную точку camera можно свободно перемещать. При этом XR Origin и target будут двигаться синхронно, и их transform нельзя контролировать извне.

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

В режиме Camera camera обязателен, поэтому центр не может измениться.

Дальнейшие шаги

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