本日は最近コミュニティ内で話題となっていたRemotingSpectatorViewというプロジェクトを試していきます。
〇RemotingSpectatorViewとは?
RemotingSpectatorViewはUnity上でHoloLensの三人称視点映像を実現するプロジェクトでvbandiさんによって以下のGitHubで公開されています。
Facebook上のHoloLensコミュニティグループで話題となっており、筆者も試していきます。
〇導入
上記GitHubからプロジェクトをCloneします。
これはUnity2019.4.2で開発されていますが、筆者はこの環境を使用していないためこの環境を使用していないためここではUnity2020.1.10f1を使用しています。
Unity2020以降ではレガシーxRではなく[XR Plugin Management]が必要です。
[Package Manager]からインストールします。
BuildSettingsを[UWP]に変更します。
この際[XR Plugin Management]で次のようなエラーが発生してしまいました。
Library\PackageCache\com.unity.xr.management@3.2.17\Editor\XRGeneralBuildProcessor.cs(39,52): error CS0117: 'BuildPipeline' does not contain a definition for 'GetBuildTargetName'
Library\PackageCache\com.unity.xr.management@3.2.17\Editor\XRGeneralBuildProcessor.cs(86,52): error CS0117: 'BuildPipeline' does not contain a definition for 'GetBuildTargetName'
これは[XR Plugin Management]のバージョンとUnityのバージョンによるバグであるようです。 [XR Plugin Management]をダウングレードする必要があります。
〇XR Plugin Managementのダウングレード
①[PackageManager]ウィンドウから[Packages: In Project]に切り替えます。
②[See other versions]を選択します。
③使用できるバージョンが一覧で表示されるのでダウングレードを行います。今回は3.2.16に変更することでエラーを解消しました。
④[PlayerSettings]から[WindowsMixedReality]を有効にします。
〇HoloLensとのリモート接続
①HoloLens側で[Holographic Remoting]を起動します。
②Unity上部タブから[Window]→[XR]→[Windows XR Plugin Remoting]
③[Remote Machine]にHoloLens側で表示されているIPアドレスを入力します。
以上でリモート接続が完了します。
プロジェクトを開くとMRTKとTextMeshProなどの基本的なアセットと並んで[Remoting]というアセットがあります。
これがemotingSpectatorViewのコアのようです。
〇使用方法
①[RemotingSpectatorView]が導入されているプロジェクトでは上部ワールドタブに[Remoting Spectator View]のメニューが追加されています。
[Show Window]を選択することでウィンドウが表示されます。
この辺りは昨日勉強したUnityEditor拡張が使用されています。
Unityエディタ上で実行します。
ところが筆者環境の場合次のようにxRPluginManagement側でエラーが発生しています。
NotSupportedException: XRDevice is Obsolete. Instead, find the active XRDisplaySubsystem and check to see if it is running. UnityEngine.XR.XRDevice.get_isPresent () (at <25852553af2041d8bde087abbaa5dbdf>:0)
OpenXRプロジェクトで筆者環境でHoloGraphicRemoting関連でエラーが発生していたためレガシーXRで試すことにしました。
上記エラーは別で調べます。 UnityEditorで実行して[RemotingSpectatorView]ウィンドウから[Play]を押すことでWebカメラが実行されます。
[DistanceFromHead]の値にHoloLensからPCまでの距離を入力します。これによって第三者目線の表示が行えます。
OclusuQuestのMRCに似た機能で開発中などに非常に便利に使えそうです。今後も調査していきます。