【Unity 2018.2の新機能】デスクトップのUWPアプリからHolographic Remotingを呼び出す。(サンプルコード付き)
Unity 2018.2の新機能である、 「Windows 10PC用のUWPアプリからHolographic Remoting を呼び出す」 を試して、無事に動作させる事ができました。
個人的にずっと待っていた機能です。
PCの高速な処理能力と 64bitのライブラリを利用したHoloLensアプリケーションの開発が可能となりました。
けどUWPです。
元のUnityのブログはこちら blogs.unity3d.com
Holographic Remotingについてはこちら。 (古い記事ですが、この一年でそんなに変化無いです)
何ができるのか?
- PC上でアプリの実行・レンダリングを行い、その内容をHoloLensで表示します。
- 当然、HoloLensの動き・向きに追随して映像は変化します。
- これまでも、UnityEditorの機能としては存在していたのですが、主にデバッグ用途だったのですが、これがビルド済みアプリからも呼び出せるようになりました。
- 64bitビルドで動くので、アプリケーションはx86ではなく、64bit用として開発できます。(これが地味にうれしい)
- PCとHoloを連携させたアプリが作りやすくなりそう。
動作デモ動画と解説
PC上のUWPアプリとしてCubeが回転しているだけのサンプルアプリを動かします。 左上にIPアドレス入力欄とConnect/Disconnectのボタンがついています。
HoloLensではHolographic Remoting Playerを起動し、 PCアプリケーションにそのIPを入力して「Connect」を押すと、HoloLens上にCubeが回転する映像が表示されます。 「Disconnect」でHoloLensへの映像出力は停止します。
動いている様子を動画で撮影しました。
開発環境とサンプルコード
Unity Blogにあるように、Unity2018.2.b7を利用しました。
BuildSettingsに「Enable Mixed Reality Remoting」というcheckboxが追加されています。
そしてHoloLensで動くようなSceneを作成します。 今回はMRTKは使わず、
- Cameraの位置は(0,0,0)。背景黒・Near Clip 0.1
- 1.5メートル先に scale0.2のCubeを設置。Constant Forceで回転
という簡単なシーンを作成しました。
その後、空のGameObjectを作成し、以下のRemoteExample.csを作成してattachします。
で、上の図にあるようなUWP用のBuildSettingsでビルドしてVusialStudioのソリューションを生成します。
このコードはUnityのDocumentにあったコードを少しいじっただけです。
これを64bitアプリケーションとして「ローカルコンピューター」で実行しました。
ハマったこと
最初動かなくて、困ったのですが、 以下の対応をしていたら動くようになりました。 実際の原因がはっきりわかってないのが情けないですが、、、
PCにHoloLensのエミュレーターが入っていなかったのでインストールしました。
PlayerSettingsのCapabilitySettingsに全部チェックを入れた。ガバガバですみません。(どれが有効だったのか、今の所わかってません。)
動作の安定性は Unity Editor上のHolographic Emulationと同じくらいかな。
また、今までもそうでしたが、音声周りやカメラ周りの挙動は異なります。
Known Limitations Speech (PhraseRecognizer) isn’t currently supported via Holographic Remoting and instead intercepts speech from the Editor-hosted machine.
PhotoCapture can be performed during Holographic Simulation, but since the capture works via a local camera (such as a webcam), you won’t be able to retrieve a matrix with TryGetProjectionMatrix or TryGetCameraToWorldMatrix.
During Remoting, all audio on the hosted PC (not just that from the app) will redirect to the device. (Unity blogより引用)
ただ、今までのUnity Editor上でのRemoting はUWPではなく、Windows StandAloneのコードが動いていたのですが、UWPビルド後なので、当然UWPのコードが動きます。ここは違いがありますね。
終わりに
待ちに待った機能です。やったー
PCの高速GPU処理や64bitライブラリの恩恵を受けられるアプリケーションをいろいろ試してみたいと思います。