Поделиться через


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Редактор Unity с выбранным меню набора средств Смешанная реальность

Внимание

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

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

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

Блокировка постоянного мира

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

Внимание

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

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

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

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

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

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

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

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

Вернитесь к контрольным точкам разработки Unity:

См. также