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


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

Примечание

Рекомендации по новой возможности MRC для HoloLens 2 см. в разделе Отрисовка с фотокамеры ниже.

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

Отрисовка с фотоэлектрической камеры (согласие)

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

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

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

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

  1. Включение photoVideoCamera HolographicViewConfiguration
  2. Обработка дополнительной отрисовки HolographicCamera
  3. Убедитесь, что шейдеры и код правильно отрисовывается с помощью этой дополнительной камеры HolographicCamera
Включение photoVideoCamera HolographicViewConfiguration в DirectX

Чтобы согласиться на отрисовку с фотокамеры, приложение просто включает 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

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

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

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

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

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

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

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

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

Двухd-приложение

Двухd-приложения могут скрыть визуальное содержимое при выполнении смешанной реальности:

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

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

  • Настройка IsContentProtectionEnabled в HolographicCameraRenderingParameter для отключения захвата смешанной реальности для связанного кадра
  • Настройка функции 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)

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

Примечание

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

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

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

Звуковой эффект MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

Имя свойства Type Значение по умолчанию Описание
MixerMode UINT32 2 (микрофон и системный звук) Перечисление, используемое для указания источников звука: 0 (только звук микрофона), 1 (только системный звук), 2 (микрофон и системный звук)
LoopbackGain FLOAT Параметр app Audio Gain на портале устройств Windows Получение, чтобы применить к системной громкости звука. В диапазоне от 0,0 до 5,0. Поддерживается только в HoloLens 2
MicrophoneGain FLOAT Параметр "Получение звука микрофона" на портале устройств Windows Увеличение для применения к громкости микрофона. В диапазоне от 0,0 до 5,0. Поддерживается только в HoloLens 2

Примечание

Вы можете изменить значение по умолчанию LoopbackGain или MicrophoneGain на портале устройств Windows, перейдя на страницу Смешанная реальность Запись и настроив ползунок рядом с соответствующими параметрами. Оба параметра по умолчанию имеют значение 1.0, но можно задать любое значение в диапазоне от 0,0 до 5,0.

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

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

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

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

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

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

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

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

  • По умолчанию будет выполняться с ExclusiveControl

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

  • Если приложение запрашивает доступ ExclusiveControl к фото- и видеокамере, встроенная функция MRC автоматически прекратит использование фото- и видеокамеры, чтобы запрос приложения был выполнен успешно.
  • Если встроенный MRC запускается, когда приложение имеет ExclusiveControl, встроенный 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).

См. также раздел