Средства и визуализаторы

Средства и визуализаторы в пространстве имен Microsoft.MixedReality.WorldLocking.Tools предназначены для помощи во время разработки. Они также могут стать отправной точкой для расширенного взаимодействия с системой World Locking Tools (WLT).

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

WorldLocking.Core может работать без изменений в любом подходящем сценарии приложения. Однако решение Tools может делать предположения о приложении. Эти предположения могут сделать его неприемлемыми в некоторых ситуациях.

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

Инструменты

Корректировщики

Корректировщик (Adjuster) — это компонент, обрабатывающий события повторной подгонки. В частности, они создают точки прикрепления. В случае операции повторной подгонки точка прикрепления (AttachmentPoint) выступает в качестве обратного вызова уведомления. Компонент Adjuster обрабатывает это событие соответствующим образом.

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

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

Компоненты AdjusterFixed и AdjusterMoving обрабатывают, по меньшей мере, два стандартных сценария.

Компонент AdjusterFixed предполагает, что его целевой объект обычно не перемещается. Если World Locking Tools отправляет положение корректировки из-за события повторной подгонки, оно предназначено для сохранения объекта AdjusterFixed в стационарном положении в мире.

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

Адаптеры

Компоненты Adapter предназначены только для иллюстрации. Если вы будете использовать один из них, возможно, вам стоит изменить подход к использованию World Locking Tools.

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

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

  • WorldAnchorAdapter — WorldAnchor будет корректировать положение объекта в эластичном пространстве, чтобы он оставался фиксированным в физическом пространстве. Это избыточная функция относительно пространства, привязанного к миру, которое предоставляет World Locking Tools, поэтому объект будет перемещаться в замороженном пространстве. Этот адаптер позволяет WorldAnchor обеспечить неподвижность объекта в замороженном пространстве. В этом нет необходимости, за исключением целей диагностики. Все объекты в глобальном пространстве координат Unity привязываются к миру с помощью World Locking Tools.

  • ToggleWorldAnchor — аналогичен WorldAnchorAdapter, но его можно переключать. Также автоматически переходит на обычное поведение WorldAnchor, если WorldLockingManager отключен. Используется только для диагностики.

  • FrozenSpatialMapping — адаптер управляет и правильно отображает результаты из SurfaceObserver. Система отслеживания пространственного положения MRTK предоставляет все эти функции и многое другое и не требует адаптера для работы с World Locking Tools.

  • FrozenTapToAdd — непосредственное взаимодействие с входной системой Unity требует преобразования входящих данных координат, как показано ниже. Это не требуется для входной системы MRTK.

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

Визуализация графа привязок

AnchorGraphVisual и связанные заготовки являются основой предоставляемых визуализаций. Компоненты выглядят следующим образом:

  1. Оси — текущие положения источников эластичного пространства (зеленого) и замороженного пространства (зеленого) показаны в виде стандартных идентификаторов с тремя осями-стрелками.

  2. Эластичные привязки — это собственные базовые привязки, которые были созданы для передачи в процесс оптимизации Frozen World Engine. Каждая из них представлена кольцом, а также текстовым тегом, идентифицирующим ее. Кроме того, дополнительные сведения передаются с помощью цвета и размера.

    • Активная закрепленная привязка будет зеленой.

    • Отслеживаемая привязка с нулевой релевантностью будет красной.

    • Неподдерживаемая привязка будет желтой.

    • Чем больше кольцо, тем больше релевантность для этой привязки.

  3. Замороженные привязки — это соответствующие опорные точки в замороженном пространстве. При отсутствии ошибки отслеживания они будут точно согласованы с эластичными привязками.

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

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

Типичный граф привязок, пересекающий комнату

Для отображения графа привязок, создаваемого World Locking Tools, по мере перемещения пользователя о физической среде, достаточно перетащить в сцену заготовку WorldLockingTools > Prefabs > AnchorGraphVisual. Она обычно добавляется как одноуровневый элемент в WorldLockingContext, но ее точное расположение в иерархии не имеет значения. Однако его не следует размещать ее в иерархии камеры.

Пространственные привязки, которые создает и использует WLT, создаются в положении камеры. Так как неудобно ходить по полю визуализаций привязок на уровне глаз, система по умолчанию отображает их на 1 метр ниже истинного положения. Чтобы увидеть визуализации привязок в их фактических положениях, установите для параметра вертикального смещения (Vertical Displacement) визуального компонента графа привязок нулевое значение.

Дополнительные выходные данные

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

Типичный диагностический дисплей

Для анализа после неудачи раздел ДиагностикаWorldLockingContext может быть очень полезен при составлении отчетов о сбоях в работе Frozen World Engine. Дополнительные сведения см. в разделе Информирование об ошибке.