注:
HoloLens 2の新しい MRC 機能に関するガイダンスについては、以下の「PV カメラからのレンダリング」を参照してください。
Mixed Reality Capture (MRC) の写真やビデオはいつでも撮影できますが、アプリケーションを開発する際に留意すべき点はほとんどありません。 これには、MRC のビジュアル品質に関するベスト プラクティスと、MRC のキャプチャ中にシステムの変更に対応するためのベスト プラクティスが含まれます。
開発者は、Mixed Reality のキャプチャと挿入をアプリにシームレスに統合することもできます。
HoloLens の MRC (第 1 世代) は最大 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 メートルになります。
PV カメラからのレンダリング (オプトイン)
HoloLens 2は、Mixed Reality キャプチャの実行中に、イマーシブ アプリが PV カメラからレンダリングされる機能を追加します。 アプリで追加のレンダリングが正しくサポートされるようにするには、アプリでこの機能をオプトインする必要があります。
PV カメラからのレンダリングでは、既定の MRC エクスペリエンスに対して次の機能強化が提供されます。
- 物理的な環境と近い相互作用に対する手へのホログラムの配置は、すべての距離で正確である必要があります。 既定の MRC に表示される場合と同様に、フォーカス ポイント以外の距離でオフセットを設定することは避けてください。
- ヘッドセットの右目は、MRC 出力のホログラムのレンダリングに使用されないため、侵害されません。
PV カメラ (DirectX) からのレンダリングについて詳しくは、こちらをご覧ください。
ベスト プラクティス (HoloLens 固有)
MRC は追加の開発作業なしで動作することが期待されますが、最適な Mixed Reality キャプチャ エクスペリエンスを提供する場合に注意する必要がある点がいくつかあります。
MRC はホログラムのアルファ チャネルを使用して カメラ 画像とブレンドします
最も重要な手順は、不透明な黒にクリアするのではなく、アプリが透明な黒にクリアされていることを確認することです。 Unityでは、これは MixedRealityToolkit で既定で実行されます。 Unity以外で開発している場合は、1 行の変更が必要になる場合があります。
アプリが透明な黒にクリアされていない場合に MRC に表示されるアーティファクトの一部を次に示します。
エラーの例: コンテンツの周囲の黒いエッジ (透明な黒にクリアできない)
|
|
エラーの例: ホログラムの背景シーン全体が黒で表示されます。 背景のアルファ値を 1 に設定すると、黒い背景になります
予想される結果: ホログラムが現実世界と適切にブレンドされて表示されます (透明な黒にクリアすると予想される結果)
解決策:
- 不透明な黒として表示されているコンテンツを、アルファ値が 0 に変更します。
- アプリが透明な黒にクリアされていることを確認します。
- Unity既定では MixedRealityToolkit を使用して自動的にクリアされますが、Unity以外のアプリの場合は、ID3D11DeiceContext::ClearRenderTargetView() で使用される色を変更する必要があります。 不透明な黒 (0,0,0,0,1) ではなく、透明な黒 (0,0,0,0,0) をクリアする必要があります。
必要に応じてアセットのアルファ値を調整できるようになりましたが、通常は必要ありません。 ほとんどの場合、MRC はすぐに見えるようになります。 MRC は、事前に乗算されたアルファを前提としています。 アルファ値は MRC キャプチャにのみ影響します。
HoloLens で MRC が有効になっている場合に予想される内容
特に明記されていない限り、HoloLens (第 1 世代) とHoloLens 2の両方に以下が適用されます。
- システムは、アプリケーションを 30 Hz レンダリングに調整します。 これにより、MRC を実行するためのヘッドルームが作成されるため、アプリは一定の予算予約を維持する必要はありません。また、MRC ビデオ レコードのフレームレート 30 fps と一致します
- デバイスの右目のホログラム コンテンツは、MRC の記録/ストリーミング時に "きらめき" に見えることがあります。テキストの読み取りが難しくなり、ホログラムの端がよりぎざぎざのように見える場合があります (この侵害を回避HoloLens 2、3 番目のカメラ レンダリングをオプトインする)
- MRC の写真とビデオは、アプリケーションが有効にしている場合、アプリケーションの フォーカス ポイント を尊重し、ホログラムが正確に配置されるようにするのに役立ちます。 ビデオの場合、フォーカス ポイントはスムージングされるため、フォーカス ポイントの深度が大幅に変化すると、ホログラムがゆっくりと所定の位置にドリフトするように見える場合があります。 フォーカス ポイントとは異なる深度にあるホログラムは、現実世界からのオフセットとして表示される場合があります (フォーカス ポイントが 2 メートルに設定されているが、ホログラムが 1 メートルに配置されている下の例を参照してください)。
アプリ内からの 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 カメラを追加します
Unityアプリケーションには、ホログラムを有効にするプロパティのLocatable_camera_in_Unityが表示されます。
他のアプリケーションでは、 Windows Media Capture API を 使用してカメラを制御し、MRC ビデオとオーディオ効果を追加して仮想ホログラムとアプリケーション オーディオを静止画やビデオに含めることでこれを行うことができます。
詳細については、カスタム MRC レコーダー (DirectX) の作成に関するページを参照してください。
MRC の同時制限
複数のアプリが同時に MRC にアクセスする場合は、特定の制限事項に注意する必要があります。
写真/ビデオ カメラへのアクセス
HoloLens 1 では、プロセスがビデオの記録中または写真の撮影中に、MRC は写真のキャプチャやビデオのキャプチャに失敗します。 逆の場合も当てはまります。MRC が実行されている場合、アプリケーションはカメラにアクセスできません。
HoloLens 2を使用すると、カメラへのアクセスを共有できます。 解像度またはフレーム レートを直接制御する必要がない場合は、SharedReadOnly で SharedMode プロパティ を使用して MediaCapture を初期化できます。
MRC 写真/ビデオ カメラの組み込みアクセス
組み込みの MRC 写真/ビデオ カメラ アクセス (DirectX) について説明します。
開発者向けの MRC アクセス
MRC を使用する場合は、常にカメラの排他制御を要求することをお勧めします。 これにより、上記の制限事項を認識している限り、アプリケーションでカメラの設定を完全に制御できるようになります。
開発者向け MRC アクセス (DirectX) の詳細については、こちらをご覧ください。