使用電腦資源為您的應用程式提供全像攝影遠端應用程式的電源

本文說明全像攝影遠端處理的下列使用案例:

  • 您希望電腦的資源提供應用程式電源,而不是依賴 HoloLens 上線資源:您可以建立並建置具有全像攝影遠端功能的應用程式。 使用者體驗 HoloLens 上的應用程式,但應用程式實際上會在電腦上執行,這可讓應用程式利用電腦更強大的資源。 如果您的 app 有高解析度的資產或模型,而且您不希望畫面播放速率受到影響,這特別有用。 我們稱之為 全像攝影遠端應用程式。 HoloLens 的輸入--注視、手勢、語音和空間對應,會傳送至電腦,其中內容會在虛擬沉浸式檢視中轉譯。 轉譯的畫面格接著會傳送至 HoloLens。

這種類型的全像攝影遠端功能也適用于Windows Mixed Reality (WMR) 沉浸式頭戴式裝置。 例如,如果您的 WMR 頭戴式裝置已連線到一台功能強大的電腦,而且您想要將應用程式從更強大的電腦串流處理到新電腦,這非常有用。

若要深入瞭解全像攝影遠端處理,請參閱 全像攝影遠端概觀

請注意, 如果您想要在開發過程中預覽和偵錯應用程式,也可以使用全像攝影遠端處理。

全像攝影遠端中的兩種可用模式

模式 1:在連線模式的電腦上執行的遠端應用程式,在接聽模式中執行HoloLens 2播放程式。

當遠端應用程式嘗試連線時,Player 會接聽連入連線。

模式 2:以接聽模式在電腦上執行的遠端應用程式、在連線模式中HoloLens 2執行的播放機。

當播放機嘗試連線時,遠端應用程式會接聽連入連線。

設定全像攝影遠端播放程式應用程式

若要單獨在 Mode 1 中使用全像攝影遠端處理,請在本文的HoloLens 2 (上從 Microsoft Store 安裝全像攝影遠端播放程式應用程式,我們將它直接稱為「播放機」) 。 如下所述,下載並執行應用程式之後,您會看到要連線的版本號碼和 IP 位址。 我們建議使用最新版的 Player。

全像攝影遠端需要快速的電腦和Wi-Fi連線。 您可以在上述連結的 Player 文章中找到更多詳細資料。

在 HoloLens 中執行的全像攝影遠端播放程式螢幕擷取畫面

若要在上述兩種指定的模式中使用全像攝影遠端處理,您需要複製全像攝影遠端範例播放程式,並使用 Visual Studio 將其部署至HoloLens 2。

使用 Unity 建置在電腦上執行的遠端應用程式以進行全像攝影遠端處理

  1. 在功能表列上,選取 [編輯 > 專案設定]。

  2. 在左側資料行中,選取 [XR 外掛程式管理]。

  3. 確定您位於[通用 Windows 平臺設定] 索引標籤中。

    顯示 [管理] 視窗中XR-Plug的螢幕擷取畫面,其中已選取 [通用 Windows 平臺] 索引標籤。

  4. [OpenXR外掛程式] 區段中,選取[Microsoft HoloLens功能群組] 和 [全像攝影遠端遠端應用程式] 功能群組

    此螢幕擷取畫面顯示已選取 [Microsoft HoloLens功能群組] 和 [全像攝影遠端應用程式功能群組] 的 OpenXr 外掛程式。

  5. 取消選取 [啟動時初始化 XR ] 核取方塊。

    [XR 外掛程式管理] 視窗的螢幕擷取畫面,其中未選取 [在啟動時初始化 XR]。

  6. 撰寫一些程式碼來設定遠端設定並觸發 XR 初始化。 應用程式可以針對 Mode 1 呼叫 Connect 函式,或呼叫 Mode 2 的 Listen 函式。 若要查看範例,請下載我們的 Open XR Unity Mixed Reality 範例,然後在RemotingSample專案中檢視AppRemoting.cs腳本。

  7. 針對模式 1,連線模式會使用填入 RemotingConfiguration 的 呼叫 Microsoft.MixedReality.OpenXR.Remoting.AppRemoting.Connect 。 範例應用程式會在 Inspector 中公開此專案,並示範如何從文字欄位填入 IP 位址。 呼叫 Connect 會設定組態並自動初始化 XR,這就是為什麼必須將其呼叫為協同程式的原因:

    StartCoroutine(Remoting.AppRemoting.Connect(remotingConfiguration));
    
  8. 針對模式 2,接模式會以填入 RemotingListenConfiguration 的 呼叫 Microsoft.MixedReality.OpenXR.Remoting.AppRemoting.Listen 。 範例應用程式會在 Inspector 中公開此專案。 呼叫 Listen 會設定組態,並等候來自全像攝影遠端範例播放程式的連線,這就是為什麼必須將其稱為協同程式的原因:

    StartCoroutine(Remoting.AppRemoting.Listen(remotingListenConfiguration));
    
  9. 執行時,您可以使用 API 取得目前的線上狀態 AppRemoting.TryGetConnectionState ,並選擇性地使用 AppRemoting.Disconnect() 中斷和取消初始化 XR。 這可用來中斷連線並重新連線到相同應用程式會話內的不同裝置。 RemotingSample 應用程式會提供可套用的 Cube,這會在點選時中斷遠端會話的連線。

在上述模式中執行全像攝影遠端應用程式和播放機應用程式

模式 1:以連線模式在電腦上執行全像攝影遠端應用程式,並在接聽模式中執行播放機:

  1. 如果已在HoloLens 2上從市集安裝 Player,請略過下方的步驟數位 2 和 3,您可以在其中建置並執行範例播放機應用程式。 請改為執行已安裝的 Player,並繼續執行步驟 #4。

  2. 使用 VS 2019 開啟全像攝影遠端範例播放機應用程式,然後執行下列其中一項:

    若要使用 USB 纜線在HoloLens 2上執行

    • 設定組建選項,如下所示:

    如果使用者透過 USB 纜線連線,Visual Studio 組建設定的螢幕擷取畫面。

    • 開啟專案的 [屬性]頁面,然後流覽至 [組態屬性> 偵錯]。
    • 按一下 [偵錯工具] 以啟動 下拉式清單,然後選取 [裝置]。
    • 在 [ 命令列引數] 欄位中,新增 「-listen」。

    使用 USB 纜線建置之命令列引數的螢幕擷取畫面。

    若要使用 Wifi 在HoloLens 2上執行

    • 設定組建選項,如下所示:

    如果使用者使用 Wifi 建置至 HoloLens,則為 的 Visual Studio 組建設定螢幕擷取畫面。

    • 開啟專案的 [屬性]頁面,然後流覽至 [組態屬性> 偵錯]。
    • 按一下 [偵錯工具] 以啟動 下拉式清單,然後選取 [遠端電腦]。
    • 在 [ 命令列引數] 欄位中,新增 HoloLens 的 Wifi IP 位址。
  3. 若要將 SamplePlayer 方案部署至HoloLens 2,請按 Visual Studio 中的播放按鈕。 您將能夠看到在 HoloLens 2 上執行的 HAR 範例播放程式,顯示其「正在等候HoloLens 2 IP 位址上的連線」。

  4. 在主機電腦上執行的遠端應用程式中,新增上面顯示的HoloLens 2 IP 位址,然後選取 [連線]。

  5. 建立連線之後,在HoloLens 2上執行的 Player 將會啟動「接收」。

模式 2:在接聽模式中在電腦上執行遠端應用程式,並在連線模式中執行 HAR 播放程式應用程式:

  • 在電腦上執行的遠端應用程式中的 2D UI 畫面上,按一下 [ 接聽]。

    如果使用者透過 USB 纜線連線,Visual Studio 組建設定的螢幕擷取畫面。

  • 開啟專案的 [屬性]頁面,然後流覽至 [組態屬性> 偵錯]。

  • 按一下 [偵錯工具] 以啟動 下拉式清單,然後選取 [裝置]。

  • 在 [ 命令列引數] 欄位中,新增主機電腦的 IP 位址。

使用 USB 纜線建置之命令列引數的螢幕擷取畫面。

  • 若要將 SamplePlayer 方案部署至HoloLens 2,請在 Visual Studio 解決方案中,按一下 [播放] 按鈕。 您將能夠看到在HoloLens 2上執行的 HAR 範例播放程式,顯示其為「連線到命令列引數中提供的 IP 位址」。

  • 建立連線之後,在HoloLens 2上執行的全像攝影遠端範例播放機應用程式將會啟動「接收」。

提示

若要獲得最佳結果,請確定您的應用程式已正確設定 。。/focus point。 這可協助全像攝影遠端處理將場景最適合無線連線的延遲。

從先前的全像攝影遠端 API 移轉

若要深入瞭解全像攝影遠端處理,請參閱 全像攝影遠端概觀

UnityEngine.XR.WSA.HolographicRemoting

Unity 檔上的範例程式碼:

XR。Wsa。HolographicRemoting OpenXR.Remoting.AppRemoting
HolographicRemoting.ConnectRemotingSession() AppRemoting.Connect(RemotingConfiguration)
HolographicRemoting.DisconnectRemotingSession() AppRemoting.Disconnect()
HolographicRemoting.ConnectionState AppRemoting.TryGetConnectionState(out ConnectionState, out DisconnectReason)

UnityEngine。XR。WindowsMR。WindowsMRRemoting

XR。WindowsMR。WindowsMRRemoting OpenXR.Remoting.AppRemoting
WindowsMRRemoting.Connect() AppRemoting.Connect(RemotingConfiguration)
WindowsMRRemoting.Listen() AppRemoting.Listen(RemotingListenConfiguration)
WindowsMRRemoting.Disconnect() AppRemoting.Disconnect()
WindowsMRRemoting.TryGetConnectionState(out ConnectionState)WindowsMRRemoting.TryGetConnectionFailureReason(out ConnectionFailureReason) AppRemoting.TryGetConnectionState(out ConnectionState, out DisconnectReason)
WindowsMRRemoting.isAudioEnabled, WindowsMRRemoting.maxBitRateKbps, WindowsMRRemoting.remoteMachineName 透過 RemotingConfiguration 結構傳入 AppRemoting.Connect
WindowsMRRemoting.isConnected AppRemoting.TryGetConnectionState(out ConnectionState state, out _) && state == ConnectionState.Connected

另請參閱