夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

RemotingSpectatorViewを試す。

本日は最近コミュニティ内で話題となっていたRemotingSpectatorViewというプロジェクトを試していきます。

〇RemotingSpectatorViewとは?

RemotingSpectatorViewはUnity上でHoloLensの三人称視点映像を実現するプロジェクトでvbandiさんによって以下のGitHubで公開されています。

github.com

Facebook上のHoloLensコミュニティグループで話題となっており、筆者も試していきます。

〇導入

上記GitHubからプロジェクトをCloneします。

これはUnity2019.4.2で開発されていますが、筆者はこの環境を使用していないためこの環境を使用していないためここではUnity2020.1.10f1を使用しています。

Unity2020以降ではレガシーxRではなく[XR Plugin Management]が必要です。

[Package Manager]からインストールします。

f:id:Holomoto-Sumire:20210523134156j:plain

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]に切り替えます。

f:id:Holomoto-Sumire:20210523135738j:plain

②[See other versions]を選択します。

f:id:Holomoto-Sumire:20210523135943j:plain

③使用できるバージョンが一覧で表示されるのでダウングレードを行います。今回は3.2.16に変更することでエラーを解消しました。

f:id:Holomoto-Sumire:20210523140458j:plain

④[PlayerSettings]から[WindowsMixedReality]を有効にします。

f:id:Holomoto-Sumire:20210523141132j:plain

〇HoloLensとのリモート接続

①HoloLens側で[Holographic Remoting]を起動します。

②Unity上部タブから[Window]→[XR]→[Windows XR Plugin Remoting]

f:id:Holomoto-Sumire:20210523141403j:plain

③[Remote Machine]にHoloLens側で表示されているIPアドレスを入力します。

f:id:Holomoto-Sumire:20210523141618j:plain

以上でリモート接続が完了します。

プロジェクトを開くとMRTKとTextMeshProなどの基本的なアセットと並んで[Remoting]というアセットがあります。

f:id:Holomoto-Sumire:20210523132350j:plain

これがemotingSpectatorViewのコアのようです。

〇使用方法

①[RemotingSpectatorView]が導入されているプロジェクトでは上部ワールドタブに[Remoting Spectator View]のメニューが追加されています。

f:id:Holomoto-Sumire:20210523132748j:plain

[Show Window]を選択することでウィンドウが表示されます。

f:id:Holomoto-Sumire:20210523132850j:plain

この辺りは昨日勉強したUnityEditor拡張が使用されています。 

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

Unityエディタ上で実行します。

ところが筆者環境の場合次のようにxRPluginManagement側でエラーが発生しています。

f:id:Holomoto-Sumire:20210523143851j:plain

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カメラが実行されます。

f:id:Holomoto-Sumire:20210523151801j:plain

[DistanceFromHead]の値にHoloLensからPCまでの距離を入力します。これによって第三者目線の表示が行えます。

f:id:Holomoto-Sumire:20210523152926g:plain

OclusuQuestのMRCに似た機能で開発中などに非常に便利に使えそうです。今後も調査していきます。