PC リソースを使用し、Holographic Remoting リモート アプリでアプリを強化します
この記事では、Holographic Remoting の次のユース ケースについて紹介します。
- HoloLens のオンボードリソースに依存するのではなく、PC のリソースでアプリを強化したい: Holographic Remoting 機能を備えたアプリを作成および構築できます。 ユーザーは HoloLens でアプリを体験できますが、アプリは実際には PC で実行されるため、アプリは PC のより強力なリソースを活用できます。 これは、アプリに高解像度の資産またはモデルがあり、フレーム レートを低下させたくない場合に特に役立ちます。 これを Holographic Remoting リモート アプリと呼んでいます。 HoloLens からの入力 (視線、ジェスチャ、音声、および空間マッピング) は はPCに送信され、そこでコンテンツが仮想のイマーシブ ビューでレンダリングされます。 その後、レンダリングされたフレームが HoloLens に送信されます。
この種類の Holographic Remoting は、Windows Mixed Reality (WMR) イマーシブ ヘッドセットでも使用できます。 これは、たとえば、WMR ヘッドセットがバックアップ PC に接続されていて、アプリをより強力な PC からバックパック PC にストリーミングしたい場合に便利です。
Holographic Remoting の詳細については、「Holographic Remoting の概要」を参照してください
開発プロセス中にアプリをプレビューしてデバッグしたい場合に、Holographic Remoting を使用することもできます。
Holographic Remoting で使用可能な 2 つのモード
モード 1: 接続モードで PC 上で実行されているリモート アプリ、リッスン モードでHoloLens 2で実行されているプレーヤー。
プレーヤーは、リモート アプリが接続を試みる間、受信接続をリッスンします。
モード 2: リッスン モードで PC 上で実行されているリモート アプリ、接続モードでHoloLens 2で実行されているプレーヤー。
プレーヤーが接続を試みる間、リモート アプリは着信接続をリッスンします。
Holographic Remoting プレーヤー アプリのセットアップ
モード 1 のみで Holographic Remoting を使用するには、Microsoft Store から Holographic Remoting Player アプリをHoloLens 2にインストールします (この記事では、単に "プレーヤー" と参照します)。 以下で説明するように、アプリをダウンロードして実行すると、バージョン番号と、接続先の IP アドレスが表示されます。 利用可能なプレーヤーの最新バージョンを使用することをお勧めします。
Holographic Remoting では、高速の PC と Wi-Fi 接続が必要です。 詳細については、上記のリンク先のプレーヤーに関する記事を参照してください。
上で指定した両方のモードで Holographic Remoting を使用するには、Holographic Remoting Sample プレーヤーを複製し、Visual Studio を使用してHoloLens 2に展開する必要があります。
Unity を使用して Holographic Remoting を行うために、PC で実行されているリモートアプリを構築する
メニュー バーで、編集>プロジェクト設定を選択します。
左側の列で、XRプラグイン管理を選択します。
[ユニバーサル Windows プラットフォーム設定] タブに表示されていることを確認します。
[OpenXR プラグイン] セクションで、[Microsoft HoloLens機能グループ] と [Holographic Remoting リモート アプリ機能グループ] を選択します。
[起動時に XR を初期化する] チェックボックスの選択を解除します。
リモート構成を設定し、XR の初期化をトリガーするコードを記述します。 アプリは、Mode 1のConnect関数を呼び出すか、Mode 2に対してListen関数を呼び出すことができます。 例を確認するには、Open XR Unity Mixed Reality サンプルをダウンロードし、RemotingSample プロジェクトで AppRemoting.cs スクリプトを表示します。
Mode 1のConnectモードでは、
RemotingConfiguration
を入力してMicrosoft.MixedReality.OpenXR.Remoting.AppRemoting.Connect
を呼び出します。 サンプル アプリでは、インスペクターでこれを公開し、テキスト フィールドから IP アドレスを入力する方法を示します。Connect
を呼び出すと、構成が設定され、XR が自動的に初期化されます。このため、コルーチンとして呼び出す必要があります。StartCoroutine(Remoting.AppRemoting.Connect(remotingConfiguration));
Mode 2の場合、Listenモードでは、
RemotingListenConfiguration
を入力してMicrosoft.MixedReality.OpenXR.Remoting.AppRemoting.Listen
を呼び出します。 このサンプルアプリでは、これを インスペクターで公開しています。 を呼び出すListen
と、構成が設定され、Holographic Remoting サンプルプレーヤーからの接続が待機されます。そのため、コルーチンとして呼び出す必要があります。StartCoroutine(Remoting.AppRemoting.Listen(remotingListenConfiguration));
実行中に、
AppRemoting.TryGetConnectionState
API を使用して現在の接続状態を取得し、オプションでAppRemoting.Disconnect()
を使用して XR を切断して初期化解除できます。 これは、同じアプリ セッション内で別のデバイスを切断して再接続するために使用できます。 RemotingSample アプリは、タップされた場合にリモート処理セッションを切断する、適用可能なキューブを提供します。
Holographic Remoting リモート アプリと Player アプリを上記のモードで実行する
モード 1: 接続モードで PC 上で Holographic Remoting リモート アプリを実行し、プレーヤーをリッスン モードで実行します。
HoloLens 2のストアからプレーヤーが既にインストールされている場合は、サンプル プレーヤー アプリをビルドして実行する手順 2 と 3 をスキップします。 代わりに、インストールされている Player を実行し、手順 #4 に進みます。
VS 2019 を使用して Holographic Remoting Sample Player アプリを開き、次のいずれかの操作を行います。
USB ケーブルを使用してHoloLens 2で実行するには:
- 次に示すように、ビルド オプションを構成します。
- プロジェクトの [プロパティ] ページを開き、[構成プロパティ] [デバッグ] > の順に移動します。
- [デバッガー] をクリック してドロップダウンを起動 し、[デバイス] を選択 します。
- [ コマンド ライン引数] フィールドに 、"-listen" を追加します。
Wifi を使用してHoloLens 2で実行するには:
- 次に示すように、ビルド オプションを構成します。
- プロジェクトの [プロパティ] ページを開き、[構成プロパティ] [デバッグ] > の順に移動します。
- [ デバッガー] をクリックしてドロップダウンを起動 し、[ リモート コンピューター] を選択します。
- [ コマンド ライン引数] フィールドに 、HoloLens の Wifi IP アドレスを追加します。
SamplePlayer ソリューションをHoloLens 2にデプロイするには、Visual Studio の再生ボタンを押します。 HAR サンプル プレーヤーがHoloLens 2で実行されていることを確認でき、"HoloLens 2の IP アドレスで接続を待機しています" と表示されます。
ホスト PC で実行されているリモート アプリで、上に表示されているHoloLens 2の IP アドレスを追加し、[接続] を選択します。
接続が確立されると、HoloLens 2で実行されているプレーヤーが "Receiving" を開始します。
Mode 2: Connect モードで、PC でリッスン Mode と HAR プレーヤーアプリのリモートアプリを実行します。
PC で実行されているリモートアプリの 2D UI 画面で、 LISTEN をクリックします。
プロジェクトの [プロパティ] ページを開き、[構成プロパティ] [デバッグ] > の順に移動します。
[デバッガー] をクリック してドロップダウンを起動 し、[デバイス] を選択 します。
[ コマンド ライン引数] フィールドに 、ホスト PC の IP アドレスを追加します。
SamplePlayer ソリューションをHoloLens 2にデプロイするには、Visual Studio ソリューションで [再生] ボタンをクリックします。 HOLOLENS 2で実行されている HAR サンプル プレーヤーが表示され、"コマンド ライン引数で指定された IP アドレスに接続しています" と表示されます。
接続が確立されると、HoloLens 2で実行されている Holographic Remoting Sample Player アプリが "Receiving" を開始します。
ヒント
最適な結果を得るには、アプリで が正しく設定されていることを確認します 。/focus point。 これにより、Holographic Remoting はシーンをワイヤレス接続の待機時間に合わせて最適に調整することができます。
以前の Holographic Remoting API からの移行
Holographic Remoting の詳細については、「Holographic Remoting の概要」を参照してください
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 |