自分のプロジェクトでSpectator Viewをやる方法。

こんにちは、mtwandこと00a3afです。 最近HoloLens Meetup Vol.4に参加してSpectator Viewについてお話ししました。 緊張とか不安とか色々あったけど、とりあえずいうこと言えてよかった。

さて、そのSpectator Viewですが、前回に引き続き、今回はご自身のプロジェクトでSpectator Viewを動かす方法を書きます。 ぶっちゃけ事前準備(前回の記事)ができていたら難しいことは何もないです。

また、MicrosoftさんのAdding Spectator View Support to Your Unity App、そして前回も紹介いたしましたが、中村 薫@かおるん さんの記事を参考に実行しましたので、手順についてはこちらをご参考いただいた方が良いと思います。

機材を用意する

ないとできません。 最低限

  • 開発PC
  • HoloLens
  • カメラ
  • 諸々のコード類

がないとできません。

Calibrationを実行。

Calibrationプロジェクトを自分の環境に合わせ手直しし、実行します。 実行が完了すると User/Documents にキャリビュレーションデータが出力されるので、こちらを確保しておきます。 ちなみにですが、Calibration実行後に再度Calibrationを実行すると、画像データはバックアップされるのですが、 CalibrationData.txtは消されるので、うまくいったデータがあれば忘れる前に別の場所にコピーしておいた方が良いです。

Spectator Viewの実行に必要なデータをコピーする

  • 最新のHoloToolKitをインポート
  • ここ からHolographic Camera Rigをコピーし自分のプロジェクトに貼り付ける

スクリプトの手直し(直ってました)

本項の内容は最新版のスクリプトを使っている場合は無視してください。最新版ではすでに修正されている内容です

  • RemoteSpatialMappingSource.cs を修正
    • 53行目付近を SurfaceObject surface = CreateSurface(mesh, ”RemoteSpatialMapping”, transform); AddSurfaceObject(surface); のように修正

Prefabなどを配置

  • 先ほどインポートした Addons/HolographicCameraRig の中に SpectatorViewManager.prefab というPrefabがあるのでシーンに配置
  • SpectatorViewManagerのSpectator View IP(カメラに接続されるHoloLensのIPアドレス), Sharing Service IP(HoloLensなどが接続しに行くSharingService.exeが実行されているマシンのIPアドレス)を入力、Anchor(ImportExportManagerなどがアタッチされているオブジェクト), Sharingオブジェクトを指定(シーン上に配置されているアンカー、Sharingオブジェクトをドラッグアンドドロップでアタッチ)。
  • SV_***.cs , SceneManager.csをAnchorに, RemoteSpatialMappingをCustomSpatialMappingに配置(CustomSpatialMappingという名前にする必要があるかどうか、未検証です)

CopyDLL.cmd を実行

https://github.com/Microsoft/HoloLensCompanionKit/blob/master/SpectatorView/CopyDLL.cmd を実行 この時これを普通にダブルクリックしてもダメなので、 HoloLensCompanionKit/blob/master/SpectatorViewShift+右クリックコマンドウィンドウをここで開く を実行するか、管理者権限でコマンドプロンプト、もしくはPowerShellを起動し、 HoloLensCompanionKit/blob/master/SpectatorView まで移動。 CopyDLL.cmd /path/to/your/project/Assets のように、プロジェクトのAssetsフォルダをオプションに指定し実行。

動かす

  1. まず、プロジェクトをビルドし、HoloLensに配置
  2. SharingService.exe を実行
  3. HoloLens上でプロジェクトを実行
  4. Unity Editorを実行
  5. Unity Editor側のSpectator ViewメニューからCompositorを起動
  6. Compositor Window上にカメラの映像が表示されることを確認
  7. Spatial Mappingボタンを押す
  8. 接続が成功していればSpatial Mappingが実行される
  9. Spectator Viewを楽しむ
  10. うまくいかない場合は両側プログラムを停止し、2からやり直し

トラブルシューティング

ここ らへんも参考にしてもらいつつ

  • HoloLens, Cameraの動作状態を確認する
  • キャプチャボードの動作・出力解像度などを確認する
  • 各種ケーブルの接続状態を確認する
  • Sharingの実行状態を確認する
  • Calibrationの結果を見直す
    • ここ らへんを参考にしつつ、値が正常か確認

大切なこと

あきらめない気持ち

最後に

弊社ではSpectator Viewの実験、試走などのお手伝いを受け入れています。 Spectator Viewをしたいが設備・道具がない、HoloLensが複数台ない、などの方は @asagi_00a3af までご連絡ください。 プログラムの実装など含め、ご相談をお受けします。 (あんまり大規模なものや、公序良俗に反する内容・団体からの依頼など、場合によってはお受けきれない場合がありますので、ご了承ください。最初はあくまで相談ということで、宜しくお願い致します)