開発者向け Mixed Reality キャプチャ (DirectX)

Note

HoloLens 2 の新しい MRC 機能のガイダンスについては、以下の「PV カメラからのレンダリング」を参照してください。

ここで作業を開始する前に、Mixed Reality キャプチャの概要に関する記事を参照することをお勧めします。

PV カメラからのレンダリング (オプトイン)

HoloLens 2 によって、Mixed Reality キャプチャの実行中に PV カメラからレンダリングする、イマーシブ アプリの機能が追加されます。 アプリで追加のレンダリングが正しくサポートされるようにするには、アプリでこの機能をオプトインする必要があります。

PV カメラからのレンダリングにより、既定の MRC エクスペリエンスに対して次の機能強化が提供されます。

  • 物理的な環境へのホログラムの配置と、近距離の対話式操作における手は、すべての距離で正確になります。 既定の MRC で分かるように、フォーカス ポイント以外の距離でオフセットを設定しないでください。
  • ヘッドセットの右目は、MRC 出力用のホログラムのレンダリングに使用されないため、損なわれることがありません。

PV カメラからのレンダリングを有効にするには、次の 3 つの手順を実行します。

  1. PhotoVideoCamera HolographicViewConfiguration を有効にする
  2. 追加の HolographicCamera レンダーを処理する
  3. この追加の HolographicCamera からシェーダーとコードが正しくレンダリングされることを確認する
DirectX で PhotoVideoCamera HolographicViewConfiguration を有効にする

PV カメラからの表示をオプトインするには、アプリで PhotoVideoCamera の HolographicViewConfiguration を有効にするだけです。

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
DirectX で追加の HolographicCamera レンダーを処理する

アプリに PV カメラからレンダリングするオプトインがあり、Mixed Reality キャプチャが開始される場合は、次のようになります。

  1. HolographicSpace の CameraAdded イベントが発生します。 このイベントは、アプリがこの時点でカメラを処理できない場合に遅延する可能性があります。
  2. 未処理の遅延がない状態でイベントが完了すると、HolographicCamera は次の HolographicFrame の AddedCameras の一覧に表示されます。

Mixed Reality キャプチャが停止した場合 (または、Mixed Reality キャプチャが実行されているときにアプリがビューの構成を無効にした場合)、次の HolographicFrame の RemovedCameras の一覧に HolographicCamera が現れ、HolographicSpace の CameraRemoved イベントが発生します。

HolographicCamera に ViewConfiguration プロパティが追加され、カメラが属している構成を識別できるようになりました。

シェーダーとコードがサポートする追加のカメラを確認する

Mixed Reality キャプチャを実行し、異常な配置、コンテンツ不足、またはパフォーマンスの問題がないか確認します。 必要に応じてシェーダーとコードを更新します。

追加のカメラへのレンダリングをサポートできない特定のシーンがある場合は、PhotoVideoCamera の HolographicViewConfiguration を無効にできます。

アプリで MRC を無効にする

2D アプリ

次の方法で、Mixed Reality のキャプチャの実行時は、2D アプリでアプリ内のビジュアル コンテンツを非表示にできます。

イマーシブ アプリ

イマーシブ アプリでは、Mixed Reality キャプチャからビジュアル コンテンツの除外を選択できます。

  • HolographicCameraRenderingParameter の IsContentProtectionEnabled を設定して、関連付けられているフレームの Mixed Reality キャプチャを無効にする
  • HolographicCamera の IsHardwareContentProtectionEnabled を設定して、関連付けられているホログラフィック カメラの Mixed Reality キャプチャを無効にする

パスワード キーボード

Windows 10 May 2019 Update を使用すると、パスワードまたはピン キーボードが表示されているときに、ビジュアル コンテンツが Mixed Reality キャプチャから自動的に除外されます。

MRC がアクティブなときがわかっている

アプリで AppCapture クラスを使用すると、システムの Mixed Reality キャプチャが実行されているかどうかを知ることができます (オーディオまたはビデオのいずれか)。

Note

デバイスで Mixed Reality キャプチャを利用できない場合、AppCapture の GetForCurrentView API は null を返すことがあります。 アプリが中断されたときに CapturingChanged イベントの登録を解除することも重要です。そうしないと、MRC はブロックされた状態になります。

アプリ内から MRC 機能を統合する

Mixed Reality アプリでは、アプリ内から MRC の写真またはビデオ キャプチャを開始できます。キャプチャされたコンテンツは、デバイスの "カメラ ロール" に格納されることなく、アプリで使用可能になります。カスタム MRC レコーダーを作成することも、組み込みのカメラ キャプチャ UI を利用することもできます。

組み込みのカメラ UI を備えた MRC

開発者は、"カメラ キャプチャ UI API" を使用して、数行のコードを書くだけでユーザーがキャプチャした Mixed Reality の写真やビデオを取得できます。

この API によって組み込みの MRC カメラ UI が起動され、ユーザーは写真やビデオを撮影し、結果のキャプチャをアプリに返すことができます。 独自のカメラ UI または下位レベルのアクセスをキャプチャ ストリームに追加する必要がある場合は、カスタム Mixed Reality キャプチャ レコーダーを作成できます。

画面キャプチャを使用した MRC

2021 年 5 月HoloLens 2更新プログラム (Windows Holographic バージョン 21H1 ビルド 20346.1002) を使用すると、開発者は画面キャプチャ API を使用して Mixed Reality ビデオ フレームのストリームを要求できます。

カスタム MRC レコーダーの作成

ユーザーはシステム MRC キャプチャ サービスを使用していつでも写真やビデオをトリガーすることができますが、アプリケーションで、MRC と同じようにカメラ ストリームにホログラムを含むカスタム カメラ アプリを構築することが必要な場合があります。 これにより、アプリケーションでユーザー入力からのキャプチャの開始、カスタム記録 UI の作成、MRC 設定のカスタマイズを行うことができます。これらはほんの数例にすぎません。

HoloStudio で MRC 効果を使用してカスタム MRC カメラを追加する

HoloStudio で MRC 効果を使用してカスタム MRC カメラを追加する

他のアプリケーションでこれを行うには、Windows Media キャプチャ API を使用してカメラを制御し、MRC ビデオとオーディオ効果を追加して、仮想ホログラムとアプリケーション オーディオを静止画とビデオに含めます。

アプリケーションには、効果を追加するための 2 つのオプションがあります。

Note

Windows.Media.MixedRealityCapture 名前空間は Visual Studio で認識されませんが、文字列はまだ有効です。

MRC ビデオ効果 (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

プロパティ名 Type 既定値 説明
StreamType UINT32 (MediaStreamType) 1 (VideoRecord) この効果がどのキャプチャ ストリームに使用されるかを説明します。 オーディオは使用できません。
HologramCompositionEnabled boolean true ビデオ キャプチャのホログラムを有効または無効にするフラグを設定します。
RecordingIndicatorEnabled boolean TRUE ホログラムのキャプチャ中に画面の記録インジケーターを有効または無効にするフラグを設定します。
VideoStabilizationEnabled boolean false HoloLens トラッカーを使用して、ビデオの安定化を有効または無効にするフラグを設定します。
VideoStabilizationBufferLength UINT32 0 ビデオ安定化に使用する履歴フレームの数を設定します。 0 は待機時間が 0 であり、電力とパフォーマンスの観点からはほぼ "無料" です。 最大品質には 15 が推奨されます (待機時間とメモリの 15 フレームが代償となります)。
GlobalOpacityCoefficient float 0.9 (HoloLens) 1.0 (イマーシブ ヘッドセット) 0.0 (完全に透明) から 1.0 (完全に不透明) までの範囲内のホログラムのグローバル不透明度係数を設定します。
BlankOnProtectedContent boolean FALSE 保護されたコンテンツを示す 2D UWP アプリがある場合に、空のフレームを返すことを有効または無効にするフラグを設定します。 このフラグが false であり、2D UWP アプリで保護されたコンテンツが表示されている場合、2D UWP アプリはヘッドセットと Mixed Reality キャプチャの両方で保護されたコンテンツ テクスチャに置き換えられます。
ShowHiddenMesh boolean false ホログラフィック カメラの非表示領域メッシュと隣接するコンテンツの表示を有効または無効にするフラグを設定します。
OutputSize サイズ 0, 0 ビデオの安定化のトリミング後に、目的の出力サイズを設定します。 0 または無効な出力サイズが指定されている場合は、既定のトリミング サイズが選択されます。
OutputSubtype String Nv12 ホログラムの合成やビデオ安定化の後に、目的の出力サブタイプを設定します。 Nv12 および Argb32MediaEncodingSubtypes をサポートします
PreferredHologramPerspective UINT32 Windows デバイス ポータルでのカメラ設定からのレンダリング キャプチャするホログラフィック カメラ ビューの構成を示すために使用される列挙: 0 (Display) は、アプリが写真またはビデオ カメラからのレンダリングを要求されないことを意味します。1 (PhotoVideoCamera) は、アプリが写真またはビデオ カメラからレンダリングするように要求します (アプリがサポートしている場合)。 HoloLens 2 でのみサポートされます。

Note

Windows デバイスポータルで PreferredHologramPerspective の既定値を変更するには、[Mixed Reality キャプチャ] ページに移動し、[カメラからのレンダリング] をオフにします。 この設定は既定で [1 (PhotoVideoCamera)] に設定されていますが、選択を解除して [0 (Display)] に設定できます。

PreferredHologramPerspective の既定値は、2020 年 6 月の更新プログラム (Windows Holographic、バージョン 2004 ビルド 19041.1106、Windows Holographic、バージョン 1903 ビルド 18362.1064) の前は [0 (Display)] でした。

OutputSubtype のサポートは、2021 年 5 月の更新プログラム (Windows Holographic バージョン 21H1 ビルド 20346.1002) で追加されました。

MRC オーディオ効果 (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

プロパティ名 Type 既定値 説明
MixerMode UINT32 2 (マイクとシステム オーディオ) 使用するオーディオ ソースを示すために使用する列挙: 0 (マイク オーディオのみ)、1 (システム オーディオのみ)、2 (マイクおよびシステム オーディオ)
LoopbackGain float Windows デバイス ポータルでのアプリ オーディオ ゲイン設定 システム オーディオ ボリュームにゲインを適用します。 範囲は 0.0 から 5.0 です。 HoloLens 2 でのみサポートされます。
MicrophoneGain float Windows デバイス ポータルでのマイク オーディオ ゲイン設定 マイク ボリュームにゲインを適用します。 範囲は 0.0 から 5.0 です。 HoloLens 2 でのみサポートされます。

Note

Windows デバイス ポータルの LoopbackGain または MicrophoneGain の既定値を変更するには、[Mixed Reality キャプチャ] ページに移動し、それぞれの設定の横にあるスライダーを調整します。 どちらの設定も既定で 1.0 に設定されていますが、0.0 から 5.0 までの任意の値に設定できます。

既定のゲイン値を構成するための Windows デバイス ポータルの使用は、2020 年 6 月の更新プログラム (Windows Holographic、バージョン 2004 ビルド 19041.1106、Windows Holographic、バージョン 1903 ビルド 18362.1064) で追加されました。

同時 MRC の制限事項

複数のアプリで MRC に同時にアクセスする場合は、特定の制限事項に注意する必要があります。

写真/ビデオ カメラのアクセス

HoloLens 1 では、プロセスでビデオを記録したり、写真を撮影したりしている間、MRC で写真のキャプチャやビデオのキャプチャに失敗します。 逆の場合も同じになります。MRC が実行されている場合、アプリケーションではカメラへのアクセスに失敗します。

HoloLens 2 を使用すると、カメラへのアクセスを共有することができます。 解像度やフレームレートを直接制御する必要がない場合は、SharedMode プロパティを SharedReadOnly と一緒に使用して MediaCapture を初期化できます。

組み込みの MRC 写真およびビデオ カメラのアクセス

Windows 10 に組み込まれた MRC 機能 (Cortana、[スタート] メニュー、ハードウェア ショートカット、Miracast、Windows デバイス ポータル):

  • 既定では ExclusiveControl を使用して実行される

ただし、共有モードで動作するための次のサポートが MRC サブシステムに追加されています。

  • アプリが写真またはビデオ カメラへの ExclusiveControl アクセスを要求した場合、組み込みの MRC は、アプリの要求が成功するように、写真またはビデオ カメラの使用を自動的に停止する
  • アプリの ExclusiveControl 中に作成された MRC が開始された場合、組み込みの MRC は SharedReadOnly モードで実行される

この共有モード機能には、いくつかの制限があります。

  • Cortana、ハードウェア ショートカット、または [スタート] メニューを使用した写真: Windows 10 April 2018 Update (またはそれ以降) が必要
  • Cortana、ハードウェア ショートカット、または [スタート] メニューを使用したビデオ: Windows 10 April 2018 Update (またはそれ以降) が必要
  • Miracast 経由のストリーミング MRC: Windows 10 October 2018 Update (またはそれ以降) が必要
  • Windows デバイス ポータルまたは HoloLens コンパニオン アプリ経由のストリーミング MRC: HoloLens 2 が必要

Note

別のアプリが写真またはビデオ カメラを使用している場合、組み込みの MRC カメラ UI の解像度とフレームレートは通常の値から小さくなることがあります。

開発者向けの MRC アクセス

MRC を使用するときは、常にカメラの排他的制御を要求することをお勧めします。 これにより、上記の制限事項を認識している限り、アプリケーションでカメラの設定を完全に制御できるようになります。

  • 初期化設定を使用してメディア キャプチャ オブジェクトを作成する
  • SharingMode プロパティを exclusive に設定する

注意事項

続ける前に、Sharingmode の解説に関する記事をよくお読みください。

  • カメラを希望どおりに設定する
  • アプリを起動し、API の起動でビデオ フレームをキャプチャしてから MRC を有効にする

注意事項

アプリを起動する前に、MRC を起動した場合、機能が期待どおりに動作するかは保証できません。

上記のプロセスの完全なサンプルについては、ホログラフィック顔追跡のサンプルを参照してください。

Note

Windows 10 April 2018 Update 以前は、アプリのカスタム MRC レコーダーはシステム MRC と同時に使用できませんでした (写真のキャプチャ、ビデオのキャプチャ、または Windows デバイス ポータルからのストリーミング)。

関連項目