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


Запись смешанной реальности для разработчиков (DirectX)

Примечание.

Дополнительные сведения о новой возможности MRC для HoloLens 2 см. в разделе " Отрисовка с камеры PV" ниже.

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

Отрисовка с камеры PV (согласие)

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

Отрисовка с камеры PV обеспечивает следующие улучшения по сравнению с интерфейсом MRC по умолчанию:

  • Выравнивание голограммы с физической средой и руками для близкого взаимодействия должно быть точным на всех расстояниях. Избегайте смещения на расстояниях, отличных от точки фокуса, как можно увидеть в MRC по умолчанию.
  • Правый глаз в гарнитуре не будет скомпрометирован, так как он не будет использоваться для отрисовки голограмм для выходных данных MRC.

Существует три шага, чтобы включить отрисовку с камеры PV:

  1. Включение PhotoVideoCamera HolographicViewConfiguration
  2. Обработка дополнительного отрисовки HolographicCamera
  3. Проверьте правильность отрисовки шейдеров и кода из этого дополнительного HolographicCamera
Включение Функции PhotoVideoCamera HolographicViewConfiguration в DirectX

Чтобы выбрать отрисовку с камеры PV, приложение просто включает функцию HolographicViewConfiguration PhotoVideoCamera:

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
Обработка дополнительной отрисовки HolographicCamera в DirectX

Когда приложение имеет согласие на отрисовку с камеры PV и записи смешанной реальности, начинается:

  1. Событие HolographicSpace CameraAdded запустится. Это событие можно отложить, если приложение не может обрабатывать камеру в настоящее время.
  2. После завершения события без невыполненных отложений появится HolographicCamera в следующем списке AddedCameras HolographicFrame.

Если запись смешанной реальности останавливается (или если приложение отключает конфигурацию представления во время записи смешанной реальности): HolographicCamera появится в следующем списке RemovedCameras HolographicFrame, и событие HolographicSpace's CameraRemoved будет запущено.

Свойство ViewConfiguration было добавлено в HolographicCamera, чтобы помочь определить конфигурацию камеры, к которой принадлежит камера.

Проверка шейдеров и кода поддержки дополнительных камер

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

Если есть определенные сцены, которые не могут поддерживать отрисовку на дополнительную камеру, можно отключить HolographicViewConfiguration PhotoVideoCamera.

Отключение MRC в приложении

2D-приложение

2D-приложения могут выбрать, чтобы их визуальное содержимое было скрыто при выполнении записи смешанной реальности:

Иммерсивное приложение

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

  • Настройка HolographicCameraRenderingParameter IsContentProtectionEnabled , чтобы отключить запись смешанной реальности для связанного кадра
  • Настройка IsHardwareContentProtectionEnabled в HolographicCamera для отключения захвата смешанной реальности для связанной голографической камеры

Клавиатура паролей

При использовании обновление Windows 10 за май 2019 г. визуальное содержимое автоматически исключается из записи смешанной реальности, когда отображается пароль или закрепление клавиатуры.

Зная, когда MRC активен

Класс AppCapture можно использовать приложением, чтобы узнать, когда выполняется запись смешанной реальности системы (для аудио или видео).

Примечание.

API GetForCurrentView AppCapture может возвращать значение NULL, если запись смешанной реальности недоступна на устройстве. Также важно отменять регистрацию события CapturingChanged при приостановке приложения, в противном случае MRC может попасть в заблокированное состояние.

Интеграция функций MRC из приложения

Ваше приложение смешанной реальности может запустить фото или видеозахват MRC из приложения, а содержимое, записанное в приложении, становится доступным для вашего приложения, не сохраняя его в "свертке камеры". Вы можете создать пользовательский записыватель MRC или воспользоваться встроенным пользовательским интерфейсом записи камеры.

MRC с встроенным пользовательским интерфейсом камеры

Разработчики могут использовать API пользовательского интерфейса захвата камер для получения фотографии или видео смешанной реальности пользователем с несколькими строками кода.

Этот API запускает встроенный пользовательский интерфейс камеры MRC, где пользователи могут принимать фотографию или видео и возвращать результирующий захват в приложение. Вы можете создать пользовательский средство записи записи Смешанная реальность, если вам нужно добавить собственный пользовательский интерфейс камеры или доступ ниже уровня к потокам записи.

MRC с записью экрана

С обновлением HoloLens 2 мая 2021 г. (Windows Holographic, версия 21H1 сборки 20346.1002), разработчики могут использовать API захвата экрана для запроса потока видеокадров смешанной реальности.

Создание пользовательского средства записи MRC

Хотя пользователь всегда может активировать фотографию или видео с помощью службы записи MRC системы, приложение может потребоваться создать пользовательское приложение камеры, включающее голограммы в поток камеры так же, как MRC. Это позволяет приложению запускать записи из пользовательского ввода, создавать пользовательский пользовательский интерфейс записи или настраивать параметры MRC для определения нескольких примеров.

HoloStudio добавляет пользовательскую камеру MRC с помощью эффектов MRC

HoloStudio добавляет пользовательскую камеру MRC с помощью эффектов MRC

Другие приложения могут сделать это с помощью API захвата Windows Media для управления камерой и добавления эффекта MRC Видео и звука, чтобы включить виртуальные голограммы и звук приложения в по-прежнему и видео.

Приложения имеют два варианта добавления эффекта:

Примечание.

Пространство имен Windows.Media.MixedRealityCapture не будет распознано Visual Studio, но строки по-прежнему допустимы.

Видеоэффект MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

Имя свойства Тип Значение по умолчанию Description
StreamType UINT32 (MediaStreamType) 1 (VideoRecord) Описание потока записи, для которого используется этот эффект. Звук недоступен.
HologramCompositionEnabled boolean TRUE Флаг для включения или отключения голограмм в записи видео.
ЗаписьIndicatorEnabled boolean TRUE Флаг для включения или отключения индикатора записи на экране во время записи голограммы.
VideoStabilizationEnabled boolean FALSE Пометка для включения или отключения стабилизации видео с помощью средства отслеживания HoloLens.
VideoStabilizationBufferLength UINT32 0 Задайте количество исторических кадров, используемых для стабилизации видео. 0 — это 0-задержка и почти "бесплатный" с точки зрения мощности и производительности. 15 рекомендуется для высокого качества (при стоимости 15 кадров задержки и памяти).
GlobalOpacityCoefficient с плавающей запятой 0.9 (HoloLens) 1.0 (иммерсивная гарнитура) Задайте глобальный коэффициент непрозрачности голограммы в диапазоне от 0,0 (полностью прозрачный) до 1,0 (полностью непрозрачный).
BlankOnProtectedContent boolean FALSE Пометка для включения или отключения пустого кадра, если есть 2d приложение UWP с защищенным содержимым. Если этот флаг имеет значение false, а 2d приложение UWP отображает защищенное содержимое, приложение UWP 2d будет заменено защищенной текстурой содержимого как в гарнитуре, так и в записи смешанной реальности.
ShowHiddenMesh boolean FALSE Флаг, чтобы включить или отключить отображение скрытой области камеры голографической камеры и соседнего содержимого.
Выходные данные Размер 0, 0 Задайте требуемый размер выходных данных после обрезки для стабилизации видео. Размер обрезки по умолчанию выбирается, если задано значение 0 или недопустимый размер выходных данных.
OutputSubtype Строка Nv12 Задайте нужный подтип выходных данных после композиции голограммы и /или стабилизации видео. Поддерживает Nv12 и Argb32 MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Отрисовка из параметра камеры на портале устройств Windows Перечисление, используемое для указания конфигурации представления голографической камеры: 0 (отображение) означает, что приложение не будет предложено отрисовки с фото/видеокамеры, 1 (PhotoVideoCamera) попросит приложение отрисовку с фото/видео камеры (если приложение поддерживает его). Поддерживается только в HoloLens 2

Примечание.

Вы можете изменить значение по умолчанию для ПредпочтительнымHologramPerspective на портале устройств Windows, перейдя на страницу записи Смешанная реальность и снимите флажок "Отрисовка" с камеры. Значение по умолчанию по умолчанию — 1 (PhotoVideoCamera), но его можно снять, чтобы задать значение 0 (Display).

Значение по умолчанию для предпочтительным HologramPerspective было 0 (display) до обновления 2020 г. (Windows Holographic, версия 2004 сборки 19041.1106 и Windows Holographic версии 1903 версии 18362.1064).

Добавлена поддержка OutputSubtype с обновлением за май 2021 г. (Windows Holographic, версия 21H1 сборки 20346.1002).

Эффект звука MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

Имя свойства Тип Значение по умолчанию Description
MixerMode UINT32 2 (микрофон и системный звук) Перечисление, используемое для указания того, какие источники звука следует использовать: 0 (только микрофон), 1 (только системный звук), 2 (микрофон и системный звук).
LoopbackGain с плавающей запятой Настройка получения звука приложения на портале устройств Windows Получите, чтобы применить к системным аудио томам. Диапазон от 0.0 до 5.0. Поддерживается только в HoloLens 2
МикрофонGain с плавающей запятой Параметр Mic Audio Gain на портале устройств Windows Получение для применения к тому микрофона. Диапазон от 0.0 до 5.0. Поддерживается только в HoloLens 2

Примечание.

Вы можете изменить значение по умолчанию LoopbackGain или МикрофонGain на портале устройств Windows, перейдя на страницу Смешанная реальность записи и изменив ползунок рядом с соответствующими параметрами. Оба параметра по умолчанию имеют значение 1.0, но можно задать любое значение от 0.0 до 5.0.

С помощью портала устройств Windows для настройки значений по умолчанию было добавлено обновление 2020 г. (Windows Holographic версии 2004 сборки 19041.1106 и Windows Holographic версии 18362.1064).

Одновременные ограничения MRC

При одновременном доступе к MRC нескольким приложениям необходимо учитывать определенные ограничения.

Доступ к фото/видеокамере

На HoloLens 1 MRC не сможет записать фотографию или записать видео во время процесса записи видео или фотографирования. Обратный также имеет значение true: если работает MRC, приложение не сможет получить доступ к камере.

С HoloLens 2 вы можете поделиться доступом к камере. Если вам не нужен прямой контроль разрешения или частоты кадров, можно инициализировать MediaCapture с помощью свойства SharedMode с SharedReadOnly.

Встроенный доступ к фото и видеокамере MRC

Функциональные возможности MRC, встроенные в Windows 10 (через Кортана, меню "Пуск", сочетания клавиш оборудования, Miracast, портал устройств Windows):

  • Будет работать с ExclusiveControl по умолчанию

Однако поддержка добавлена в подсистему MRC для работы в общем режиме:

  • Если приложение запрашивает доступ ExclusiveControl к фото-камере или видеокамере, встроенная MRC автоматически остановится с помощью фото-камеры или видеокамеры, чтобы запрос приложения успешно завершился.
  • При запуске встроенного MRC во время работы приложения с монопольным управлением встроенный MRC будет работать в режиме SharedReadOnly

Эта функция общего режима имеет определенные ограничения:

  • Фото с помощью Кортаны, сочетаний клавиш оборудования или меню "Пуск": требуется обновление Windows 10 за апрель 2018 г. (или более поздней версии)
  • Видео с помощью Кортаны, сочетаний клавиш оборудования или меню "Пуск": требуется обновление Windows 10 за апрель 2018 г. (или более поздней версии)
  • Потоковая передача MRC по Miracast: требуется обновление Windows 10 за октябрь 2018 г. (или более поздней версии)
  • Потоковая передача MRC через портал устройств Windows или через приложение-компаньон HoloLens: требуется HoloLens 2

Примечание.

Разрешение и частота кадров встроенного пользовательского интерфейса камеры MRC могут быть сокращены от обычных значений, когда другое приложение использует фото-видеокамеру.

Доступ MRC для разработчиков

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

Внимание

Перед продолжением внимательно ознакомьтесь с замечаниями SharingMode.

  • Настройка камеры таким образом, как вы хотите его
  • Запустите приложение, захватить видеокадры с помощью начального API, а затем включите MRC

Внимание

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

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

Примечание.

До обновления Windows 10 апреля 2018 года пользовательская запись MRC приложения была взаимоисключаемой с системой MRC (запись фотографий, запись видео или потоковая передача с портала устройств Windows).

См. также