Наблюдатель распознавания сцен — MRTK2

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

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

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

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

Примечание

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

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

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

Настройка

Важно!

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

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

Использование службы "Общие сведения о сцене"

Самый быстрый способ приступить к работе со службой "Основные сведения о сцене" — ознакомиться с примером сцены.

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

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

Важно!

Применяется только к MRTK 2.6.0. При использовании средства Смешанная реальность компонента или импорта с помощью UPM импортируйте пример Demos — SpatialAwareness перед импортом примера Experimental - 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 и проверьте инспектор.

scene understanding location in hierarchy

MRTK location in inspector

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

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

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

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

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

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

demo controller options

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

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

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

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

Device Portal location of bytes file

Serialized scene bytes in observer

См. также: