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


Пространственные привязки

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

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

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

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

Рекомендации

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

Создание пространственных привязок, размещаемых пользователями

Как правило, пользователи — это те, кто явно помещает пространственные привязки.

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

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

Всегда отображайте закрепленные голограммы в пределах 3 метров от их привязки

Пространственные привязки стабилизируют свою систему координат возле источника привязки. Если вы отрисовываете голограммы более 3 метров от источника, голограммы могут испытывать заметные позиционные ошибки в пропорции от их расстояния от этого происхождения из-за эффектов рычага руки. Это работает, если пользователь находится рядом с привязкой, так как голограмма находится далеко от пользователя. Другими словами, угловая ошибка удаленной голограммы будет небольшой. Однако, если пользователь идет до этой удаленной голограммы, он будет большим в своем представлении, делая эффекты рычага руки от далекого источника привязки очевидным.

Групповые голограммы, которые должны образовывать жесткий кластер

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

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

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

Отрисовка высокодинамичных голограмм с использованием стационарной системы отсчета вместо локальной пространственной привязки

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

Интересным случаем при использовании динамических голограмм является возможность анимации объекта из одной привязанной системы координат в другую. Например, у вас может быть два замка в 10 метров друг от друга, каждый из них по своей пространственной привязке с одним замком, стреляя в пушечный мяч в другом замке. Когда пушка стреляется, вы можете отобразить его в соответствующем месте в стационарном кадре ссылки, чтобы совпасть с пушкой в привязной системе координат первого замка. Затем оно может следовать своей траектории в стационарной системе отсчета, пролетая 10 метров по воздуху. По мере того как каннотбол достигает другого замка, вы можете переместить его в привязанную систему координат второго замка, чтобы разрешить физические вычисления с жесткими телами этого замка.

Если вы используете высокодинамическую голограмму на разных устройствах, выберите некоторую облачную пространственную привязку, чтобы выступать в качестве родительского элемента, так как неустанные кадры ссылок нельзя совместно использовать на разных устройствах. Однако следует убедиться, что динамическая голограмма или устройства, просматриваемые устройства, остаются в радиусе 3-метрового привязки, чтобы голограмма была стабильной на всех устройствах.

Не следует создавать сетку пространственных привязок

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

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

Хотя локальная пространственная привязка активна, система определяет приоритеты хранения данных датчика, расположенных рядом с этой привязкой. Если вы больше не используете пространственные привязки, остановите доступ к своей системе координат. Это позволяет удалять свои базовые данные датчика по мере необходимости.

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

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

См. также