Работа с якорями

Используйте якоря, чтобы виртуальные объекты оставались на месте в сцене AR.

Зачем использовать якоря?

По мере того, как понимание окружающей среды ARCore обновляется на протяжении всего опыта AR, может показаться, что виртуальные объекты отодвигаются от того места, где они были размещены. Это может повлиять на реалистичность вашего приложения и удобство его использования.

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

Как работают якоря

Если вы новичок в использовании якорей, полезно просмотреть мировое пространство и позы.

  • Мировое пространство

    • Координатное пространство, в котором расположены камера и объекты.
    • Положения камеры и объектов в мировом пространстве обновляются от кадра к кадру.
  • Поза

    • Представляет положение и ориентацию объекта в мировом пространстве.
    • Также называется преобразованием в iOS.

Когда вы создаете привязку, вы используете позу, которая описывает положение и ориентацию относительно оценки мирового пространства для текущего кадра.

К этому якорю вы прикрепляете один или несколько объектов. Якорь и прикрепленные к нему объекты остаются там, где они находятся в мире. Поскольку поза привязки адаптируется к обновлениям мирового пространства в каждом кадре, привязка соответствующим образом обновляет положения объектов.

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

Используйте якоря в своей сцене

Чтобы использовать якоря в вашей сцене, ваш код должен:

  • Создайте привязки в контексте отслеживаемого объекта (например, самолета) или сеанса ARCore.
  • Прикрепите к якорю один или несколько объектов.

Якоря могут поддерживать различные виды позиционного поведения объектов вашей сцены.

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

Выберите контекст привязки

Добавьте привязки к вашей сцене, используя Trackable или ARCore Session.

Если вы хотите, чтобы объекты Прикрепите якорь к
Выглядеть «приваренным» к отслеживаемому объекту и подвергаться тем же эффектам вращения, что и отслеживаемый объект.
Это включает в себя:
  • Похоже, прилипает к поверхности самолета
  • Сохранение позиции относительно отслеживаемого объекта, например плавание над ним или перед ним.
Отслеживаемый
Кажется, что вы остаетесь в одной и той же позе в мировом пространстве на протяжении всего пользовательского опыта. ARCore-сессия

Привяжите один или несколько объектов

К якорю можно прикрепить один или несколько объектов. Как правило, эти объекты имеют пространственное отношение к одному или нескольким из следующих элементов:

  • Друг друга
  • Отслеживаемый объект, например самолет
  • Позиция в мировом пространстве

Рекомендации по якорю

Реалистичность и производительность вашего приложения выиграют от эффективного и действенного использования привязок.

Объекты, прикрепленные к ближайшему якорю, сохраняют свое место реалистично и относительно друг друга на протяжении всего опыта AR.

Использование только тех привязок, которые вам нужны, помогает снизить затраты на ЦП.

Используйте якоря повторно, если это возможно.

В большинстве случаев вам следует использовать одну и ту же привязку для нескольких близлежащих объектов, а не создавать новую привязку для каждого объекта.

Используйте новую привязку для объекта, если объекту необходимо поддерживать уникальное пространственное отношение к отслеживаемому объекту или положению в мировом пространстве.

Имейте в виду, что если каждый объект в сцене имеет свой собственный якорь, эти якоря будут корректировать позы объекта независимо друг от друга в ответ на оценку мирового пространства ARCore в каждом кадре. Отдельно закрепленные объекты могут смещаться или вращаться относительно друг друга, разрушая иллюзию AR-сцены, где виртуальные объекты должны оставаться на месте относительно друг друга.

Пример
Например, представьте, что ваше приложение позволяет пользователям размещать виртуальные предметы мебели по комнате. Пользователь открывает приложение, и ARCore начинает отслеживать столешницу и пол в комнате как плоскости. Пользователь размещает виртуальную лампу на столешнице. Затем пользователь ставит на пол виртуальный стул.

На этом этапе ваша сцена должна иметь один якорь, прикрепленный к плоскости столешницы, а другой — к плоскости пола.

Если пользователь добавляет к столешнице еще одну виртуальную лампу, вы можете повторно использовать привязку, уже прикрепленную к плоскости столешницы. Таким образом, обе лампы кажутся приклеенными к плоскости столешницы и сохраняют свое положение относительно друг друга. Кресло также сохраняет свое положение относительно плоскости пола.

Держите объекты близко к якорям

Привязывая объекты, убедитесь, что они находятся близко к используемому вами якорю. Избегайте размещения объектов дальше, чем на восемь метров (8 м) или двадцать шесть футов (26 футов) от якоря, чтобы предотвратить неожиданное вращательное движение из-за обновлений ARCore координат мирового пространства.

Если вам необходимо разместить объект на расстоянии более восьми метров от существующей привязки, создайте новую привязку ближе к этому положению и прикрепите объект к новой привязке.

Отсоедините неиспользуемые анкеры

Отключите все привязки, которые вам больше не нужны, чтобы ваше приложение было более производительным.

Ваше приложение требует затрат ЦП для каждого отслеживаемого объекта, и ARCore не выпускает отслеживаемые объекты с прикрепленными привязками.

Типы якорей

Типы привязок различаются по области действия: от локальной до глобальной.

  • Локальные привязки хранятся в приложении локально и действительны только для этого экземпляра приложения. Пользователь должен физически находиться в том месте, где он размещает якорь.

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

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