混合實境擷取概觀
注意
如需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 輸出的全像投影。
HoloLens 特定) (最佳做法
MRC 預期不需要額外的開發工作,但在提供最佳混合實境擷取體驗時,需要注意幾件事。
MRC 使用全像投影的 Alpha 色板來混合 相機 影像
最重要的步驟是確定您的應用程式已清除為透明黑色,而不是清除為不透明黑色。 在 Unity 中,預設會使用 MixedRealityToolkit 來完成此動作。 如果您要在非 Unity 中開發,您可能需要進行一行變更。
如果您的應用程式未清除為透明黑色,您可能會在 MRC 中看到一些成品:
範例失敗:內容周圍的黑色邊緣 (無法清除為透明黑色)
範例失敗:全像投影的整個背景場景顯示為黑色。 設定一個背景 Alpha 值會導致黑色背景
預期結果:如果清除為透明黑色) ,全像投影會與真實世界 (預期的結果正確混合
解決方案:
- 將顯示為不透明黑色的任何內容變更為 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 公尺) 。
從您的應用程式內整合 MRC 功能
您的混合實境應用程式可以從應用程式內啟動 MRC 相片或視訊擷取,而所擷取的內容可供您的應用程式使用,而不會儲存到裝置的「相機捲動」。您可以建立自訂 MRC 錄製器,或利用內建相機擷取 UI。
內建相機 UI 的 MRC
開發人員可以使用 相機擷取 UI API 來取得使用者擷取的混合實境相片或視訊,只需幾行程式碼即可。
此 API 會啟動內建的 MRC 相機 UI,讓使用者可以拍攝相片或視訊,並將產生的擷取傳回至您的應用程式。 如果您需要新增自己的相機 UI 或較低層級的擷取串流存取,您可以建立自訂Mixed Reality擷取錄製器。
建立自訂 MRC 錄製器
雖然使用者一律可以使用系統 MRC 擷取服務來觸發相片或視訊,但應用程式可能會想要建置自訂相機應用程式,其中包含相機串流中的全像投影,就像 MRC 一樣。 這可讓應用程式從使用者輸入開始擷取、建置自訂錄製 UI,或自訂 MRC 設定以命名幾個範例。
HoloStudio 使用 MRC 效果新增自訂 MRC 相機
Unity 應用程式應該會看到 屬性Locatable_camera_in_Unity ,以啟用全像投影。
其他應用程式可以使用 Windows 媒體擷取 API 來控制相機,並新增 MRC 視訊和音訊效果,以在仍然和視訊中包含虛擬全像投影和應用程式音訊。
同時 MRC 限制
當多個應用程式同時存取 MRC 時,您必須注意某些限制。
相片/視訊相機存取
在 HoloLens 1 上,MRC 無法在程式錄製視訊或拍攝相片時擷取相片或擷取視訊。 反轉也是 true:如果 MRC 正在執行,應用程式將無法存取相機。
透過HoloLens 2,您可以共用相機的存取權。 如果您不需要直接控制解析度或畫面播放速率,您可以使用 SharedMode 屬性搭配 SharedReadOnly 初始化 MediaCapture。
內建 MRC 相片/攝影機存取
瞭解內建 MRC 相片/視訊相機存取 (DirectX) 。
適用于開發人員的 MRC 存取
建議您在使用 MRC 時,一律要求相機的獨佔控制。 只要您知道上述限制,您的應用程式就能完全控制相機的設定。
深入瞭解適用于開發人員的 MRC 存取權, (DirectX) 。