Устранение неполадок при обнаружении объектов

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

Действия по устранению неполадок

  • Убедитесь, что модель, которую вы обнаруживаете, находится в поддерживаемом (1–10 метров) размера для оптимального взаимодействия.
  • Обеспечьте в помещении достаточно насыщенный визуальный фон, повесив несколько плакатов.
  • Удалите текущие голограммы для сброса карты, как описано ниже.
  • Производите более полное сканирование объекта.
  • Задайте ограничивающий прямоугольник, прилегающий ближе к объекту, в качестве области поиска, включающей весь объект или основную его часть.
  • Очистите кэш пространственных сопоставлений и повторно просканируйте объект.
  • Убедитесь, что правильное направление гравитации и измерение ресурса использовались во время преобразования модели, как описано ниже.
  • Визуально проверьте модель обнаружения, как описано ниже.
  • Настройте значения запроса модели, как описано ниже.
  • Запись диагностика, как описано ниже.

Удаление голограмм для сброса карты

При обнаружении объектов с любой из следующих проблем удаление и сброс карты может устранить эту проблему:

  • Инвертированная ориентация
  • Неправильное положение
  • Модель наклона

Чтобы удалить голограммы и сбросить карту, откройте приложение Параметры и перейдите в System ->Голограммы. Затем нажмите кнопку "Удалить все голограммы ", чтобы начать с новой карты.

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

Повторное сканирование среды путем прогулки по окружающей среде, носить HoloLens. Обход любых объектов, которые вы планируете обнаружить несколько раз от 1 до 2 метров.

Убедитесь, что направление гравитации и единица измерения актива правильно

При отправке трехмерной модели для преобразования с помощью пакета SDK преобразования привязок объектов (см . здесь), необходимо ввести правильное направление тяжести (Gravity) и единицу измерения (AssetDimensionUnit) для трехмерной модели. Если эти значения не верны, привязки объектов вряд ли будут правильно обнаруживать объект.

Направление гравитации — это вектор вниз, указывающий на землю. Для моделей САПР направление силы тяжести обычно противоположно направлению вверх. Например, во многих случаях +Z представляется вверх, в этом случае -Z или Vector3(0.0, 0.0, -1.0) будет представлять направление силы тяжести. При определении силы тяжести также следует учитывать ориентацию, в которой модель будет отображаться во время выполнения. Если вы пытаетесь обнаружить стул в реальном мире на плоской поверхности, гравитация может быть Vector3(0.0, 0.0, -1.0). Однако, если кресло находится на поверхности, наклоненной под углом 45 градусов, то направлением действия силы тяжести может быть Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2).

Направление силы тяжести можно определить с помощью инструмента трехмерной отрисовки, например MeshLab.

Единица измерения представляет масштаб модели. Для поиска поддерживаемых модулей можно использовать перечисление Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit.

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

Визуально проверьте сетку модели обнаружения

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

Настройка значений запроса объекта

  • Задайте ограниченные области поиска, оптимально охватывающие весь объект, чтобы повысить скорость и точность обнаружения.
  • Значение по умолчанию ObjectQuery.MinSurfaceCoverage часто достаточно, но для быстрого обнаружения можно использовать меньшее значение.
  • Используйте небольшое значение, ObjectQuery.ExpectedMaxVerticalOrientationInDegrees если объект, как ожидается, будет правым.
  • Приложение должно всегда использовать объектную модель 1:1 для обнаружения. Предполагаемый масштаб должен быть близок к 1, желательно с погрешностью не более 1 %. Приложение может установить для ObjectQuery.MaxScaleChange значение 0 или 0.1, чтобы отключить или включить оценку масштаба, а также качественно оценить пространственное расположение экземпляра.
  • Дополнительные сведения см. в разделе Обнаружение сложных объектов.

Сбор диагностических данных

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

Пример приложения Unity с MRTK записывает диагностика в папку TempState. Вы можете запустить сеанс диагностика, открыв меню руки, выбрав "Начать трассировку", воспроизвести попытку обнаружения, а затем нажмите кнопку "Остановить трассировку", чтобы сохранить архив диагностика. Затем можно использовать портал устройств Windows для получения архива диагностика из папки TempState приложения.

Затем диагностика архив можно предоставить нам общий доступ, чтобы мы могли помочь отладить проблему.

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

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