LoginSignup
5
8

More than 5 years have passed since last update.

Hololens SpectatorViewをやってみた

Posted at

はじめに

HololensのSpectatorViewを試してみたところ、いろいろ引っかかったためメモ

SpectatorViewとは?

Microsoftが提供している。詳しくは以下。
https://docs.microsoft.com/en-us/windows/mixed-reality/spectator-view
https://github.com/Microsoft/MixedRealityCompanionKit/tree/master/SpectatorView

ざっくりいうと、Hololensの「カメラ機能」と「ホログラム作成機能」を別のデバイスに任せることで、高解像度の映像で遅延なくディスプレイに表示する機能。
※いつの間にか「SpectatorView (Preview)」なるものが増えている!?今度やってみよう

実際にやってみる

環境

  • Windows10
  • Unity 2017.2.0f3 (64-bit)
  • Microsoft Visual Studio Community 2017 Version 15.5.3

機材の準備

SpectatorViewをするには以下が必要

  • PC
  • 映像を出力できるカメラ
  • キャプチャボード
  • Hololensをがっちり支える冶具

映像を出力できるカメラ

以下を試してみた。

  • gopro hero3+
  • sony HDR-AS100V
  • N3200

※全部うまくいったけど、公式が推薦しているのを使うのが無難だと思う。

キャプチャボード

以下を試してみた

  • IO DATA GV-USB3/HD
  • Blackmagic Intensity Shuttle USB 3
  • Elgato HD 60S

※「Elgato」だけうまくいった

Hololensをがっちり支える冶具

公式にならって(Alternateの方)、Amazonでポチる。全部で4000円ぐらい

PCとHoloLensを開発者モードにしておく

cal_05.jpg

MixedRealityCompanionKitをクローンする

Caliblation

まずは、Calibrationを実施する(Hololensとカメラの位置関係のデータを取得する)
Reedmeの通り進めていく

必要なソフトウェアをダウンロード

  • OpenCV3.4.1をダウンロード

Elgatoを使う場合

  • Elgato HD 60Sのドライバ
  • これをクローン

チェックボードを印刷

以下のチェックボードを印刷し、クリアケースなどに入れる(しっかり平になればOK)
MixedRealityCompanionKit/SpectatorView/Calibration/CalibrationPatterns/2_66_grid_FULL.png

「dependencies.props」を編集

  • Calibration用のプロジェクトを開く
    MixedRealityCompanionKit/SpectatorView/Calibration/Calibration.sln
  • 以下の「OpenCV」と「Elgato」のパスを先ほどダウンロードした先にしておく
    MixedRealityCompanionKit/SpectatorView/dependencies.props cal_06.jpg

「stdafx.h」の変更

MixedRealityCompanionKit/SpectatorView/Calibration/Calibration/stdafx.h

  • HoloLensのカメラをPCから利用するためにデバイスポータルの設定を「HOLOLENS_USER」「HOLOLENS_PW」を自分のものに変更しておく

  • チェスボードの1つの”四角”のサイズ「CHESS_SQUARE_SIZE」を印刷したものにしておく(A3で印刷していればデフォルトで問題ないはず)
    チェスボードの”四角”の個数が「GRID_CELLS_X」と「GRID_CELLS_Y」に記載されているものと異なる場合は変更する

  • HoloLensをUSBで直接PCに接続していない場合は、「HOLOLENS_ADDRESS」をHoloLensのIPアドレスに変更しておく

「CompositorConstants.h」の変更

MixedRealityCompanionKit/SpectatorView/Compositor/SharedHeaders/CompositorConstants.h

  • カメラから取得する画像が「1080P」でない設定にしている場合は「FRAME_WIDTH」「FRAME_HEIGHT」を修正する

  • FrameProviderのタイプを設定する。
    「USE_ELGATO」のみ「TRUE」にして他を「FALSE」にする(Elgatoを使う場合)

カメラの画像出力設定

  • goproのHDMI出力サイズを1080にする
  • 念のため以下をつないで、Elgatoの「Game Capture HD」で確認
    • PC
    • Elgato HD 60S
    • gopro hero3+

映らない。。
cal_08.jpg

デバイスマネージャーで見たら、ドライバが入っていなかった。。
cal_09.jpg
ドライバをインストールしたら映った

「Calibration」実行する

早速怒られた
cal_10.jpg

CalibrationのプロパティでWindows SDKバージョンを変更する
cal_12.jpg

再度実行したが、PC上にgoproの映像が表示されるもののHoloLensのカメラが反応しない。。(HoloLensのカメラで撮影するたびに白く光るはず)
ブラウザでDevice Portal(127.0.0.1:10080)を開いてみたが接続できなかった(USB経由でなくIPだといけた)
Windows SDKの「Windows IP Over USB」が入っていないのが原因だった。
cal_17.jpg
「Windows IP Over USB」をインストールする
cal_18.jpg

再度実行し、チェックボードをいろいろ動かし(HoloLensのカメラはgoproほど広角ではないのでちゃんとおさまるように動かす)、「Enter」を押す
Calibrationが成功すると「ドキュメント/CalibrationFiles」配下に、gproの写真とHoloLensカメラの写真とCalibrationData.txtが保存される。

Conpositer

「CompositorDLL」と「UnityCompositorInterface」をビルドする

MixedRealityCompanionKit/SpectatorView/Compositor/Compositor.sln

「CopyDLL.cmd」をたたく

  • 「MixedRealityCompanionKit/SpectatorView/SpectatorViewSample/Assets/」配下にもろもろコピーされる
    cal_19.jpg

  • 「CalibrationData.txt」は手動でコピーする(前はコピーしてくれたような。。)

SpectatorViewPoseProvider

MixedRealityCompanionKit/SpectatorView/SpectatorViewPoseProvider/SpectatorViewPoseProvider.sln

  • ビルドして、HoloLensに展開する(前はSpectatorView用のHoloLensアプリと体験用HoloLensのアプリは一緒だったような。。)

SpectatorViewSample

  • 「MixedRealityCompanionKit/SpectatorView/SpectatorViewSample/Assets/test.unity」を開く
  • 「SharingToSVAdapter」の「Server IP」にPCのIPアドレス、「Spectator View IP」にHoloLensのIPアドレスを記載する
  • ビルドしようとしたらUWPを選択できない。。。

cal_20.jpg

Unity初回起動時のライセンス設定をしていないのが原因だった。
cal_21.jpg

  • HoloLens上で「SpectatorViewPoseProvider」を実行させる
  • test.unityの「Play」を実行する
  • test.unityの「Spectator View」タブの「Compositor」で確認する
  • できた!

参考

ありがとうございます。
https://www.naturalsoftware.jp/entry/2017/02/25/184758
http://2vr.jp/2017/07/01/setup-hololens-spectator-view/
http://mtholoblog.hatenablog.com/entry/2017/06/24/184722

他につまづいたこと

キャプチャボード「IO DATA GV-USB3/HD」がうまくいかなかった

公式は特に推奨していないIO DATAさんのものを初め使ってみたが「Calibration」時に1080ではなく、480×640しか出力されなかった。ドライバを古いものにしてみたりしたが改善されなかった。

キャプチャボード「Blackmagic Intensity Shuttle USB 3」がうまくいかなかった

BlackmagicのSDKをインストールしてみたが、カメラの映像を取得することができなかった。。。(引き続き調査)

「Calibration」の「OpenCVFrameProvider.h」のCAMERA_ID

ノートPC内蔵のカメラがCAMERA_ID=0となっていていつまでたってもgoproが認識されなかった。
デバイスマネージャーで内蔵カメラを無効にした

「Calibration」で「Enter」後に「100% Complete」後にエラー

どうしても「100% Complete」後にエラーになっていた。HoloLensかめらにチェックボードが一枚もおさまっていないのが原因だったっぽい

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8