Mixed Reality キャプチャの概要

Note

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

Mixed Reality キャプチャ (MRC) の写真やビデオはいつでも撮影できますが、アプリケーションの開発時に留意すべきことがいくつかあります。 これには、MRC ビジュアル品質のベスト プラクティスと、MRC がキャプチャされている間のシステム変更への対応が含まれます。

また、開発者は、Mixed Reality キャプチャと挿入をアプリにシームレスに統合できます。

HoloLens (第 1 世代) 上の MRC では最大 720p のビデオと写真がサポートされ、HoloLens 2 上の MRC では最大 1080p のビデオと最大 4K 解像度の写真がサポートされています。

高品質の MRC の重要性

Microsoft Store ページの Mixed Reality スクリーンショットであるか、ソーシャル ネットワーク上での他のユーザーが共有するキャプチャ コンテンツであるかに関係なく、多くの場合、ユーザーは Mixed Reality キャプチャ メディアで初めてお客様のアプリに触れます。 MRC は、アプリのデモ、ユーザーの教育、ユーザーの調査と問題解決のために使用したり、複合世界での対話式操作を共有するようにユーザーに勧めるために使用したりできます。

MRC によってアプリが受ける影響

アプリでの MRC の有効化

既定では、ユーザーが Mixed Reality キャプチャを取得できるようにするために、アプリで何かを行う必要はありません。

アプリでの MRC の調整を改善できるようにする

既定では、Mixed Reality キャプチャでは、右目のホログラフィック出力と写真/ビデオ (PV) カメラが結合されます。 これらの 2 つのソースは、現在実行中のイマーシブ アプリによって設定されたフォーカス ポイントを使用して結合されます。

つまり、PV カメラと右側のディスプレイ間の物理的な距離が原因で、フォーカス面の外側のホログラムの位置が揃いません。

フォーカス ポイントを設定する

イマーシブ アプリ (HoloLens 上) では、補正平面の位置にするフォーカス ポイントを設定する必要があります。 これにより、ヘッドセットと Mixed Reality キャプチャの両方で最適な配置が確保されます。

フォーカス ポイントが設定されていない場合、補正平面の既定値は 2 m になります。

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

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

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

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

PV カメラからのレンダリングに関する詳細 (DirectX)

ベスト プラクティス (HoloLens 固有)

MRC は追加の開発作業なしで動作するように想定されていますが、最適な Mixed Reality キャプチャ エクスペリエンスを提供する際に注意すべき点がいくつかあります。

MRC は、ホログラムのアルファ チャネルを使用してカメラの画像と融合します

最も重要な手順は、アプリで不透明な黒にクリアせず、確実に透明な黒にクリアすることです。 Unity では、これは MixedRealityToolkit を使用して既定で行われます。 Unity 以外で開発している場合は、1 行の変更が必要なことがあります。

アプリで透明の黒にクリアしていない場合に MRC に表示されることがあるアーティファクトの一部を次に示します。

失敗例: コンテンツの周囲の黒い端 (透明の黒へクリアに失敗)

透明な黒にクリアできない: ホログラムの周囲の黒いエッジアーティファクト 透明な黒にクリアできない: ホログラムの周囲の黒いエッジアーティファクト

失敗例: ホログラムの背景シーン全体が黒で表示されます。 背景アルファ値を 1 に設定すると、黒い背景になります

背景のアルファ値を 1 に設定すると、背景が黒になります

想定されている結果: ホログラムが現実世界と正しく融合されて表示されます (透明な黒にクリアされた場合に想定される結果)

透明な黒にクリアすると予想される結果

解決策:

  • 不透明な黒として表示されているコンテンツを、アルファ値 0 を持つように変更します。
  • アプリが透明な黒にクリアされていることを確認します。
  • Unity では既定で、MixedRealityToolkit を使用して自動的にクリアされますが、Unity 以外のアプリの場合は、ID3D11DeiceContext::ClearRenderTargetView() で使用される色を変更する必要があります。 不透明な黒 (0,0,0,1) ではなく、透明な黒 (0,0,0,0) に確実にクリアする必要があります。

これで必要に応じてアセットのアルファ値を調整できまるようになりましたが、通常は必要ありません。 ほとんどの場合、MRC の見た目は既定のままで最適です。 MRC では、事前に乗算されたアルファが想定されます。 アルファ値は MRC キャプチャにのみ影響します。

HoloLens で MRC が有効になっているときに想定されること

特に指定がない限り、次のことは HoloLens (第 1 世代) と HoloLens 2 の両方に適用されます。

  • システムでは、アプリケーションを 30 Hz のレンダリングに抑えます。 これにより、MRC を実行するためのヘッドルームが作成されるため、アプリは一定の予算予約を維持する必要がなく、30 FPS の MRC ビデオ レコード フレーム レートにも一致します
  • デバイスの右目のホログラム コンテンツは、MRC の記録/ストリーミング時に "きらめく" ように見える場合があります。テキストの読み取りが困難になり、ホログラムの端がよりギザギザしているように見えることがあります (HoloLens 2 で 3 番目のカメラ レンダリングにオプトインすると、この障害が回避されます)
  • MRC の写真やビデオでは、アプリケーションのフォーカス ポイントが考慮されます (アプリケーションで有効になっている場合)。これにより、ホログラムが正確に配置されるようになります。 ビデオでは、フォーカス ポイントが平滑化されるため、フォーカス ポイントの深さが大幅に変化した場合に、ホログラムが徐々に適した位置に移動するように見えることがあります。 フォーカス ポイントとは異なる深さにあるホログラムでは、現実世界から相対位置変更されて表示される場合があります (フォーカス ポイントが 2 m に設定されているが、ホログラムが 1 m に配置されている以下の例を参照)。

2 メートルのホログラムは、世界に完全に登録されて表示されます。近距離または遠距離のホログラムは、わずかにオフセットされる場合があります。

アプリ内からの MRC 機能の統合

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

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

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

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

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

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

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

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

Unity アプリケーションでは、プロパティでホログラムを有効にするために Locatable_camera_in_Unity を確認する必要があります。

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

カスタム MRC レコーダーの作成に関する詳細 (DirectX)

同時 MRC の制限事項

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

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

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

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

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

組み込みの MRC 写真/ビデオ カメラのアクセスに関する詳細 (DirectX)

開発者の MRC アクセス

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

開発者の MRC アクセスに関する詳細 (DirectX)

関連項目