Блокировка мира и пространственные привязки в Unity

Изображение главного героя средств блокировки мира

Обеспечение того, чтобы голограммы оставались на месте, перемещались вместе с вами или в некоторых случаях располагались относительно других голограмм, является важной частью создания Смешанная реальность приложений. В этой статье мы рассмотрим рекомендуемое решение с помощью World Locking Tools, но мы также рассмотрим настройку пространственных привязок вручную в проектах Unity. Прежде чем перейти к любому коду, важно понять, как Unity обрабатывает пространство координат и привязки в своем собственном механизме.

Системы координат мирового масштаба

Сегодня при написании игр, приложений для визуализации данных или приложений виртуальной реальности типичным подходом является создание одной абсолютной мировой системы координат , с которыми можно надежно сопоставить все остальные координаты. В этой среде всегда можно найти стабильное преобразование, определяющее связь между любыми двумя объектами в этом мире. Если вы не переместите эти объекты, их относительные преобразования всегда будут оставаться неизменными. Такого рода глобальную систему координат легко получить правильно при отрисовке чисто виртуального мира, где вы знаете всю геометрию заранее. Приложения виртуальной реальности в масштабе помещений сегодня, как правило, устанавливают такой вид абсолютной системы координат масштаба комнаты с ее происхождением на полу.

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

Например, гарнитура в настоящее время может считать, что два расположения в мире находятся на 4 метра друг от друга, а затем уточнить это понимание, узнав, что расположения на самом деле находятся на 3,9 метра друг от друга. Если бы эти голограммы изначально располагались на 4 метра друг от друга в одной жесткой системе координат, одна из них всегда появлялась бы на 0,1 метра от реального мира.

Вы можете вручную разместить пространственные привязки в Unity, чтобы сохранить положение голограммы в физическом мире, когда пользователь является мобильным. Однако это приносит в жертву самосогласованность в виртуальном мире. Различные привязки постоянно перемещаются по отношению друг к другу, а также перемещаются через глобальное пространство координат. В этом сценарии простые задачи, такие как макет, становятся сложными. Моделирование физики также может быть проблематичным.

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

Выбор подхода к блокировке мира

Если это возможно, используйте World Locking Tools для размещения голограмм.

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

World Locking Tools автоматически обрабатывает внутреннее создание пространственных привязок и управление ими. Вам не нужно взаимодействовать с ARAnchorManager или WorldAnchor, чтобы ваши голограммы были заблокированы.

  • Для Unity 2019/2020 с использованием OpenXR или подключаемого модуля Windows XR используйте ARAnchorManager.
  • Для более старых версий Unity или проектов WSA используйте WorldAnchor.

Настройка блокировки мира

Чтобы приступить к работе с World Locking Tools, скачайте средство Смешанная реальность Feature Tool. Дополнительные сведения об основах см. на странице документации по main World Locking Tools со ссылками на обзор, краткое руководство и другие полезные разделы.

Автоматическая установка

Когда проект будет готов к работе, запустите служебную программу настройки сцены из Смешанная реальность > World Locking Tools:

Редактор Unity с выбранным меню

Важно!

Программу Configure scene можно повторно запустить в любое время. Например, ее следует запустить повторно, если целевой объект AR был изменен с Legacy на XR SDK. Если сцена уже настроена правильно, запуск программы ничего не изменит.

Визуализаторы

Во время ранней разработки может быть полезно добавить визуализаторы, чтобы убедиться, что WLT настроен и работает правильно. Их можно удалить с помощью программы Remove visualizers для повышения производительности или если они больше не нужны. Дополнительные сведения о визуализаторах можно найти в документации по средствам.

Постоянная блокировка мира

Пространственные привязки сохраняют голограммы в реальном пространстве между сеансами приложения. После сохранения в хранилище привязок HoloLens пространственные привязки можно найти и загрузить в разных сеансах и являются идеальным резервным вариантом при отсутствии подключения к Интернету.

Важно!

Локальные привязки хранятся на устройстве, а пространственные привязки Azure сохраняются в облаке. Вы можете использовать локальные привязки и привязки Azure в одном проекте без конфликтов. Дополнительные сведения об интеграции облачных служб Azure для хранения привязок см. в статье Пространственные привязки Azure.

По умолчанию World Locking Tools восстанавливает систему координат Unity относительно физического мира между сеансами на устройствах, поддерживающих сохранение локальных пространственных привязок. Чтобы голограмма отображалась в том же месте в физическом мире после выхода из приложения и повторного запуска приложения, приложению достаточно восстановить ту же позу голограммы.

Компонент контекста блокировки мира в инспекторе Unity

Если приложению требуется более точное управление, вы можете отключить автосохранение и автозагрузку в инспекторе и управлять сохраняемостью из скрипта. Дополнительные сведения см. в разделе Сохранение систем пространственных координат.

World Locking Tools поддерживает сохранение локальных привязок только на устройствах HoloLens. Для устройств Android, iOS и HoloLens интегрируйте с Пространственными привязками Azure, чтобы поддерживать сохраняемость и совместное использование координатных пространств между сеансами и устройствами. Дополнительные сведения и примеры использования World Locking Tools с пространственными привязками Azure см. в статье World Locking Tools (WLT) в сочетании с пространственными привязками Azure (ASA).

Дальнейшие действия

Совместное использование заблокированного пространства координат:

Сведения о пространственном сопоставлении:

Назад к контрольным точкам разработки Unity:

См. также раздел