共用方式為


混合實境擷取概觀

注意事項

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

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

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

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

品質 MRC 的重要性

無論是您Microsoft市集頁面上的混合實境螢幕快照,還是在社交網路上共用擷取內容的其他使用者,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 會導致黑色背景

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

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

解決方案

  • 將顯示為不透明黑色的任何內容變更為alpha值為0。
  • 確定應用程式清除為透明黑色。
  • Unity 預設會使用 MixedRealityToolkit 自動清除,但如果是非 Unity 應用程式,您應該修改 ID3D11DeiceContext::ClearRenderTargetView () 使用的色彩。 您想要確保清除為透明的黑色 (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 時,裝置右眼的全像投影內容可能會顯示為「閃爍」:文字可能會變得更難以閱讀,而全像投影邊緣可能會在選擇加入 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 將無法擷取相片或擷取視訊。 反之亦然:如果 MRC 正在執行,應用程式將無法存取相機。

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

內建 MRC 相片/視訊相機存取

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

適用於開發人員的 MRC 存取

使用 MRC 時,建議您一律要求相機的獨佔控制。 只要您知道上面所列的限制,這可確保您的應用程式能夠完全控制相機的設定。

深入瞭解 directX) (開發人員的 MRC 存取 權。

另請參閱