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


Наблюдатель осмысления сцены — MRTK2

Распознавание сцен возвращает семантическое представление сущностей сцены, а также их геометрических форм на HoloLens 2 (HoloLens 1-го поколения не поддерживается).

Ниже приведены некоторые ожидаемые варианты использования этой технологии.

  • Размещение объектов на ближайшей поверхности определенного вида (например, на стене и полу)
  • Создание сетки навигации для игр в стиле платформы
  • Предоставление удобной геометрии физического двигателя в виде четырехугольника
  • Ускорьте разработку, избегая необходимости писать похожие алгоритмы

Распознавание сцен представлено в качестве экспериментальной функции в MRTK 2.6. Он интегрирован в MRTK как пространственный наблюдатель с именем WindowsSceneUnderstandingObserver. Осмысление сцен работает как с устаревшим конвейером XR, так и с конвейером пакета SDK для XR (OpenXR (начиная с MRTK 2.7) и подключаемым модулем Windows XR). В обоих случаях WindowsSceneUnderstandingObserver используется .

Примечание

Использование распознавания сцен в удаленном взаимодействии поддерживается только в MRTK 2.7.3 и более поздних версий. Поддерживаются только проекты, использующие OpenXR. Проекты, использующие устаревший конвейер XR или подключаемый модуль Windows XR , не поддерживаются.

Обзор наблюдателя

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

Настройка

Важно!

Распознавание сцен поддерживается только в HoloLens 2 и Unity 2019.4 и более поздних версий.

  1. Убедитесь, что для платформы задано значение UWP в параметрах сборки.
  2. Получите пакет осмысления сцены с помощью средства Смешанная реальность feature tool.

Использование службы "Распознавание сцен"

Самый быстрый способ начать работу с осмысления сцены — проверка пример сцены.

Пример сцены для распознавания сцены

В Unity используйте Обозреватель Project, чтобы открыть файл сцены в Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity и нажать клавишу play!

Важно!

Применяется только к MRTK 2.6.0. При использовании средства Смешанная реальность Feature Tool или импорте иным способом через UPM импортируйте пример Demos - SpatialAwareness перед импортом примера Экспериментальный — SceneUnderstanding из-за проблемы с зависимостями. Дополнительные сведения см. в этой проблеме на GitHub .

Сцена демонстрирует следующее:

  • Визуализация наблюдаемых объектов сцены с помощью в пользовательском интерфейсе приложения для настройки наблюдателя
  • Пример DemoSceneUnderstandingController скрипта, демонстрирующий изменение параметров наблюдателя и прослушивание соответствующих событий
  • Сохранение данных сцены на устройстве для автономной разработки
  • Загрузка ранее сохраненных данных сцены (БАЙТ-файлов) для поддержки рабочего процесса разработки в редакторе

Важно!

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

Примечание

Пример сцены основан на устаревшем конвейере XR. Если вы используете конвейер пакета SDK для XR, необходимо соответствующим образом изменить профили. Предоставленный профиль системы распознавания пространственного распознавания сцены (DemoSceneUnderstandingSystemProfile) и профили наблюдателя о сцене (DefaultSceneUnderstandingObserverProfile и DemoSceneUnderstandingObserverProfile) работают для обоих конвейеров.

Примечание

Пример сцены регистрирует предупреждение при определенных There is no active AsyncCoroutineRunner when an action is posted. обстоятельствах из-за порядка инициализации или выполнения потока. Если вы можете убедиться, AsyncCoroutineRunner что компонент подключен к GameObject "Demo Controller" и компонент или GameObject остается включенным или активным в сцене (в случае по умолчанию), предупреждение можно проигнорировать. Однако при создании новой сцены с помощью функции "Распознавание сцены", создайте пустой объект GameObject в корне и присоедините AsyncCoroutineRunner к нему скрипт. В противном случае функция осмысления сцены может работать неправильно.

Настройка службы наблюдателя

Выберите игровой объект MixedRealityToolkit и проверка инспектора.

представление о расположении сцены в иерархии

Расположение MRTK в инспекторе

Эти параметры позволят настроить WindowsSceneUnderstandingObserver.

Пример сценария

В примере скрипта DemoSceneUnderstandingController.cs демонстрируются основные принципы работы со службой "Распознавание сцен".

  • Подписка на события осмысления сцены
  • Обработка событий осмысления сцены
  • Настройка во WindowsSceneUnderstandingObserver время выполнения

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

Включение параметра Создание экземпляров prefabs будет демонстрировать создание объектов, размер для размещения всех объектов SpatialAwarenessSceneObject, собранных аккуратно под родительским объектом.

Параметры демонстрационного контроллера

Заметки о созданном приложении

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

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

Доступ к сохраненным файлам сцен можно получить через портал устройств по адресу User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes. Эти файлы сцен можно использовать в редакторе, указав их в профиле наблюдателя, найденном в инспекторе.

Расположение файла байтов на портале устройств

Сериализованные байты сцены в наблюдателе

См. также: