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

World locking tools hero image

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

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

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

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

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

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

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

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

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

Средства блокировки мира предоставляют стабильную систему координат, которая минимизирует видимые несоответствия между виртуальными и реальными маркерами. World Locking Tools world-locks the entire scene with a shared pool of anchors, а не locking each group of objects with the group's own individual anchor.

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

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

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

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

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

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

Unity editor with Mixed Reality Toolkit menu selected

Важно!

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

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

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

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

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

Важно!

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

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

World locking context component in Unity inspector

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

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

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

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

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

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

См. также