Связи между привязками и поиск пути в Пространственных привязках Azure
Используя связи между привязками, можно создавать в пространстве связанные привязки, которые позволят получать ответы на такие вопросы, как:
- Есть ли рядом какие-либо привязки?
- Как далеко они расположены?
Примеры
Связанные привязки можно использовать в следующих сценариях:
Работнику нужно выполнить задачу, которая включает посещение нескольких расположений на промышленном объекте. Каждому расположению этого объекта назначена пространственная привязка. Устройство HoloLens или мобильное приложение направляют сотрудника от одного расположения к другому. Это приложение в первую очередь получает данные о расположенных рядом привязках, а затем направляет сотрудника к следующему расположению. Приложение визуально отображает примерное направление к этому расположению и расстояние до него.
В музее создаются пространственные привязки для общедоступных экспозиций. Сочетание этих привязок образует маршрут экскурсии длительностью в один час по основной экспозиции музея. Посетители этой экспозиции могут открыть предоставленное музеем приложение смешанной реальности на любом мобильном устройстве. Наводя камеру устройства на окружающие объекты, они увидят рекомендации по направлению движения и расстоянию до следующих этапов экскурсии. По мере движения пользователя по общедоступной экспозиции приложение постоянно обновляет сведения о направлении и расстоянии, помогая пользователю ориентироваться.
Настройка поиска пути
Приложение, которое предоставляет рекомендации по направлению движения на основе сведений о направлении и расстоянии между привязками в пределах прямой видимости, использует механизм поиска пути. Поиск пути имеет важные отличия от пошаговой навигации. В режиме пошаговой навигации приложение дает пользователю рекомендации с учетом стен, дверей и лестниц. В режиме поиска пути пользователь только получает подсказки о примерном направлении к пункту назначения. Но здравый смысл и (или) знание пространства позволяют пользователю перемещаться к месту назначения, самостоятельно обходя препятствия.
Чтобы создать взаимодействие с поиском пути, прежде всего подготовьте пространство для этого взаимодействия и создайте приложение, с которым будут взаимодействовать пользователи. Ниже перечислены основные этапы процесса.
Планирование пространства. Определите, какие расположения в пространстве будут частью интерфейса поиска путей. В наших сценариях координатор производства или музейной экспозиции может выбрать, какие расположения нужно включить в процесс поиска пути.
Подключение привязки. Посетите выбранные расположения для создания пространственных привязок. Для этого можно использовать режим администрирования в приложении для пользователей или полностью отдельное приложение. Все привязки нужно подключить к другим или связать с ними. Далее служба будет обрабатывать эти связи.
Запустите взаимодействие с конечным пользователем: пользователи запускают приложение, чтобы найти привязку, которая может находиться в любом из выбранных расположений. Расположения, с которых пользователи могут начать взаимодействие, зависят от структуры и характера объекта.
Найдите ближайшие привязки: после того, как пользователь находит привязку, приложение может запрашивать близлежащие привязки. Эта процедура возвращает сведения о взаимном расположении устройства и привязок.
Руководство пользователя. Приложение может использовать позу для каждой из этих привязок, чтобы дать рекомендации по общему направлению и расстоянию пользователя. Например, в канал камеры в приложении можно добавить значок и (или) стрелку для каждого потенциального пункта назначения, как показано на приведенном ниже изображении.
Уточнение руководства. По мере того как пользователь проходит, приложение может периодически вычислять новую позу между устройством и целевой привязкой. Это позволит приложению уточнять указания, которые помогают пользователю добраться до пункта назначения.
Подключение привязок
Чтобы создать взаимодействие поиска пути, прежде всего нужно разместить привязки в выбранных расположениях. В рамках этого раздела мы предполагаем, что администратор приложения уже выполнил эту работу.
Создание связей между привязками в одном сеансе
Чтобы создать связи между привязками, сделайте следующее:
- Принесите устройство в первое расположение и создайте Привязку A в объекте CloudSpatialAnchorSession.
- Перейдите во второе расположение. Базовая платформа смешанной или дополненной реальности отслеживает перемещение.
- Создайте Привязку Б в том же CloudSpatialAnchorSession. Теперь привязки А и Б будут связаны. Эта связь сохраняется и обрабатывается службой "Пространственные привязки".
- Продолжайте процедуру, пока не включите все остальные привязки.
Создание связей между привязками в нескольких сеансах
Вы можете распределить создание связей между привязками на несколько сеансов. С помощью этого метода можно в один момент создать и подключить несколько привязок, а позднее добавить к ним еще несколько.
Чтобы создать связи между привязками в нескольких сеансах, сделайте следующее:
- Приложение создает несколько привязок (A и B) в одном сеансе CloudSpatialAnchorSession.
- В другой момент приложение размещает одну из этих привязок (скажем, Привязку A), используя новый сеанс CloudSpatialAnchorSession.
- Перейдите в новое расположение. Базовая платформа смешанной или дополненной реальности отслеживает это перемещение.
- Создайте привязку В в том же сеансе CloudSpatialAnchorSession. Теперь привязки А, Б и В будут связаны. Эта связь сохраняется и обрабатывается службой "Пространственные привязки".
Вы можете продолжить процедуру позднее с дополнительными привязками и сеансами.
Проверка связи между привязками
Приложение может убедиться, что между привязками есть связь, выполнив запрос соседних привязок. Для этого установите NearAnchorCriteria
для CloudSpatialAnchorWatcher
. Если в результат запроса будет включена нужная привязка, значит, связь существует. Если привязки не связаны, можно попробовать снова создать связь между ними.
Вот несколько причин, которые могут помешать созданию связи между привязками:
- Базовая платформа смешанной или дополненной реальности не смогла отследить перемещение при создании связи.
- Связь между привязками не удалось сохранить из-за ошибки сети при обмене данными со службой "Пространственные привязки".
Поиск примера кода
Чтобы найти пример кода, который позволяет создать связи между привязками и запросить сведения о соседних привязках, воспользуйтесь примерами приложений для Пространственных привязок.