混合實境擷取概觀

注意

如需HoloLens 2的新 MRC 功能指引,請參閱下方的 PV 相機轉譯。

您可以隨時擷 取混合實境擷取 (MRC) 相片或視訊,但開發應用程式時請記住幾件事。 這包括 MRC 視覺品質的最佳做法,以及在擷取 MRC 時回應系統變更。

開發人員也可以順暢地將混合實境擷取和插入整合到其應用程式中。

HoloLens 上的 MRC (第一代) 支援最多 720p 的視訊和相片,而 HoloLens 2 上的 MRC 支援最多 1080p 的影片,以及最多 4K 解析度的相片。

品質 MRC 的重要性

無論是 Microsoft Store 頁面上的混合實境螢幕擷取畫面,還是其他使用者在社交網路上共用擷取內容,Mixed Reality擷取媒體通常是使用者第一次公開您的應用程式。 您可以使用 MRC 來示範您的應用程式、教育使用者、鼓勵使用者分享其混合世界互動,以及使用者研究及解決問題。

MRC 如何影響您的應用程式

在您的應用程式中啟用 MRC

根據預設,應用程式不需要執行任何動作,就能讓使用者取得混合實境擷取。

為應用程式中的 MRC 啟用改善的對齊方式

根據預設,混合實境擷取會將右眼的全像攝影輸出與相片/視訊 (PV) 相機結合。 這兩個來源會使用目前執行的沈浸式應用程式所設定的焦點來結合。

這表示焦點平面外的全像投影不會對齊,因為 PV 相機與右側顯示器之間的實體距離。

設定焦點

HoloLens) 上的沈浸式應用程式 (應該設定其穩定平面的 焦點 。 這可確保頭戴式裝置和混合實境擷取中的最佳對齊方式。

如果未設定焦點,穩定平面預設為 2 公尺。

從 PV 相機轉譯 (加入宣告)

HoloLens 2新增沉浸式應用程式在混合實境擷取執行時從 PV 相機轉譯的能力。 若要確保應用程式支援其他正確轉譯,應用程式必須加入宣告這項功能。

從 PV 攝影機轉譯提供下列改善功能,而非預設 MRC 體驗:

  • 全像投影與您的實體環境對齊,手部幾乎互動應該在所有距離都正確。 避免在焦點以外的距離有位移,因為您可能會在預設 MRC 中看到。
  • 頭戴式裝置中的右眼不會遭到入侵,因為它不會用來轉譯 MRC 輸出的全像投影。

深入瞭解從 PV 相機轉譯 (DirectX)

HoloLens 特定) (最佳做法

MRC 預期不需要額外的開發工作,但在提供最佳混合實境擷取體驗時,需要注意幾件事。

MRC 使用全像投影的 Alpha 色板來混合 相機 影像

最重要的步驟是確定您的應用程式已清除為透明黑色,而不是清除為不透明黑色。 在 Unity 中,預設會使用 MixedRealityToolkit 來完成此動作。 如果您要在非 Unity 中開發,您可能需要進行一行變更。

如果您的應用程式未清除為透明黑色,您可能會在 MRC 中看到一些成品:

範例失敗:內容周圍的黑色邊緣 (無法清除為透明黑色)

無法清除透明黑色:全像投影周圍的黑色邊緣成品 無法清除透明黑色:全像投影周圍的黑色邊緣成品

範例失敗:全像投影的整個背景場景顯示為黑色。 設定一個背景 Alpha 值會導致黑色背景

設定背景 Alpha 值 1 會導致黑色背景

預期結果:如果清除為透明黑色) ,全像投影會與真實世界 (預期的結果正確混合

清除為透明黑色的預期結果

解決方案

  • 將顯示為不透明黑色的任何內容變更為 0 的 Alpha 值。
  • 確定應用程式已清除為透明黑色。
  • Unity 預設為使用 MixedRealityToolkit 自動清除,但如果它是非 Unity 應用程式,您應該修改與 ID3D11DeiceCoNtext::ClearRenderTargetView () 搭配使用的色彩。 您想要確保透明黑色 (0,0,0,0,0) ,而不是不透明黑色 (0,0,0,1) 。

如果您想要的話,您現在可以調整資產的 Alpha 值,但通常不需要。 在大部分情況下,MRC 看起來會現化良好。 MRC 假設預先乘以 Alpha。 Alpha 值只會影響 MRC 擷取。

在 HoloLens 上啟用 MRC 時的預期情況

除非另有說明,否則適用于 HoloLens (第一代) 和HoloLens 2:

  • 系統會將應用程式節流至 30-Hz 轉譯。 這會為 MRC 建立一些執行空間,讓應用程式不需要保留固定預算,也符合 30 fps 的 MRC 視訊錄製畫面播放速率
  • 錄製/串流 MRC 時,裝置右眼中的全像投影內容可能會顯示為「sparkle」:文字可能會變得較難閱讀,而全像投影邊緣在加入宣告第三個相機轉譯時 (,HoloLens 2避免這種入侵)
  • 如果應用程式已啟用,MRC 相片和影片將會遵守應用程式的 焦點 ,這有助於確保全像投影正確定位。 針對影片,焦點會平滑化,因此如果焦點深度大幅變更,全像投影可能會緩慢漂移到位置。 與焦點位於不同深度的全像投影可能會與真實世界相差 (請參閱下方範例,其中焦點設定為 2 公尺,但全像投影位於 1 公尺) 。

2 公尺的全像投影將會完美地向世界註冊。接近或遠距離的全像投影可能會稍微位移。

從您的應用程式內整合 MRC 功能

您的混合實境應用程式可以從應用程式內啟動 MRC 相片或視訊擷取,而所擷取的內容可供您的應用程式使用,而不會儲存到裝置的「相機捲動」。您可以建立自訂 MRC 錄製器,或利用內建相機擷取 UI。

內建相機 UI 的 MRC

開發人員可以使用 相機擷取 UI API 來取得使用者擷取的混合實境相片或視訊,只需幾行程式碼即可。

此 API 會啟動內建的 MRC 相機 UI,讓使用者可以拍攝相片或視訊,並將產生的擷取傳回至您的應用程式。 如果您需要新增自己的相機 UI 或較低層級的擷取串流存取,您可以建立自訂Mixed Reality擷取錄製器。

建立自訂 MRC 錄製器

雖然使用者一律可以使用系統 MRC 擷取服務來觸發相片或視訊,但應用程式可能會想要建置自訂相機應用程式,其中包含相機串流中的全像投影,就像 MRC 一樣。 這可讓應用程式從使用者輸入開始擷取、建置自訂錄製 UI,或自訂 MRC 設定以命名幾個範例。

HoloStudio 使用 MRC 效果新增自訂 MRC 相機

HoloStudio 使用 MRC 效果新增自訂 MRC 相機

Unity 應用程式應該會看到 屬性Locatable_camera_in_Unity ,以啟用全像投影。

其他應用程式可以使用 Windows 媒體擷取 API 來控制相機,並新增 MRC 視訊和音訊效果,以在仍然和視訊中包含虛擬全像投影和應用程式音訊。

深入瞭解 (DirectX) 建立自訂 MRC 錄製器

同時 MRC 限制

當多個應用程式同時存取 MRC 時,您必須注意某些限制。

相片/視訊相機存取

在 HoloLens 1 上,MRC 無法在程式錄製視訊或拍攝相片時擷取相片或擷取視訊。 反轉也是 true:如果 MRC 正在執行,應用程式將無法存取相機。

透過HoloLens 2,您可以共用相機的存取權。 如果您不需要直接控制解析度或畫面播放速率,您可以使用 SharedMode 屬性搭配 SharedReadOnly 初始化 MediaCapture。

內建 MRC 相片/攝影機存取

瞭解內建 MRC 相片/視訊相機存取 (DirectX)

適用于開發人員的 MRC 存取

建議您在使用 MRC 時,一律要求相機的獨佔控制。 只要您知道上述限制,您的應用程式就能完全控制相機的設定。

深入瞭解適用于開發人員的 MRC 存取權, (DirectX)

另請參閱