Наблюдатель распознавания сцен — 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, не поддерживаются.
Обзор наблюдателя
При появлении запроса возвращается WindowsSceneUnderstandingObserver
SpatialAwarenessSceneObject с атрибутами, полезными для приложения, чтобы понять его окружение. Частота наблюдения, возвращаемый тип объекта (например, стена, этаж) и другие поведения наблюдателя зависят от конфигурации наблюдателя через профиль. Например, если требуется маска окклюзии, наблюдатель должен быть настроен для создания четырехугольника. Наблюдаемую сцену можно сохранить в виде сериализованного файла, который позже можно загрузить для повторного создания сцены в режиме воспроизведения редактора.
Настройка
Важно!
Основные сведения о сценах поддерживаются только в HoloLens 2 и Unity 2019.4 и более поздних версий.
- Убедитесь, что платформа имеет значение UWP в параметрах сборки.
- Получите пакет "Основные сведения о сцене" с помощью средства Смешанная реальность компонента.
Использование службы "Общие сведения о сцене"
Самый быстрый способ приступить к работе со службой "Основные сведения о сцене" — ознакомиться с примером сцены.
Пример сцены для распознавания сцены
В 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 и проверьте инспектор.
Эти параметры позволят настроить параметр WindowsSceneUnderstandingObserver
.
Пример сценария
Пример скрипта DemoSceneUnderstandingController.cs демонстрирует основные понятия при работе со службой "Распознавание сцен".
- Подписка на события Осмысления сцены
- Обработка событий Осмысления сцены
- Настройка
WindowsSceneUnderstandingObserver
среды выполнения
Переключатели на панели в сцене изменяют поведение наблюдателя распознавания сцены путем вызова открытых функций этого примера сценария.
Включение создания экземпляров prefabs демонстрирует создание объектов, размер для размещения в соответствии со всеми SpatialAwarenessSceneObject, собранными аккуратно под родительским объектом.
Заметки о созданном приложении
Выполните сборку и развертывание в HoloLens стандартным способом. После запуска ряд кнопок должны отображаться для воспроизведения с функциями.
Обратите внимание, что некоторые ямы попадают в запросы к наблюдателю. Неправильное настройка запроса на получение приведет к тому, что полезные данные события не содержат ожидаемые данные. Например, если один не запрашивает квадроциклы, текстуры маски окклюзии не будут присутствовать. Как и мудрый, в случае, если наблюдатель не настроен на запрос сетки, не будет отображаться ни в коем случае. Скрипт DemoSceneUnderstandingController
отвечает за некоторые из этих зависимостей, но не все.
Сохраненные файлы сцены можно получить на портале устройства по адресу User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes
. Эти файлы сцен можно использовать в редакторе, указав их в профиле наблюдателя, найденном в инспекторе.